loaded.
Case Study · SaaS · Immobilienverwaltung · Next.js + Supabase

Eine Software, fünf Rollen: Immobilienverwaltung ohne Excel-Chaos

Otti One ist die All-in-One-Plattform für Schweizer Immobilienverwalter — als Multi-Tenant-SaaS von loaded entwickelt und betrieben.

3+1
Rollen: Admin, Verwaltung, Mieter — plus Token-Portal für Handwerker
API-First
Next.js-Frontend, entkoppeltes Python-Backend
Echtzeit
Eigener WebSocket-Layer für Chat & Notifications
Kurzfassung

Ottione (ottione.ch) ist eine Immobilienverwaltungs-Software für die Schweiz, entwickelt von loaded.ch: ein Next.js-Frontend über einem entkoppelten Python/FastAPI-Backend. Drei Login-Rollen (Admin, Verwaltung, Mieter) plus ein tokenbasiertes Handwerker-Portal ohne Account-Zwang, Echtzeit-Chat über einen eigenen WebSocket-Layer, Einzugs-Inspektionen, Nebenkosten-Abrechnung und FullCalendar-Terminplanung. Die Plattform läuft in Produktion und wird von loaded selbst weiterentwickelt — der Beleg, dass loaded SaaS nicht nur baut, sondern betreibt.

Ausgangslage

Das Problem hinter dem Projekt

Immobilienverwaltung in der Schweiz läuft vielerorts über Excel-Listen, E-Mail-Ketten und Ordnerstrukturen. Sobald mehrere Parteien beteiligt sind — Verwaltung, Eigentümerschaft, Mietparteien, Handwerker — bricht die Übersicht zusammen: Wer darf was sehen? Wo liegt das aktuelle Dokument? Wer hat wann was entschieden?

Die technische Kernfrage war deshalb keine Design-Frage, sondern eine Architektur-Frage: ein Berechtigungsmodell, das fünf unterschiedliche Rollen sauber trennt, ohne dass die Anwendung in fünf getrennte Systeme zerfällt — und das mandantenfähig, damit eine Instanz beliebig viele Verwaltungen bedienen kann.

Die Lösung

Was wir gebaut haben

Rollenmodell mit Token-Trick für Handwerker

Admin, Verwaltung und Mieter haben eigene Login-Bereiche. Handwerker brauchen keinen Account: Sie erhalten pro Arbeitsauftrag einen Einmal-Link mit Upload-Token und laden Fotos und Rechnungen direkt hoch — null Onboarding-Reibung für Externe, voller Audit-Trail für die Verwaltung.

Entkoppelte API-First-Architektur

17 Domain-Services (Liegenschaften, Mietverträge, Wartung, Nebenkosten, Inspektionen …) kapseln das Python-Backend hinter einer sauberen Service-Schicht — Frontend und Backend sind unabhängig deploybar und testbar.

Echtzeit-Chat & Notifications

Mieter-Verwaltungs-Kommunikation läuft über einen eigenen WebSocket-Client mit Exponential-Backoff-Reconnect — Nachrichten und Pendenzen erscheinen live, ohne Reload.

Verwaltungs-Werkzeuge, die den Alltag abbilden

Einzugs-Inspektionen mit Protokoll, Nebenkosten-Kategorien nach Schweizer Praxis, Task-Templates und FullCalendar-Terminplanung — gebaut entlang des realen Verwalterjahres, nicht als Feature-Bingo.

Tech-Stack: Next.jsFastAPIWebSocketsStripe
Die Architektur

Wie es wirklich gebaut ist

Ottione ist bewusst zweigeteilt: ein Next.js-14-Frontend (App Router) und ein eigenständiges Python/FastAPI-Backend, verbunden über eine REST-API mit JWT-Auth (Access/Refresh-Tokens, OTP-basierter Passwort-Reset). Das Frontend kennt das Backend nur über eine Service-Schicht aus 17 Domain-Modulen — von property über lease bis contractorInvoice. Dieser Schnitt erlaubt es, Backend-Logik (Abrechnungen, Berechtigungen, Mandantentrennung) unabhängig vom UI weiterzuentwickeln.

