
Your app has left the station.
A full-stack TanStack Start app with a Postgres database on Railway’s private network. Post to the board, look around, then make it yours.
Browser
React 19 · hydrated
web
TanStack Start · Node
Postgres
postgres.railway.internal
What’s inside
The core features of TanStack Start, in one small app.
Server functions
Type-safe RPCs with zod validation. Posting to the board calls a server function — no API layer to write.
See it →validateSearchType-safe search params
Filters and pagination live in the URL, validated with a schema and fully typed in every Link.
See it →<Await>Streaming SSR
The stats page sends its shell right away and streams slow queries into the same response.
See it →ssr: 'data-only'Selective SSR
The kiosk view loads data on the server but renders only in the browser, where it can size itself.
See it →server.handlersServer routes
Plain HTTP handlers next to your pages. A public JSON API and the Railway health check.
See it →prerenderStatic prerendering
The features page is rendered to HTML at build time and served as a static file.
See it →createMiddlewareMiddleware
Global request middleware adds Server-Timing headers; function middleware logs every server function call.
See it →ssr-queryTanStack Query, SSR’d
Loaders prefetch queries on the server, then hydrate them — with optimistic updates on post.
See it →Live departures
- PLATDEPARTED
Hello world
Testing 123
- PLATDEPARTED
All aboard! TanStack Start is live.
Railway
- PLATDEPARTED
Mind the gap between SSR and hydration
Conductor
- PLATDEPARTED
Shipped it before my coffee got cold
Night Owl
- PLATDEPARTED
Type-safe routes all the way down
Platform 9
- PLATDEPARTED
Server functions are just functions
First Class
Live from Railway
- Region
- us-west2
- Service
- web · production
- Deployment
- 8a4891da
- Replica
- 7927e523
- Commit
- a18cf39 on main
- Postgres
- private network1.80 ms
- Server uptime
- 11d 7h · Node v22.23.3
This card’s data comes from a server function, fetched fresh on each page load. Redeploy and watch the deployment ID change.
Next stop
Make it yours.
Eject the service to copy the repo into your GitHub account, clone it, and start editing. Pushes to the connected branch deploy automatically, and with PR environments turned on in project settings, each pull request gets its own preview.
# run it locally with a Docker Postgres $ pnpm install && cp .env.example .env $ pnpm db:up && pnpm db:migrate $ pnpm dev # edit src/routes/index.tsx, then $ git push → deploying…
