Intro Section:
After 15 years in software development and test automation, I decided to build something of my own — a real estate (Immobilien) platform tailored for the German market.
The idea was to combine what I know best: robust backend architecture, modern TypeScript frontends, and secure authentication — all designed from the ground up for monetization.
This article walks through the architectural decisions, technical challenges, and hard-earned lessons that shaped the platform.
⸻
🧱 Why Microservices?
I started with one clear goal: keep things clean and scalable. The platform includes:
• 🏘️ Multiple property types (house, apartment, garden…)
• 📦 Listings for rent and purchase
• 📸 File uploads for property photos
• 🧭 Address-to-Geo translation (lat/lng)
• 🔐 Secure login with role-based access
So I split it into microservices:
• property-service: manages property-related data
• auth-service: authentication via Keycloak
• geo-service: converts addresses into coordinates
• upload-service: handles image/file storage in PostgreSQL
• gateway-service: central API routing via Spring Cloud Gateway
⸻
⚙️ Key Technical Choices
UUIDs for IDs:
Avoided collisions and made frontend caching simpler.
Database Design:
Separate tables for property types (Apartment, House, etc.) and for listing types (Rent, Buy) for performance.
File Uploads in PostgreSQL:
No S3 — I stored images using bytea in PostgreSQL. It’s fast and GDPR-friendly for MVP stage.
Keycloak Auth:
It powers:
• Login/Signup
• RBAC (Admin, Agent, User)
• JWT-secured APIs
DevOps with ECS + Terraform:
Everything runs in Docker containers on ECS.
Infrastructure is built using Terraform (VPCs, services, secrets).
⸻
🖼️ Frontend Stack
• Next.js + TypeScript
• Tailwind CSS
• Geoapify for address autocomplete
• Access tokens from Keycloak for secure API use
⸻
💡 Lessons Learned
• Don’t overgeneralize — real estate data is domain-specific
• Start with a Gateway service — saves major refactoring later
• Separate out audit/analytics early
• Keycloak is great but painful to customize
⸻
🚀 What’s Next?
• 💳 Integrate Stripe for paid listings
• 🔔 Notify users of search matches
• 📊 Add analytics microservice
• 🗺️ Improve map-based UX
⸻
✌ Final Thoughts
If you’re considering building your own SaaS — go for it.
Start small, think in services, and build around real use cases.
I’m not just building a side project. I’m building a real app.
You can too.
⸻
Need Help?
Want to chat tech, design, or growth?
Drop a comment — let’s connect!
Top comments (0)