bun · void · zod · react
One process.
Typed end to end.
A Void API and a React app served by one Bun server. Each file in routes/api is an endpoint, its Zod schema validates the request and types the client: change a schema and the UI fails to compile, not in production.
void/client · typed from routes/
api("/api/hello/:name", { params: { name: "world" } })
GET/api/hello/world
…
What's inside
One repo, one package.
- runtimeBunRuns the server and its SQLite database.
- frameworkVoid + Hono + ZodFile routes for /api, validated by Zod, on Hono.
- uiReact 19The pages, rendered on the server, then live.
- dataTanStack QueryAPI data, cached and refetched.
- styleTailwind CSS 4 + shadcn/uiTheme tokens and components.
- toolingVite+Dev server, build, lint, type-check, test.
Endpoints
One file each inroutes/api/