This website — the Chimbuk platform
This site: a hand-built Next.js 16 + Tailwind design system with a Firebase CMS pipeline planned for the backend phase.
The product itself, on every device
studio rendersFrames of the live product rendered in the studio pipeline — the site itself is the demo: open anything, it is this codebase running.
The build
We practice on ourselves first. The content layer is typed and adapter-based so the same UI will swap from local data to Firestore without a rebuild; the admin that manages it will be the exact tooling we sell to clients.
What we handled
- Design system built from scratch for a new identity — no template
- Every page: own metadata, canonical, OG cards, JSON-LD
- Offline-first PWA shell with a network-aware strategy
- Accessibility and motion discipline checked at build time
Every agency claims a flagship; ours is the page you are reading. The previous chimbuk.com was a static brochure from a past era of the business — the rebuild replaced it with a typed content platform: 75 statically generated pages, one client JS island budget, an honesty-scored content layer, and an ISR architecture where a Firestore admin plugs in without a rebuild. This is the case study we can be judged on, with our own address bar as the exhibit.
Why rebuild on ourselves first
The old site had the failure mode we sell against: generic brochure copy, no data layer, no way for the owner to edit anything, and SEO left to whatever the template shipped with. Rebuilding it was both dogfooding and proof — if the “typed data → static page → per-page schema” pattern cannot carry our own story, we have no business pitching it to anyone else.
There is also a trust calculation. A client evaluating a platform rebuild can inspect the thing itself: open any page, watch the single script chunk load, view the JSON-LD, run Lighthouse, resize to 320px. The marketing is the product demo, which is the only kind of marketing we want to make.
A content layer before a content policy
Everything rendered here comes from typed sources — services, projects, technologies, concepts, FAQ — behind one accessor boundary. Pages never import raw data; they go through the content contract, which is where filtering (published + owner-approved) and the future Firestore adapter hook in. Swapping the source changes one file, not forty pages.
The typing carries a policy: a project entry physically has fields for proof status and case-study state, so the UI can render “verified ledger” versus “Concept Lab” honestly. Fake states are not possible to express, which is the point — we design databases the way we want businesses to have to tell the truth.
Static where it counts, animated where it sells
The whole site generates at build (75 pages in ~2 seconds) and revalidates hourly; there is no server render path to fall over. Motion is CSS-first — scroll reveals, the auto-advancing screenshot carousels on product pages, hover states — with exactly the client islands that need to exist: header dropdowns, ⌘K search, the assistant dock, the gallery, the form. Reveal-on-scroll uses one shared IntersectionObserver; reduced-motion users get the same content with none of the movement.
Theming is token-level: the same site renders in dark and light through a single attribute and a pre-paint script, and the print stylesheet is real. Device mockups — the phone and tablet frames on the Concept Lab — are painted with CSS, not images: no alt-text lies about screenshots, no image budget spent on chrome.
The SEO program, not the SEO plugin
Every page owns its metadata: title sized to the SERP, one canonical, per-page OG cards generated on demand, JSON-LD matched to content type (Service, Article, FAQPage, MobileApplication with screenshots, Breadcrumb). The sitemap and robots generate from the same typed content as the pages, so nothing indexable can drift unlisted. Structured data even includes the Google Play listings themselves — app icon, screenshots, install URL — tying the store presence to this domain.
The long tail is engineered too: 26 technology pages and a per-project decision story exist to answer questions people actually type, each interlinked with three or more edges. What we do not do: doorway pages, fabricated review markup, or schema claiming ratings we have not earned.
Ship states, not vibes
Contact delivery today is an honest interim: the composer validates locally and routes through your own mail client straight to the studio — real intake with Firebase Firestore + notification lands in the backend phase, and the form's schema already reserves the fields that phase needs. Project screenshots on store pages are live listing pixels from Google's CDN until deploy-time mirroring; studio renders are labelled as renders. The backlog is a public document.
That shipped-versus-claimed discipline is the actual deliverable of this project. A client platform that can state its own status honestly is one that will survive audits, staff changes and bad quarters.
Verified record
- Stack
- Next.js (App Router) · TypeScript · Tailwind v4
- Strategy
- Static + ISR rendering, PWA offline shell
- Quality gates
- Lighthouse budgets · axe scans · typed content contracts
- Next phase
- Firebase Firestore admin for full site editing
Update histories, store listing and privacy labels are public on Google Play — that's the point: every claim on this page can be checked without asking us for a screenshot.
Under the hood — what each box took to build
Craft, per feature
Typed content contracts
Zod-era thinking without the runtime cost: data modules export literal-typed arrays through an accessor boundary, so drafts, unapproved and unverifiable claims cannot reach the render tree.
75 pages, one build second each
Full static generation with hourly ISR; every route is a file at deploy — no origin compute in the critical path, and a cache purge is a redeploy.
Token theming, both modes
Design tokens in one stylesheet, [data-theme] switch pre-paint, no hydration flicker — light and dark are build-time guarantees, not user settings we hope hold.
Auto screenshot carousels
Play-store-style galleries on product pages: scroll-snap track, one-card-at-a-time auto-advance, pause on hover/focus/hidden tab — all inside one small client island.
Schema matched to content
Service, Article, FAQPage, Breadcrumb and MobileApplication (with Play icon, screenshots, install URL) emitted per page type from the same typed data as the UI.
Offline-aware PWA shell
Manifest, service worker, an /offline route that is a real page of the same design system — the app install prompt is earned, not begged.
Commissioning this shape of product
The plan, as we would propose it
01 · Content model1–2 weeks
Typed entities, ownership states, migration of every legacy claim to verified-or-labelled.
02 · System & pages3–5 weeks
Design tokens, layout system, all route shells, motion grammar — dark and light from day one.
03 · SEO & media1–2 weeks
Per-page metadata, schema, OG generation, sitemap, device renders and listing imagery.
04 · Backend swap2–3 weeks
Firestore content source + admin + lead intake behind the same contracts; Vercel cutover.
What a client actually wins
Editable without an engineer
The planned admin edits the same typed sources this page renders from — clients get content freedom without a rebuild contract.
Speed as architecture
Static output on a global CDN with hourly revalidate: performance budgets met by build config, not by wishful optimisation later.
Truth enforced by types
A content model where unverified claims are inexpressible removes the category of problem entirely.
One codebase, whole brand
Site, PWA, store-page galleries, concept lab and search index all compile from one repo — brand consistency by construction.
What is not true (yet)
- Lead intake is still mail-routed; the Firestore pipeline is scheduled, and we say so on the contact page itself.
- Store screenshots are hotlinked from Google's CDN until deploy mirroring — deliberate, and labelled in the caption.
- No third-party analytics yet by choice — instrumentation arrives with a privacy-reviewed provider, not a bolted-on script.
- English first; Bangla edition is the next content layer, already modelled for.
Testimonial slot — reserved, not invented
Ratings arrive the moment the site has an audience to earn them from. Until then: the code is the reference — view it.
Sponsored placement — reserved, disclosure first
Placements & partners
This is where a genuinely used tool or partner link would live — hosting, device labs, our travel products. It ships empty and labelled on purpose: when a sponsored link arrives, it arrives wearing this disclosure, never dressed up as editorial.
Answers where they belong
Questions this project answers
Want Platform rebuild / website MVP template-class engineering for your idea?
One brief in, the composer arrives with your platforms pre-ticked — Android, iOS, web, admin.
Is this actually the rebuilt platform?
Yes — you are viewing it. The repo this page compiles from is the same codebase shipped to the domain; view-source will prove every claim in this case study.
Why Next.js and not a website builder?
Because the content layer is typed, the SEO graph is generated, and performance is a build artifact. Builders optimise for the demo; this stack optimises for year three.
Can you rebuild my current site this way?
That is the standard shape of a web platform project: content modelling, system design, all routes, SEO kit — typically 6–12 weeks with every stage demoed weekly.
What happens when the Firebase phase lands?
The same UI reads from Firestore through the existing adapter, owners edit via an admin with review states, and leads arrive in a real inbox plus a table — no redesign, no downtime.
How is the performance honest?
One shared reveal observer, images sized and web-compressed, zero external requests besides the intentionally hotlinked store shots — Lighthouse numbers get published once we can run it against the production URL.
Begin the ascent
Everything on this page is checkable.
Store listing, code craft, and the way we scope — click through and verify, then send us the brief.






