All projects
/ projects / bhalobasha
Bhalobasha
In DevelopmentFull-Stack Application · July 2026 - Present
Bhalobasha (ভালোবাসা — 'good home' in Bangla) is a full-stack rental marketplace that removes brokers from the rental process in Bangladesh. Owners post listings in under 3 minutes from any browser. Seekers filter by tenant policy (bachelor/family/student), location hierarchy, rent range, and furnished status — and never visit a flat that would have rejected them. The platform also supports competitive bidding on high-demand listings, Cloudinary-backed photo uploads, and role-based dashboards for seekers, owners, and admins.
Stack
- NestJS
- Next.js 14
- PostgreSQL
- Prisma
- TypeScript
- TanStack Query
- Zustand
- Tailwind CSS
- Cloudinary
- Railway
- Vercel
Problems
- Bachelors wasting hours traveling to flats that would always reject them — solved by making tenant policy (Bachelor/Family/Student/Any) a required, filterable field on every listing.
- Owners still relying on hand-written paper ads and word-of-mouth — solved with a 3-step listing flow completable in under 3 minutes from any phone browser.
- Brokers adding cost and opacity between owners and renters — solved with direct contact via phone reveal and pre-filled WhatsApp deep-link after login.
- High-demand listings attracting 10+ unstructured WhatsApp messages — solved with a competitive bidding system where owners accept one bid and all others are auto-rejected.
- Stale listings breaking trust on classifieds platforms — solved with 30-day auto-expiry and one-tap renewal.
Architecture
- NestJS REST API (/api/v1) deployed on Railway with modular architecture — AuthModule, ListingsModule, BidsModule, FavoritesModule, LocationsModule, MediaModule.
- PostgreSQL database managed via Prisma with a full Bangladesh location hierarchy (Division → District → Thana → Area) seeded from custom JSON files — no external package dependency.
- Next.js 14 App Router frontend on Vercel with server components for SEO-critical listing pages and client components for interactive features.
- Auth via phone/email OTP with JWT stored in httpOnly cookies — middleware protects dashboard routes server-side before render, SessionProvider restores Zustand state client-side.
- Cloudinary for listing and profile photo storage with CDN delivery and auto-compression.
Key features
- Tenant policy filtering (Bachelor/Family/Student/Any) as a required enum — shown on every listing card, filterable from search.
- Competitive bidding system — owners set minimum bid and deadline; accepting one bid auto-rejects all others and marks the listing as filled in a single DB transaction.
- 10-second undo on bid withdrawal with reactivate support.
- 3-step guided listing creation with drag-and-drop photo upload (up to 8 photos) and map-based property pin using OpenStreetMap + Leaflet.
- Save / favorite listings with optimistic UI — heart icon on cards, saved listings dashboard page.
- Open Graph metadata per listing for rich WhatsApp and LinkedIn sharing previews.
- Demo login for recruiters — one-click access as Seeker, Owner, or Admin without OTP.
- Role-based dashboards: owners manage listings, bids, and photos; seekers track bids and saved listings; admins have full platform access.
- Bangladesh location hierarchy seeded from own JSON data files across 8 divisions, 64 districts, and major thanas and areas.