Engineering
Solo-built the full-stack platform — public site, admin dashboard, real-time chat, and inspection booking — on Cloudflare Workers with D1, R2, and Durable Objects.
Brown Top Limited needed clients to move from browsing a listing to a real conversation, without an account getting in the way.
Brown Top Limited is a property discovery platform for sale, lease, and rental listings in Apo Resettlement, Abuja. I owned the product from first principles through production deployment: I wrote the PRD, technical specification, design brief, and milestone-based implementation plan, then solo-built the entire system — a public catalogue with search and filtering, a real-time chat between clients and the administrator, an inspection request and confirmation workflow, and a secure single-administrator dashboard — as a full-stack TypeScript application on Cloudflare Workers.
Solo-built the full-stack platform — public site, admin dashboard, real-time chat, and inspection booking — on Cloudflare Workers with D1, R2, and Durable Objects.
Defined product scope, user roles, and information architecture in an owner-approved PRD before writing any code.
Ran delivery through a milestone-based implementation plan and a CI pipeline enforcing quality and security gates.
Brown Top Limited needed a digital catalogue that fit how property actually gets sold in Apo Resettlement: a direct conversation and a confirmed inspection, not an account-heavy CRM or a static brochure site.
Prospective buyers and tenants browsing a property site want to look, ask a question, and move on — not register for an account before they've decided the listing is worth their time. Any friction at that stage loses the enquiry before it starts.
The product had to let a completely anonymous visitor browse the catalogue, start a conversation, and request an inspection, while the business still needed a reliable way to identify and follow up with that same visitor later.
A property listing page answers the first questions, but the decision that matters happens in conversation — about price flexibility, timelines, and what the client can actually go see. A generic contact form loses that context the moment it's submitted.
The platform needed chat and inspection requests to stay tied to the specific property being discussed, and it needed to give the client a clear outcome: a confirmed inspection time, or a proposed alternative, not silence.
Brown Top Limited runs on a single internal administrator — there was no budget or appetite for a multi-role permissions system or a dedicated ops team. But the dashboard still touches client conversations, inspection requests, and property data, so it had to be genuinely secure.
That meant authentication, bot protection, and rate limiting strong enough for a real business, wrapped in a dashboard simple enough for one non-technical operator to run daily without friction.
Before writing a line of application code, I authored the product requirements document, the technical specification, the design brief, and a milestone-based implementation plan — each one reviewed and approved as the canonical source of truth for scope and architecture.
That governance-first approach meant every later decision — what got built, in what order, and to what standard of done — traced back to an agreed document instead of shifting scope mid-build.
The platform is a single TypeScript codebase built with React Router in framework mode (SSR), deployed as a Cloudflare Worker. Cloudflare D1, accessed through Drizzle ORM, holds structured property, conversation, and inspection data, while Cloudflare R2 and Images handle property media delivery.
Public routes cover the home, properties catalogue, property detail, inspection cards, about, contact, and WhatsApp groups pages; a separate protected route tree serves the administrator's properties, messages, inspections, security, and health views — all from the same deployment.
I built a Durable Object-backed chat hub so clients and the administrator can message in real time over WebSockets, with each conversation tied to the property context it started from. A signed guest token identifies an anonymous visitor across their chat and inspection requests without ever asking them to register.
The inspection workflow lets a client propose a date and receive either a confirmation or an administrator-proposed alternative, with the full transition set — confirm, reschedule, decline, cancel, complete, no-show — handled from the admin dashboard.
The administrator surface sits behind Cloudflare Access, so authentication is handled at the edge rather than inside the application. Cloudflare Turnstile protects the public write endpoints — chat creation and inspection requests — against bots, and a dedicated guest-data export route gives Brown Top Limited a clean way to honour privacy requests from anonymous clients.
Transactional booking-confirmation and missed-chat emails go out through Mailgun from a verified sending subdomain, with signed webhook verification confirming delivery status back into the platform.
I set up a GitHub Actions CI pipeline that runs formatting, linting, type-checking, Vitest unit tests, the production build, and a dependency audit on every push and pull request, alongside a gitleaks secret scan so no credential ever lands in the repository.
End-to-end coverage comes from Playwright, including accessibility checks via @axe-core/playwright and full desktop and mobile journeys, with Lighthouse used to keep real-world performance in check ahead of launch.
The public site and the protected administrator dashboard ship from a single React Router application on Cloudflare Workers, backed by D1, R2, and a Durable Object chat hub. There's no separate backend service to deploy, version, or keep in sync — one Worker runs the entire operation.
That matters for a business run by a single administrator: fewer moving parts to operate means fewer ways for the platform to break in production.
Instead of a generic enquiry form that loses context the moment it's submitted, a client can open a live chat directly from a property page and get a real-time reply from the administrator, with a signed guest token carrying their identity across the conversation and any inspection request — no account required.
The inspection workflow closes the loop: a proposed date gets a confirmation or an alternative, not silence, and every transition through the booking lifecycle is handled from the dashboard.
The PRD, technical specification, design brief, and implementation plan I wrote up front meant scope, architecture, and milestones were agreed before implementation started — and stayed the reference point the whole build was checked against.
That discipline shows up in the CI pipeline too: every push runs lint, typecheck, tests, a production build, a dependency audit, and a secret scan, so quality and security gates are enforced automatically rather than relying on memory.






A complete digital platform for a Nigerian eye health nonprofit, including programmes, donations, volunteering, stories, secure forms, and SEO content.
Read Case StudyA responsive premium braiding hair catalogue with product selection, multi-item ordering, WhatsApp conversion paths, and search engine foundations.
Read Case StudyIf you need someone who can manage the build, own the product decisions, and write content that actually gets found, let's talk.