Next Door · Case Study

Thanks for Visiting

Reach out

Overview0%
0%
0%
0%
0%
0%
0%

Next Door

A private community app for one building, block, or street

The Next Door key visual: a tablet floating among broken slabs of concrete on a dark ground, its screen showing the welcome card, Next Door, welcome to your friendly neighbourhood

Overview

The short version · ~12 min read

Companydeeproduct.org
RoleDesign & Build
DeliverableZero to V1
Scope
Product designDesign systemFull-stack buildBrandLaunch

You know every face on your floor. Do you know one name?

The problem was never distance. The apps built for streets turned them into public feeds with ads in them, so the real conversation moved to a group chat nobody can search and everybody mutes.

My solution was one calm place for one building, over 4 key decisions that each cost something. The outcome is 3 surfaces of a single web app, chat, events and a marketplace, sharing one member list and one login. The output is running as a demo anyone can walk into, inside free tiers, with the code there to fork.

3 surfaces
chat, events and a marketplace, sharing one member list and one login
30 tables
the schema behind live messages, RSVPs, listings and their histories
Guest or Google
walk in with no account at all, or sign in and keep a profile
Next Door on a laptop: the chat at full width, one pinned message in a pill at the top, the two sides of the conversation against the left and right edges, and an event card in the thread
The same Next Door chat on a phone: one column, the pinned pill above the thread and the composer along the bottom

One Web App, Every Device

01The outcome

Three things happen on a street: people talk, people organise, and people pass things along. Build them as three apps and nobody installs the second one, so they are three surfaces of one web app instead, sharing a member list, a login and a set of notifications. There is nothing to install at any size, which is the only reason a neighbour who joined from a text message ever opens it twice.

Move around in it

nextdoor.deeproduct.org

Willow Court

powered by Next Door

Pinned · Barbecue Saturday 18:30, courtyard

Today

P

Priya

Anyone free to sign for a parcel this afternoon?
👍 2

14:02

I am in all day, leave it with me.

14:04 · Read

S

Sam

Legend. Also the courtyard gate is sticking again.

14:09

P
Message Willow Court

Chat. The ground floor. One thread for the whole building, with pinned messages, reactions and read receipts. On a wide screen the member list comes in beside it rather than over it.

Every screen, every size

The same three surfaces, laid out for the thing in your hand and the thing on your desk.

Next Door on a phone in dark mode: the main chat, one pinned message in a pill above the thread, a welcome from Deepak, and the composer at the foot of the screen
The Quick Request screen on a phone: Neighbor Requests and My Requests tabs over an empty state reading no requests yet, with a New Request button
The notifications panel open over the chat on a phone, with one announcement from Deepak, empty reminders and activity, and an event card showing behind it
The events screen on a phone with My Events selected, showing a Hiking Trip card with its photo, date, time, location, member count and a Go to Chat button

Phone first, because a neighbour reads this standing in a lift. One column, thumb-reachable, the composer pinned to the bottom.

4 key decisions

02The solution

Every one of these traded something away to keep one promise: that a neighbour can get in without an account, and the street's messages stay in a database the street owns.

01

How many apps a street needs

Not taken

3 apps, one per job

Shipped

3 surfaces of 1 web app

How I got there

Three things happen on a street: people talk, people organise, people pass things along. Build them as three apps and nobody installs the second one.

What it cost

User
No push. A parcel at the door is a notification or it is nothing.
Technical
54 components carrying 3 surfaces, so a change lands in 3 places at once.
Business
Nothing to install, which is the only reason someone opens it twice.
02

What it costs to walk in

Not taken

Sign up before you see anything

Shipped

Guest, or Google

How I got there

The person this is built for joined from a text message from a neighbour. A sign-up form is the point at which that person closes the tab.

What it cost

User
A guest keeps nothing. Close the tab and the profile was never there.
Technical
2 identity paths through every route and every permission check.
Business
Guests leave no profile, so there is no member list to grow.
03

Who holds the messages

Not taken

One hosted service for every street

Shipped

You run your own copy

How I got there

An app whose whole argument is that your messages should not live inside somebody else's platform cannot then be somebody else's platform.

What it cost

User
Standing one up means Supabase, OAuth credentials and 3 cron jobs.
Technical
Every choice has to stay inside a free tier or the instruction is not real.
Business
There is no hosted product here, so there is nothing to charge for.
04

