Property Developer Website & CMS (Bangla/English)
A bilingual website and admin CMS for a new Dhaka real-estate developer — projects, a joint-venture section for landowners and eleven free property tools.
- Role
- Sole developer — research, design, build, tests
- Team
- Solo, AI-assisted
- Timeline
- Oct 2026 – Ongoing
- Organisation
- Property developer, Dhaka (client)
- Code
- Proprietary (employer)
- Reading time
- 5 min
One Express 5 process with built-in SQLite serves a React 19 site and a full CMS. Every page works in English and Bangla, link previews are rendered on the server, and a registration-cost estimator is built on researched, sourced FY2026-27 rates.
Overview
A new Dhaka property developer needed a professional presence in two languages: its projects, its services, a way for landowners to propose joint ventures — and reasons for buyers to come back. The site pairs that with an admin CMS the client’s own staff can run.
The problem
- Buyers and landowners read Bangla and English; numbers, digits and forms had to work in both.
- Most visitors arrive through Facebook and WhatsApp link previews, which see nothing on a script-only site.
- Registration and transfer costs in Bangladesh are spread across gazettes and change with every budget.
- The client needed to review the site before any hosting or domain existed.
Context & constraints
The firm was brand new, with no real projects published yet. The site therefore ships with clearly labelled sample projects that disappear with one setting, and anything unverified stays in draft.
Approach
- One process — Express 5 serves the API, media and the site on one port, with a single SQLite file using write-ahead logging and online backups.
- One content model — seven content types declared once drive server validation, the admin forms and tracking of where each image is used.
- Server-rendered previews — titles, Open Graph, canonical and hreflang tags, structured data and the real HTTP status are written into each page before the app loads.
- Bilingual throughout — English and Bangla are edited side by side with missing translations flagged; Bengali digits, lakh/crore grouping and Bengali-digit input are handled everywhere.
- Tools — eleven calculators and guides, including a registration-cost estimator split between buyer, seller and developer, with every rate sourced, dated and editable by admins.
- CMS — drafts, revisions with restore, a media library that knows where each file is used, an enquiry inbox with notes and CSV export, three roles and an activity log.
Key capabilities
- Projects with filters, comparison of up to three, galleries and maps
- Joint-venture section with a two-step landowner enquiry
- 11 property tools, including EMI, affordability and registration-cost calculators
- Full English/Bangla content with missing-translation flags
- Server-rendered link previews, structured data and sitemaps
- Admin CMS: drafts, revisions, media library, enquiry inbox, roles
- Image pipeline: type checked by content, metadata stripped, responsive WebP sizes
- Spam protection without CAPTCHAs: timing token, honeypot, idempotency and rate limits
Architecture
Clients
Express 5
Shared model
Data
A single Node process: the API, the media pipeline and a server-rendered page shell over a React app, backed by one SQLite file. Select a component to trace its connections.
Key decisions
ADR-01One process, one file
- Context
- A small client with nothing to administer, reviewed through a temporary link.
- Decision
- Express 5 serves everything on one port from one SQLite file, using Node’s built-in SQLite and native TypeScript — no build step for the server.
- Trade-offs
- Single-instance only, with in-memory rate limits — the right size for a company website.
ADR-02Server-rendered metadata over a client-side app
- Context
- Facebook and WhatsApp previews are the main channel, and link crawlers don’t run JavaScript.
- Decision
- The server writes metadata, structured data, hreflang and the real status code into each page; the content renders on the client.
- Trade-offs
- Rich previews and correct SEO without an SSR framework; page text needs JavaScript, with a fallback for those without it.
ADR-03Locked-down review links
- Context
- The client had to review the site from a public temporary URL before any hosting existed.
- Decision
- The server binds to loopback and treats tunnelled requests as remote: the admin answers them with 403 unless explicitly enabled, initial passwords are refused remotely and everything is marked noindex.
- Trade-offs
- Remote admin review takes three deliberate steps.
Challenges
Bengali numbers everywhere
Problem. Bangla pages need Bengali digits and lakh/crore grouping, users type Bengali digits into calculators, and some fonts render those digits badly.
Solution. Locale-aware formatting helpers, digit conversion before parsing, a Bengali font first in every font stack, and end-to-end tests that type Bengali digits and check the results in both scripts.
Legal rates from scattered sources
Problem. Registration and transfer costs come from gazettes and change with each budget.
Solution. A research reference tags every rate as confirmed, reported or still to verify, cross-checked against the 2026 regulatory order and the registration fee table; uncertain lines ship flagged, dated and admin-editable, and worked examples became unit tests.
Honest content for a brand-new firm
Problem. There were no real projects to show yet.
Solution. Clearly labelled samples, excluded from the sitemap and search, that vanish with one setting — and drafts for anything the client hasn’t confirmed.
Quality & delivery
Testing
- 46 automated tests: 25 for the calculators (including the worked registration examples) and 21 API tests covering drafts, 404s, enquiry validation, spam checks, CSRF, the review-link lock-down, login throttling, the content lifecycle, disguised uploads and role masking.
- End-to-end script: 30 routes in both languages across six viewports from 360 to 1920 px — 160 page loads, each checked for status, overflow, a single h1, the page language, alt text, accessible names and console errors — then user and admin flows.
- Strict type-checking; the homepage loads about 146 KB of compressed JavaScript.
Deployment
Delivered for review in October 2026 through a temporary, locked-down tunnel. Launch waits on the client’s domain, real projects and team details, and a legal review of the policies.
Outcome
- Property tools
- 11
- Calculators, checklist, glossary, compare
- Automated tests
- 46
- Calculators and API
- Page loads per end-to-end run
- 160
- 30 routes × 2 languages, 6 viewports
- Languages, edited side by side
- 2
- English and Bangla
The site and CMS were delivered for the client’s review in October 2026. It goes live once the client supplies a domain, its real projects and team, and a legal review of the policies.
Lessons
- For a business that lives on social media, link previews are the homepage.
- Legal numbers need a source and a date, not just a value.
Building something similar?
Tell me what you’re working on — I reply to every serious message.
Related work
Sangsar — Household Finance PWA
Log any money movement in about ten seconds in either language, then see the month at a glance. A repository layer swaps IndexedDB for Firestore, offline writes sync safely, and 760 unit tests plus 11 end-to-end flows keep it honest.
- TypeScript
- React
- Tailwind CSS
- Vite
- PWA & service workers
- Zustand
- +4
This Site — Portfolio, Toolkit & CMS
Next.js 16 with React Server Components, statically prerendered and revalidated on publish. One Zod schema per content type drives validation, types and the generated admin forms.
- TypeScript
- React
- Next.js
- Tailwind CSS
- Node.js
- Vitest
- +2