Blog
Notes on the internals
How bionicjs actually works: the two servers behind one command, the failures that shaped the design, and the decisions we have not made yet.
- Hono, Nitro, Architecture, Decision
Should we layer Hono on Nitro?
We built a Hono router, never mounted it, then found Nitro already generates a typed client from server/api. Five ways the codegen was wrong, what twelve other frameworks do, and why this ends in a deletion.
- Architecture, Nitro, Vite
How BionicJS runs: dev, build, and production
One command, two servers, and a dev-only alias. A walk through what bionicjs dev actually starts, why /api is proxied, and what still has to happen before production is at parity.
- Nitro, h3, Postmortem
The two copies of h3
How a scaffolded app ended up with two majors of h3 side by side, why every route 404'd without an error, and why the fix was to stop pinning a version at all.
- Hono, Architecture, Correcting the docs
Hono is not our server
We generated a Hono router and told the docs it was the request handler. Neither was true. What Hono is for, what actually serves requests today, and the decision we still owe you.
- Architecture, Comparison
Borrowing a server, not writing one
Every full-stack framework answers the same four questions. Here is who answers them how, why Nuxt is our closest sibling, and why Redwood owns our directory layout.