02 Position
Familiar. Native.
Bun-first.
Familiar
Modules, controllers, decorators, constructor injection. The graph is validated before the socket opens.
Reflection at startup only.
Native
Routes register on the root instance. Native routes and plugins pass through untouched.
Client types stay end to end.
Bun-first
bun create, bun test, Bun.serve. No Node shim underneath.
TypeScript 7, no polyfills.
03 Record
Every number
carries its scope.
- 74.57%
- Throughput retainedArchived v0.3.17 run on Bun 1.3.14.
- 0.190µs
- Added p500.531 µs baseline, 0.721 µs here.
- 0
- Lookups per requestSingletons captured by the route closure.
Archived runs on pinned versions. Not a capacity claim. Method is in the benchmark docs.
04 Index
Where to go next.
- Getting startedInstall, scaffold, serve.
- ConceptsModules, providers, lifecycle, validation.
- Compare frameworksNestJS, AdonisJS, Elysia, Express, Fastify, Hono.
- Interpreting resultsScope, warm state, what a ratio does not prove.
- Benchmark suiteHarness, pinned versions, phases.
- SourcePackages, examples, tests.
05 Start
One command.
bun create aponia my-apiModule graph, a controller, and a test. Serves on Bun. Docs for the rest.