Bikalpo To-Let

A rental marketplace inside Bikalpo, an everyday-products platform for Bangladesh. I led the To-Let module, from the owner's property registration to the tenant's monthly rent record.

Type
Rental marketplace module
Company
AlgoVerse LTD
Role
Full-stack developer, To-Let module lead
Stack
Next.js, TypeScript, oRPC, PostgreSQL, Drizzle ORM, Better Auth, TanStack Query, Tailwind CSS, Leaflet, Turborepo
Visit bikalpo.com/to-let
Bikalpo To-Let landing page with rental types on the left and a search box over a photo of Dhaka

The brief

Bikalpo is a marketplace for everyday products, sellers and stores. The client wanted a To-Let section where owners list flats, rooms, shops and offices, and tenants search, book and keep track of rent.

I led this module inside a shared team codebase and built most of what is live now, across the web app, the API and the database.

What I built

  • The public side: a landing page and listings with search by area, property or listing ID, eleven rental types and a map.
  • The owner side: a step-by-step property registration with phone verification, units, photos and video, editing, and a list of the owner's properties and posts.
  • A printable QR poster for every property that opens its listing when scanned.
  • Saved searches that alert tenants when a matching listing appears.
  • Bookings, rental contracts, leaving and comments, and a monthly rent record for each contract.
  • Admin screens for units, banners and platform statistics, plus the API and database work behind all of it.

Key decisions

Saved searches that cannot overfill

Each tenant has a limit on saved searches. Two requests at the same moment could both take the last slot, so saving runs inside a database transaction with a per-user lock.

Rent is a record, not a payment gateway

Tenants pay owners outside the platform. A month's rent is marked paid only when the tenant enters the code the owner shares, and it can only be marked paid once.

A print-ready poster built in the browser

The poster is drawn in the browser and exported as an A4 PDF at print resolution. The PDF library loads only when someone actually downloads a poster.

One search behind every list

The landing page and the all-listings page use the same search, so their counts and results always match.

Next case studyHaider Ahmed Khan