Technology used to build it
- TypeScript
- Canvas rendering
- Web Audio
- PWA
- Capacitor (Android·iOS)
Service in development
A pixel town friends build together and hand over as a birthday gift
One person opens a town and friends arrive on a link while the birthday person sees nothing. The town starts as empty plots: each friend who leaves a letter, a photo, or a drawing gets a tree of their own, friends water one another's trees, and walking, jumping, and arcade scores together bring balloons, flower paths, and lights. Nobody has to be online at the same time, and every friend who left something stays in the town as a character. At midnight on the birthday the whole town blooms; the birthday person walks in, reads the letters, and a tree they have looked at bears fruit. Each town also carries the birthday person's name, a photo wall, and a yard of small pixel drawings from friends, made in that town's own materials, and plays its own music on its own instrument. The town stays open through the birthday and the day after, then remains as a chronicle — a time-lapse of the days it grew and a roll of everyone who grew it. Each town has its own workshop, where friends spend coins found in the town — never money — on a decoration for the birthday town; as the gifts reach four, eight, and twelve, the decorations already standing gain leaves, flowers, ribbons, and lights, and each one shows the name and character of the friend who left it, while public visitors see it unattributed. The whole gift can be tried without an account: the front page opens all twelve towns as an example birthday, where the scene can be photographed and shared.
HappyBirthTown is still in development. On the web, the front page opens every town as an example birthday anyone can walk without an account, and a birthday person's published open house can be visited there. A real gift — opening a town, inviting friends, handing it over — runs in the iOS app, which is in testing and not yet in a public store. The example people, letters, and photos are not real customers' gifts.
Service development record
The product takes the birthday wishes that drift past in a message thread and turns them into a place friends build together and give once, to see what the birthday person is left holding.
These are inputs for the next operating or validation decision, not outcomes already achieved.
Change history
Dated by when the change shipped in the product, not by when this page caught up. Lines are added rather than replaced, so what the service withdrew stays readable next to what it gained.
Let the decorations in a birthday town grow with the gift: once a town has four, eight, and twelve gifts, the decorations already there add leaves, flowers, ribbons, and lights. Each town's workshop now shows its goods in colour beside what they look like placed and fully grown.
Put a name to every decoration a friend leaves: the birthday person can tap one to see who left it and that friend's character at the time, and the same list carries into the album. Public visitors see the scenery without names.
Put the camera in the try-it mode: any of the twelve example towns can be photographed and shared as a polaroid stamped with the town's name and the date, with no account and no gift.
Made the gift a town that grows. It starts as empty plots; a friend who leaves a letter, a photo, or a drawing gets a tree, friends water one another's, and moving together and arcade scores add balloons, flower paths, and the keys to better plots. The town blooms at midnight on the birthday, and when it stops the next night a chronicle remains — a time-lapse and a roll of everyone who grew it.
Gave every town an exhibit made for one person: their name in the town's own material, a photo wall, and a yard of small pixel drawings friends leave with a line each. It began on the plaza and now runs in all twelve towns, and the pieces stay in the album.
Gave each of the twelve towns its own piece, derived from the birthday song, and its own instrument — an accordion in Paris, a gayageum in Seoul, a carousel organ at the funfair. Walking up to a player on the map brings that spot's music forward, and the music rests between pieces.
Reworked the three arcade games — the run, the cake stack, the candles — so difficulty rises through a round and each ends by saying what to try next, and redrew them as one arcade.
Made the funfair's ring toss something you actually throw: three rings, a moving marker, and a ring that lands on the peg or bounces off. A ring that lands leaves a wish on the pile by the booth.
Added a companion to the seaside try-it town who walks alongside, introduces the sea, the sand, and the plaza, and can be called back from the map. Seaside only for now.
Gave the map a second half: below the full-screen town map, what kind of town this is, what has gathered so far — letters, photos, decorations, friends — and a list of things to do, each of which sends the character running there when tapped.
Changed how a constellation is drawn. Instead of a free line across the sky, a stroke now joins star to star, the stars it passes light up, and only which stars were joined is kept.
Opened the try-it mode from three towns to all twelve, with no account. The visitor stands in the birthday person's place, and the friends in the town speak to them.
Retired the live party as the way a town is opened. New towns are gifts that friends fill in their own time and hand over once; the realtime room server remains only to keep parties and albums already held readable.
Removed the 10 pm group photo everyone had to be present for — the last place in the product that asked people to be online at the same moment.
Replaced it with a photo that has no moment: fill a spot on the plaza at any hour and pick a pose, a polaroid prints for whoever filled it, and the day's picture completes itself at midnight.
Opened the funfair, ballpark, cinema, zoo, and concert towns, bringing the town count to twelve. They can be walked now; hosting a party in them is still locked.
Made the day after a party open on the same invite link — an album with the party's own picture as its cover.
Turned souvenirs into tools: pick one up and it lands straight in your hand, doing what only that town allows — a surfboard rides the sea, skis cross the snow, a kite climbs as you walk. Spares pass to whoever is next to you.
Made the first move at each of the four places that take a wish a gesture instead of a text field — hang it, press and release to send it, time it to stack, hand it over. Words became the second step.
Let candles, neon, and bulbs keep their own colour after dark, instead of being flattened into the night along with the sky.
Put the town inside the invitation, so the card shows where the party will be held.
Added a dark mode covering every screen from the front page inward. Anything that leaves the town — invitations, cards, photos — stays on the light board.
Gave each town a second palette, so the same place can be seen as another season.
Added a third arcade game — placing candles on a turning cake — after the run and the cake stack.
Let candles spread into a wreath around the plaza once the cake is full, so filling it opens the next goal instead of ending the game.
v1.0: day, night, and season following the birthday person's timezone, living NPCs, decorations guests place together, and sound synthesised on the spot from no audio files at all.
The question I want feedback on now
When several people prepare one birthday gift together, what has to reach the birthday person for it to feel properly given — and what makes it feel empty?
Leave feedback