Two sides of one tenancy, two sets of tools
Private landlords and their tenants handle the same contract, the same payments and the same repair requests, yet they do it through email, messaging apps, spreadsheets and paper. Each side keeps its own version of the facts, and every question becomes a message thread.
Wohnster is SteinByte's answer: one platform where the landlord manages properties and tenancies and the tenant sees their own contract, documents and requests, both working on the same records. [TODO: add the specific market and audience you are targeting first.]
One backend, two portals, one login
Rather than two apps that sync, we built one Kotlin backend that owns the data model and exposes it to two Next.js portals through the same API. Roles come from Keycloak, so a person who is a landlord in one tenancy and a tenant in another signs in once.
- German first, English alongside: every text exists in both languages from the first commit, checked by a test that fails when a key is missing.
- A staging environment from the start, deployed automatically on every merge, so the product can be tried while it is being built.
- Pull requests, code review and CI as the only way into the main branch, for a team of three.
So far
Landlord portal
Dashboard, onboarding, properties and tenancies. [TODO: list the finished modules]
Tenant portal
Own contract, documents and requests, in the tenant's language. [TODO: list the finished modules]
Sign-in and roles
Keycloak with landlord and tenant roles, one account for both, role-based routing in the frontend.
Platform
Docker images for both services, a GitHub Actions pipeline, a staging server behind Cloudflare, mail testing with Mailpit.
In development
Wohnster runs on a staging environment and is not yet open to the public. [TODO: planned first release and how to get early access.] We publish updates here as the product moves.

