Thank you for your interest in contributing! This document provides guidelines for adding new frameworks and improving the benchmark suite.
Want to add Hono, Fastify, Elysia, or another framework? Follow these steps:
mkdir -p apps/your-framework/src
cd apps/your-frameworkYour package.json must include these scripts:
{
"name": "benchmark-your-framework",
"scripts": {
"build": "...",
"start": "...",
"dev": "..."
}
}build- Compiles/bundles the applicationstart- Runs the production serverdev- Runs development server with hot reload (optional but recommended)
Create an HTTP server with these required endpoints:
Health check endpoint.
Response:
{"status": "ok"}Test endpoint for benchmarking.
Response:
{
"message": "Hello, World!",
"timestamp": 1234567890,
"framework": "your-framework"
}- Must listen on port 3000
- Must log
Server started on port 3000when ready (used for cold start detection)
# Install dependencies
pnpm install
# Build
pnpm build
# Start server
pnpm start
# In another terminal, test endpoints
curl http://localhost:3000/health
curl http://localhost:3000/api/testEdit benchmark-config.json at the root:
{
"frameworks": [
"vercube",
"nestjs",
"routing-controllers",
"your-framework"
]
}pnpm run benchmarkYour framework will be automatically included in all tests!
Check that results were generated in results/raw/<timestamp>/:
build.json- Build times for all frameworkscold-start.json- Cold start times for all frameworksyour-framework-load-test.json- Load test resultsyour-framework-resources.jsonl- Resource usage during load test
- Fork the repository
- Create a branch:
git checkout -b add-your-framework - Commit your changes
- Push and open a Pull Request
- Use the framework's default configuration
- Don't add unnecessary middleware or optimizations
- Implement only the required endpoints
Both endpoints must:
- Return JSON with exact schema shown above
- Respond with status 200
- Always compile/build before benchmarking
- Disable development logging
- Use production settings where applicable
If your framework requires special handling, add a README in apps/your-framework/:
# Special Considerations
This framework requires:
- Node.js 20+ (uses native fetch)
- Special build flag: `--experimental-modules`All scripts are in scripts/ and written in TypeScript (Bun).
benchmark.ts- Main orchestratorcold-start.ts- Cold start measurement helpermonitor.ts- Resource monitoringtypes.ts- Shared type definitions
- Add measurement logic to
benchmark.ts - Update types in
types.ts - Update
generateResultsMarkdown()to display the metric
Before submitting:
- Verify benchmarks run:
pnpm run benchmark - Check summary:
cat results/summary.md - Verify your framework appears in results
- Open an issue with your question
- Tag it with
help wantedorquestion - Provide context about what you're trying to do
By contributing, you agree that your contributions will be licensed under the MIT License.