Pick your corridor
Choose the line you already drive — AC-01 from Achimota, AC-02 from Kaneshie, AC-03 from Madina — and the window you leave in. That’s the whole sign-up.
Concept · Carpool-matching platform · Accra, Ghana
Accra Commute Collective matches neighbours who drive the same corridor at the same hour — Achimota, Kaneshie, Madina — and pools them into one shared ride to town. Less traffic on the N1, more money in everyone’s pocket, and a carbon counter you can actually feel good about.
Designed for a city of commuters — concept project, not a live service.
How it works
No timetables, no guesswork. The Collective works like the city already moves — along corridors, at rush hour, with people you come to know by name.
Choose the line you already drive — AC-01 from Achimota, AC-02 from Kaneshie, AC-03 from Madina — and the window you leave in. That’s the whole sign-up.
The matcher groups three or four verified commuters whose pins sit on the same line. One drives, everyone rides — and the driver’s seat rotates through the week.
Pools converge at pickup hubs like Circle Interchange, then ride the trunk into Central together. Costs split automatically; the app logs every kilometre you didn’t drive alone.
The app
Match, route, reward — the app stays out of your way and keeps the pool honest. Scroll and the phone keeps pace.
Every profile is verified with a Ghana Card check and rated by the people who actually rode with them. The matcher only proposes pools whose pickup pins add under six minutes to anyone’s ride.
The app picks the hub that costs the pool the least total detour, pins it, and holds everyone to a five-minute window. Your driver’s dot moves on the same corridor map you saw above — no calls, no “where are you?”.
Every pooled trip banks Corridor Points — redeemable with partner fuel stations and food spots along your line. The leaderboard below runs on the same numbers, corridor against corridor.
Your pool this morning
Corridor league
Every quarter the corridors race — most pooled kilometres per member wins the league and the bragging rights. A static look at the dashboard concept:
| # | Corridor | Line | Pooled km / member | Active pools | CO₂ modelled | 8-wk trend |
|---|---|---|---|---|---|---|
| 1 | Kaneshie → Central | AC-02 | 118.6 | 41 | 9.2 t | |
| 2 | Achimota → Central | AC-01 | 112.9 | 38 | 8.7 t | |
| 3 | Madina → Central | AC-03 | 104.3 | 35 | 8.1 t |
Demonstration numbers — the concept models CO₂ per pooled seat from trip distance and an average petrol saloon; no live users, no live data.
Rewards
Corridor Points aren’t imaginary internet confetti — they’re designed to be redeemed along the very roads you share.
Ride and earn; drive and earn double. The week’s driver carries the pool, so the pool carries the driver’s points.
Fuel discounts, free washes, waakye Wednesdays — partner spots sit on the corridors, so redeeming never means a detour.
The winning corridor’s members split a season bonus, and the trophy lives at the hub kiosk until someone takes it from them.
Get the app
The Collective is a design concept — the store badges below are typographic mocks that lead to the designer’s portfolio, exactly as an honest concept should.
Both badges visit the portfolio of the designer who drew every pixel of this page in code.
Design case study
Concept project — adapted from a public RFQ. Frontend only; the app screens, dashboard and leaderboard shown are static UI demonstrations. Accra Commute Collective is a fictional organisation, and this site is not affiliated with any real carpool service, transport authority, or brand. No user counts are real.
Public RFQs for commuter-matching platforms keep circling the same problem: a city’s arterial roads carry thousands of nearly-empty cars along identical lines every morning. The original RFQ described a platform for a city of commuters — matching, trust, routing, incentives. This concept answers that brief for Accra, whose morning geometry is famously legible: Achimota, Kaneshie and Madina all funnel toward Central along corridors everyone already knows by heart.
Carpooling fails not on economics — splitting fuel four ways sells itself — but on trust and friction. Who is in the car? Where exactly is the pickup? Who pays whom, and when? Any design that leaves one of those questions to a WhatsApp thread has failed. So the page had to make three promises visible at a glance: verified people, a pickup you never chase, and money that settles itself.
The chosen direction is the route map as hero and brand: a dark, transit-diagram Accra where three corridor lines draw themselves in, car dots ride them, and — the whole thesis in one motion — three dots merge into a single pooled dot at Circle. Charcoal ground, mint as the shared-trunk colour, one route colour per corridor.
Two directions were rejected. A generic ride-hailing app template — white ground, floating phone renders, gradient blobs — was rejected because it says “another Uber” when the product is the opposite: neighbours, not strangers-for-hire. A photo-led lifestyle direction (smiling commuters, sunrise traffic) was impossible under the collection’s code-drawn constraint and, more honestly, would have needed stock photography that looks like nowhere in particular. The map direction turns the constraint into the identity: the product is the corridor, so the corridor is the brand.
Teaching artifact
Part of a 26-site collection designed and built by Hannah Kwakye, engineered with Fable 5. Hand-authored static HTML, CSS and vanilla JS — no frameworks, no build step, no external requests. Every visual is code-drawn: the Accra map, the phone, the dashboard, the store badges, the icons. Two font families, three self-hosted woff2 files, deployed on Netlify.
Outfit (300–700 variable, one file) carries all display and body text — a geometric sans with enough warmth to keep the dark theme friendly. Space Mono (regular + bold) does what monospace does best on a transit page: route labels, times, plate numbers, tickers, table numerals. Sizes are fluid clamp() steps from a 1.1rem body to a 5.6rem hero. The palette is the brief’s: charcoal #1B1D1F, mint #7DF0C4, corridor amber/blue/rose, fog #EFF2F1.
| Colour | Role |
|---|---|
#1B1D1F charcoal | Ground — the night road |
#7DF0C4 mint | The shared ride: trunk line, CTAs, focus rings |
#F5A93F / #5B9BF0 / #F2688A | One colour per corridor — AC-01 / 02 / 03, consistent from map to table |
#EFF2F1 fog | Text — 13.9:1 on charcoal |
The hero map is one inline SVG. The three corridors and the trunk are plain <path> elements that draw themselves with the stroke-dash trick — stroke-dasharray: 900; stroke-dashoffset: 900 animated to zero. The car dots are the part worth stealing: each corridor path is sampled with getPointAtLength() inside one requestAnimationFrame timeline. The loop runs a seven-second cycle: for the first stretch each feeder dot eases (cubic ease-in-out) from 0 to its path’s full length — three different roads, one shared arrival time — then the hub node rings outward, the feeder dots fade, and a single larger mint dot (three passenger dots drawn inside it) runs the trunk to Accra Central. The choreography is the product pitch. The loop pauses via IntersectionObserver when the map leaves the viewport and via the Page Visibility API when the tab hides; under prefers-reduced-motion the routes render pre-drawn and the dots sit statically mid-corridor, pooled dot on the trunk — the story still legible as a still.
The phone is CSS — an aspect-ratio box, border-radius, a notch pseudo-element — holding three absolutely-stacked “screens” of ordinary HTML. position: sticky pins it beside the scrolling feature copy; an IntersectionObserver watches which feature block crosses the viewport’s middle band and cross-fades the matching screen. Three dot-buttons under the phone give direct, keyboard-reachable control of the same state, and double as the mobile affordance.
The map’s street grid is seven low-opacity Bézier strokes; the Gulf of Guinea is one filled path with a lighter shoreline stroke. The dashboard, leaderboard and app screens are semantic HTML styled to look like UI — which means the leaderboard is a real <table> a screen reader can walk. Store badges are typographic buttons with hand-drawn SVG marks, honestly labelled “concept” and routed to the portfolio hub.
paint-order: stroke) and repositioned all eight around their routes.?success — its display: flex was beating the hidden attribute. Added a global [hidden] override; attribute semantics win again.×3 POOL mono tag, and the trunk sits on a soft mint glow underlay that fades in as the line finishes drawing — the shared ride reads as the highlighted line.aria-label instead of a decorative shrug.?success shows the form panel (plain loads hide it), the phone swaps screens from both scroll and dot-buttons, both stub routes land on their anchors, zero broken in-page links, zero horizontal scroll at 390px.Netlify, straight from the repository: publish = ".", immutable cache headers on /assets/*, security headers on everything. The /guide and /process routes exist as tiny redirect stubs pointing at these anchored sections, so the collection’s route contract holds on every site.