Back to Projects
Full-Stack EngineeringProduct ManagementProject ManagementReal EstateNigeria2026

A Property Platform Built to Turn Interest Into a Conversation

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.

Project Details
ClientBrown Top Limited
My RoleSolo Full-Stack Engineer · Product Manager · Project Manager
IndustryReal Estate · Property Discovery
LocationNigeria
Year2026
My contribution

How I contributed across engineering, product, and delivery.

Engineering focus

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.

Product direction

Product

Defined product scope, user roles, and information architecture in an owner-approved PRD before writing any code.

Project delivery

Delivery

Ran delivery through a milestone-based implementation plan and a CI pipeline enforcing quality and security gates.

Brown Top Limited homepage introducing property discovery for sale, lease, and rental listings in Apo Resettlement, Abuja
The Challenge

Property Discovery Needed to Feel Direct, Not Like a Generic Listings Template

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.

01

Clients Needed to Act Without Creating an Account

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.

02

The Real Sales Process Is a Conversation and an Inspection

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.

03

One Administrator Needed Real Security Without Real Overhead

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.

The Solution

What I Scoped, Architected, and Built

01

Product and Technical Foundation Before Any Code

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.

02

One Full-Stack Deployable on Cloudflare Workers

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.

03

Real-Time Chat Without Requiring an Account

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.

04

Security Sized for One Administrator, Not a Team

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.

05

Quality and Secrets Enforced on Every Push

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.

What Was Delivered

Everything Delivered for Brown Top Limited

Public property catalogue with search and filtering by sale, lease, or rental
Property detail pages with complete, verified listing information
Real-time, Durable Object-backed chat between clients and the administrator
Inspection request flow with confirmation or an administrator-proposed alternative
Tiered paid Inspection Cards (Bronze, Silver, Gold, Royal) explained on a dedicated page
Guest-token identity for anonymous chat and booking, with no client account required
Guest-data export route for handling client privacy requests
Secure single-administrator dashboard for properties, messages, inspections, security, and health
Cloudflare Access protection on every administrator route
Cloudflare Turnstile protection on public chat and inspection endpoints
Transactional booking and missed-chat emails via Mailgun with signed webhook verification
Property media delivery through Cloudflare R2 and Cloudflare Images
robots.txt and XML sitemap routes for search engine discovery
CI pipeline with lint, typecheck, unit and E2E tests, dependency audit, and gitleaks secret scanning
The Tech Stack

Technology Behind the Brown Top Limited Online Presence

CategoryTechnology
FrontendReact Router 8 (framework mode, SSR) · React 19 · TypeScript · Tailwind CSS 4
PlatformCloudflare Workers · D1 (Drizzle ORM) · R2 · Cloudflare Images
Real-TimeDurable Objects chat hub · WebSockets
Auth & SecurityCloudflare Access · Cloudflare Turnstile · Signed guest tokens
EmailMailgun · Signed webhook verification
ValidationZod · drizzle-zod
TestingVitest · Playwright · @axe-core/playwright
CI/CDGitHub Actions · gitleaks secret scanning · dependency audit
The Outcome

What I’m Proud of From This Build

One Codebase Runs the Full Client and Admin Experience

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.

Real-Time Conversation Replaces a Cold Contact Form

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 Product Was Governed Before It Was Built

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.

Outcomes at a Glance
Full-stack platform live in production on Cloudflare Workers Achieved
Real-time chat and inspection booking shipped end to end Achieved
Single-administrator dashboard secured with Cloudflare Access Achieved
Guest-token identity flow with no client account required Achieved
CI pipeline enforcing tests, lint, and secret scanning on every push Achieved
Property catalogue live and ready for administrator listing onboarding Achieved
The Solution in Action

A Look at What Was Delivered for Brown Top Limited

Properties: Search & Filter Catalogue
Brown Top Limited properties page with search and filtering by sale, lease, and rental type in Apo Resettlement
About: Straightforward Property Help
Brown Top Limited About page explaining straightforward property help in Apo Resettlement, Abuja
Inspection Cards: Paid Access Tiers
Brown Top Limited Inspection Cards page presenting tiered paid access for property inspections
Contact: General Enquiries
Brown Top Limited Contact page for general property enquiries and live chat
Mobile: Responsive Property Search
Brown Top Limited mobile properties experience with responsive search and filtering
More Work

Other Projects I've Shipped

MatataBrown

A complete digital platform for a Nigerian eye health nonprofit, including programmes, donations, volunteering, stories, secure forms, and SEO content.

Read Case Study

DG Luxe Co.

A responsive premium braiding hair catalogue with product selection, multi-item ordering, WhatsApp conversion paths, and search engine foundations.

Read Case Study

Want Me on Your Next Project?

If you need someone who can manage the build, own the product decisions, and write content that actually gets found, let's talk.

Start the Conversation Free first consultation · 24-hour response · No obligation