Die eleganteste Entscheidung ist die unscheinbarste: Handwerker sind keine Nutzer. Statt Externen einen Account aufzuzwingen, generiert jeder Arbeitsauftrag einen Upload-Token — der Handwerker öffnet einen Link, lädt Fotos und Rechnung hoch, fertig. Kein Passwort-Support, keine Karteileichen, trotzdem lückenlose Zuordnung zum Auftrag.

Echtzeit läuft nicht über eine Fertiglösung, sondern über einen eigenen WebSocket-Client mit Exponential-Backoff: Chat zwischen Mietern und Verwaltung, Benachrichtigungen und Pendenzen aktualisieren sich live. Abo-Verwaltung (Starter/Professional, monatlich/jährlich) ist über Stripe ans Backend angebunden; der Zugriff wird am Subscription-Status gegatet.

Das visuelle System wurde vor der Implementierung in einem separaten Design-Repository prototypisiert («The Institutional Standard») — erst als Konzept und Tokens standen, floss es in die App. Design als eigener Engineering-Schritt, nicht als Anstrich am Ende.

Stack im Detail
Frontend
Next.js 14.2 (App Router), React 18.3
State/Forms
Zustand 5, react-hook-form + Zod
Backend
Python / FastAPI (REST, JWT-Auth)
Echtzeit
Eigener WebSocket-Layer mit Backoff
Kalender
FullCalendar (Day/Time-Grid)
Billing
Stripe (Starter/Professional)
PDF
pdfjs / react-pdf Viewer
Design-Rationale

Warum es so aussieht

Das Design-Konzept heisst intern «The Institutional Standard»: Deep Teal (#0F4C5C) mit Kupfer-Akzenten (#B47C48) auf Cream-White, Inter für Text, JetBrains Mono für Zahlen, harte 12-Spalten-Raster, dicke Rahmen, fast keine Rundungen. Die Referenz ist bewusst nicht «Startup», sondern Schweizer Infrastruktur — Software, der eine Verwaltung Mietzinse und Verträge anvertraut, muss nach Behörden-Solidität aussehen, nicht nach Beta.

Versalien-Headlines mit engem Tracking und die «Verified Swiss Standard»-Badge-Sprache ziehen das durch: Vertrauen als Gestaltungsprinzip. Das komplette System wurde in einem eigenen Design-Repo entwickelt und getestet, bevor die erste App-Seite gebaut wurde.

Was wir daraus gelernt haben

Das Rollenmodell war die eigentliche Produktentscheidung — wir haben es vor dem ersten Screen entworfen. Bei Multi-Rollen-SaaS gilt: Wer Berechtigungen nachträglich einbaut, baut zweimal. Diese Erfahrung fliesst heute in jedes Plattform-Projekt von loaded ein.

FAQ

Fragen zu diesem Projekt

Mit welchem Stack ist Ottione gebaut?
Next.js 14 (App Router) als Frontend über einem entkoppelten Python/FastAPI-Backend mit JWT-Auth, eigener WebSocket-Layer für Echtzeit-Chat, Stripe fürs Abo-Billing, FullCalendar für Terminplanung. Die API-First-Trennung ist bewusst: Backend-Logik und UI entwickeln sich unabhängig. Details zu vergleichbaren Projekten unter /leistungen/saas-entwicklung/.
Was kostet eine vergleichbare Multi-Rollen-Plattform?
SaaS-Plattformen mit Rollenmodell und Dashboards starten bei loaded.ch ab CHF 29'000. Der Umfang hängt vor allem an der Zahl der Rollen und Integrationen — ein MVP mit zwei Rollen ist deutlich günstiger als der Vollausbau. Transparente Einordnung unter /preise/.
Warum ist ein eigenes Produkt die beste Referenz?
Weil loaded Ottione nicht nur gebaut hat, sondern betreibt: Uptime, Weiterentwicklung, Betriebskosten. Agenturen, die nur für Kunden bauen, lernen diese Seite nie kennen. Wir essen, was wir verkaufen.

Passende Leistung zu diesem Projekt: SaaS-Entwicklung

Kostenloses Strategiegespräch buchen.

30 Minuten — unverbindlich, kein Verkaufsgespräch. Wir analysieren Ihre Situation und zeigen, was möglich ist.

MoDiMiDoFrSaSo
Verfügbare Zeiten werden geladen...