What the browser is allowed to ask

Not taken

The client reads the database directly

Shipped

84 routes, 1 per read and write

How I got there

Anything the browser can query directly is a privacy promise I would be asking a street to take on trust. A route is the same promise written where it can be checked.

What it cost

User
Nothing visible, and that is the whole point of it.
Technical
84 routes to maintain, and a feature is a route before it is a screen.
Business
The claim is enforced in code rather than made in copy.

One System, Two Modes

03Light and dark

A neighbourhood app gets opened last thing at night as often as it does at lunch. Dark mode as an afterthought means inverting a palette and hoping, so both modes were drawn together: two grounds, one identity, and a primary that changes value between them because no single green is readable on both.

Light mode

Pine carries the primary on white: type, icons, active states, the deep end of every gradient. Mint measures about 1.3 to 1 against this background, so it never holds a word here, only the bright end of a fill.

Dark mode

The two change places. Pine falls to about 2 to 1 on this ground, so mint takes the primary and pine becomes the depth under it. Same pair, same gradient, one value swapped, which is the whole of what supporting two modes costs when both were drawn at once.

Typography

Outfit

ABCDEFGHIJKLMNOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

0123456789

The product's face, and the only one inside the app. A geometric sans with enough warmth to read as a neighbour rather than a utility, at every size from a timestamp to a screen title.

Screen title32px · 600
Next Door
Section20px · 600
Neighbourhood events
Message15px · 400
Anyone free to sign for a parcel?
Meta12px · 400
Flat 4B · 2 min ago

Icons & Cards

The two colour bands above are a claim. This is where it can be checked: one switch, the same fourteen icons and the same two cards, redrawn on the other ground with only the primary changing value.

Chat
Events
Marketplace
Notifications
Members
Start and end
Where
Pinned
React
Read
Admin
Upcoming
Live now
Create
Event photo

Summer courtyard barbecue

Sat 14 June
18:30 to 21:00 (2h 30m)
Courtyard, by the bike racks
14 / 30 members

Created by Priya, Flat 4B

Join EventUpcoming · Hurry up
Event card state

The card is an invitation. The action is Join, and the rows say when, where and how full.

Listing photo

Borrow a drill for an hour

2h ago

Putting up a shelf this evening and mine has finally given up. Happy to return it the same night, and I will bring biscuits.

SSam · Flat 2A
3 helping
I can help
Market card state

Somebody else's request, not a listing. No price anywhere, and the action is I can help.

A tablet on a rust-coloured armchair in a dark room, running Next Door in dark mode with an event card open

From Locked In to a Chain I Own

04Flow

Design
Figma
Build
Claude CodeVS CodeNext.jsSupabase
Ship
GitHubVercelResend

Every link in that chain is one I can pull out. The database, the host, the mail, the editor: each is a piece doing one job, and each has a replacement I could move to in an afternoon without touching the other six.

The first version of Next Door was generated on a vibe coding platform, and running it meant staying there. Rebuilding it across tools I picked myself is what turned a product I rented into one I own.

Where It Stands

05The output

It runs. It is a demo rather than a launch: anyone can walk in as a guest, the sample data resets on a schedule, and no street is living on it yet. What is finished is the hard part, which is the whole product working end to end for one neighbourhood.

Surfaces
3

Chat, events and a marketplace, on one member list.

Tables
30

Messages, reactions, reads, RSVPs, listings and their histories.

API routes
84

Every read and write goes through one, never straight to the client.

Components
54

Built once and reused across all three surfaces.

Commits
75

First to latest, 7 April to 17 June 2026.

Running cost
Free tier

Vercel, Supabase and Google Cloud, within their free limits.

What is next

It's your time to build your community

This was my first project built with AI, and it was meant for everyone. go ahead and test the product, and if you like it, fork the project on GitHub for free.

One app, all screens

Next Door poster: Tryyy the Guest Access, no signin required
Next Door poster: Create Your Own Community, get to github

Guest access. No account, no email.

Try it

The demo is live with sample data in it, and the code for all of it is public. go ahead, let yourself in.

Great products happen when the right people meet.

Let's work together

If you are building something and want a designer who goes all the way in with you, my inbox is open.
LinkedIn