teevr
v0.0.5
Published
A file-based API framework for Node.js and Bun. Define routes as files under an router directory, add middleware, and run with hot reload in development or a built server in production.
Downloads
198
Readme
Teevr
A file-based API framework for Node.js and Bun. Define routes as files under an router directory, add middleware, and run with hot reload in development or a built server in production.
Prerequisites
- Node.js 18+ or Bun 1.0+
- TypeScript (recommended)
Quick start
This scaffolds a minimal project and starts the dev server (default: http://127.0.0.1:3000).
Add to an existing project
npm install teevr
# or: bun add teevr
# or: yarn add teevrAdd a router/ directory under your app root (e.g. ./src/router when appDir is ./src, or ./router when appDir is ./). See Project structure below.
CLI
| Command | Description |
|--------|-------------|
| teevr dev | Run the app with hot reload. |
| teevr build | Build for production (output in ./dist by default). |
| teevr start | Run the built app (no hot reload). |
Options (common)
-p, --port <number>— Port (default: 3000).-H, --host <string>— Hostname (default: 127.0.0.1).--appDir <path>— App root (overrides config). Routes are loaded from{appDir}/router/**.--build-path <path>— Build output directory (forbuild/start).
Project structure
A minimal project:
my-api/
├── src/
│ └── router/
│ └── api/
│ └── hello/
│ └── route.ts → GET /api/hello
├── teevr.config.ts
├── package.json
└── tsconfig.json- App directory (
appDirin config, default./src) — Routes live underrouter/, and middleware lives underrouter/**/middleware.ts. File paths underrouter/map to URL paths. teevr.config.ts— Optional: port, host, CORS, logging, dev options, plugins.
Your first route
Create src/router/route.ts (or router/route.ts if using appDir: "./"):
import type { Context } from "teevr";
export async function GET(ctx: Context) {
ctx.res.status(200);
return { message: "Hello from Teevr" };
}This handles GET / and returns JSON.
Add src/router/api/hello/route.ts for GET /api/hello:
import type { Context } from "teevr";
export async function GET(ctx: Context) {
ctx.res.status(200);
return { hello: "world" };
}Export GET, POST, PUT, PATCH, DELETE, etc. from a route.ts file to handle those methods on the path that matches the file location.
Config
Example teevr.config.ts:
import type { TeevrConfig } from "teevr";
const config: TeevrConfig = {
appDir: "./src", // option default ./src
port: 3000,
dev: {
logPretty: true,
},
};
export default config;License
See the repository for license information.
