Transit

While browsing the internet I came across a transit map and got an idea for an interactive app to design them. One thing led to another and it kept growing into something bigger than I planned.

Generate map

Every click builds a complete transit network with its own routes, interchanges, and station names. No two generations come out the same so you can keep going until one feels right.

StarfishCrossingHadalHollowChileRiseNinetyEastChainFractureAruTroughCoralSpireMethaneSeepTidalPoolTerraceMosasaurusMoatGalatheaDeepMarianaTrenchTimorTroughArchelonAtollPearlHarborRosemaryTerraceCrystalStream
Each click generates a new city

Generate route

You can also grow a map gradually by adding one line at a time. Each new route picks its own color and finds a path through whatever's already there.

HarbourMarketParliamentGardensObservatoryRiverside
2 routes on the map

Draw a route

Click the canvas to add stations and they connect as you go. I kept tweaking the snapping until it felt like drawing with a ruler you didn't have to hold.

Click the canvas to start drawing

Playback

The map can build itself in front of you. Stations appear first, then tracks stretch between them. Three modes control the sequence so the same network assembles in completely different ways.

HarbourMarketParliamentGardensObservatoryRiverside

Track style

Switching styles changes the line weight, station markers, and track rendering all at once. Same map, completely different character.

ForumAtriumNexusAgoraPiazzaSpireVaultBastionCitadel

Map style

Underneath the transit lines there are real cartography tiles. Flipping between them changes the mood from soft watercolor to stark black and white.

ForumAtriumNexusAgoraPiazzaSpireVaultBastionCitadel

Train animation

Small colored shapes move along each route with a gentle pulse. You can switch between a round dot, a short dash, and a longer pill to change how the map feels in motion.

ForumAtriumNexusAgoraPiazzaSpireVaultBastionCitadel

Drag to arrange

Grab a station and move it anywhere. Tracks redraw on the fly, snapping to the grid so the geometry stays clean even when you're rearranging things quickly.

ApexBasinCrestDeltaEcho
Grab a station and move it

Label positioning

Every station name can sit in one of eight spots. Click a station to cycle through positions until the label clears any overlapping tracks or neighbors.

WestgateCentralEastgateNorthportSouthport
Click on a station to reposition its label

Inspector

Click any station or route and a detail panel slides into the corner. It surfaces the name, connections, and type without pulling you away from the map.

ForumAtriumNexusAgoraPiazzaSpireVaultBastionCitadel
Click any station or route to open the inspector

Widgets

The map needed context around it. Journey planners, traffic charts, a ticking clock. Each widget runs on the same network data so everything stays in sync.

Clock
--:--Grand Central
Service Status
Red Line
Planned Works
Blue Line
Suspended
Green Line
Good Service
1/3 good2 impacted
Schedule
12a6a12p6p12a
Red Line
Blue Line
Green Line
Service
Peak
Traffic264k/day
Red Line98.7k
Blue Line54.7k
Green Line110.3k
12am6am12pm6pm12am
Frequency
Red Line
3m
Blue Line
10m
Green Line
6m
Trains per hourInterval
Journey Planner
Transfers
Red Line
Blue Line
Central
Red Line
Green Line
Park Ave
2 interchanges2 connections
Lines
Red Line
6 km4
Blue Line
1.5 km2
Green Line
1.5 km2
3 lines8 stops9.0 km total
Historyest. 1886
1886
Green Line140y
1900
Blue Line126y
1915
Red Line111y
140 years of service3 lines

Toasts

Whenever you add a route or regenerate the map a small pill floats up from the bottom. It picks from a pool of quips so the feedback never reads the same way twice.

Fun part

This is the part where I felt happy with what I had built and excited for what else I could explore.