app/(site)/work/wohnflow/page.tsxln 001
← WORK / SPECIMEN ARCHIVE
WohnFlow
All-in-one property management SaaS for German landlords
NestJSNext.jsReact NativeExpoTypeScriptPostgreSQL PrismaCloudinary Tailwind CSSNode.js2026SHIPPED
THE PROBLEM

German landlords managing 40+ properties drown in WhatsApp messages, Excel sheets, and scattered emails. No single tool covers the full rental lifecycle — tenant onboarding, identity verification, maintenance tracking, and rent collection — built specifically for the German rental market with GDPR compliance.

KEY FEATURES
  • 01Tenant onboarding via invite link
  • 02Identity verification (Ausweis, Schufa, income proof upload)
  • 03Property & unit management
  • 04Maintenance tickets with in-app chat & photo uploads
  • 05Automated 3-stage rent dunning system
  • 06Document management with tenant-scoped visibility
  • 07Appointment scheduling within tickets
  • 08Landlord visit notifications
  • 09Mobile app for Android & iOS (React Native / Expo)
  • 10Multi-channel notifications (email + web push + mobile push)
CHALLENGES

Building GDPR-compliant infrastructure for the German market required EU-only data storage, AES-256 document encryption, and proper AVV/DPA agreements. Designing a tenant verification flow flexible enough for students (Schufa and income proof are optional) while still giving landlords a clear audit trail was a key UX challenge. The notification system required a queue-based architecture with 3-retry logic to reliably deliver across email, web push, and Expo mobile push without losing events on server restart. A 3-stage automated dunning system had to align with German rental law while remaining configurable per tenant.

ARCHITECTURE

NestJS 11 REST API backed by PostgreSQL (NeonDB serverless) via Prisma 7 ORM. Next.js 16 App Router frontend with TypeScript strict mode. React Native + Expo managed workflow for Android and iOS. Cloudinary handles all file storage (ticket photos, chat images, tenant documents) via private signed URLs with role-scoped access — landlord-only vs. shared-with-tenant. Notifications flow through a NotificationQueue table processed by a cron job every minute with atomic locking and retry logic. Auth uses JWT with refresh token rotation and bcrypt 12 rounds. Three scheduled cron jobs handle rent charge generation (25th of each month), overdue status updates (daily 08:00), and dunning reminders (daily 10:00).

IMPACT · RESULTS
01Full rental lifecycle covered in one platform
02Android + iOS apps ready for app store submission
033-stage automated dunning eliminates manual rent follow-up
04€99/month recurring SaaS revenue model