# KickJS > A production-grade, decorator-driven Node.js framework for TypeScript. The HTTP engine is pluggable — the same controllers, modules, and context decorators run on Express (default), Fastify, or h3; swap the engine in one line at bootstrap. Includes a DI container, 20+ decorators, a module system, typed env config, type generation, and a CLI that scaffolds projects and feature modules. ## Core guides - [What is KickJS?](https://kickjs.app/guide/what-is-kickjs.html): Overview, philosophy, and where it fits. - [Getting Started](https://kickjs.app/guide/getting-started.html): Install, scaffold a project (`kick new`), run the dev server. - [Controllers & Routes](https://kickjs.app/guide/controllers.html): `@Controller`, `@Get`/`@Post`/…, the `RequestContext`. - [Dependency Injection](https://kickjs.app/guide/dependency-injection.html): The container, `@Service`, `@Inject`, scopes. - [Modules](https://kickjs.app/guide/modules.html): `defineModule`, route mounting, registration. - [HTTP Runtimes (Express / Fastify / h3)](https://kickjs.app/guide/http-runtimes.html): Pick the engine at bootstrap; capability matrix; writing a custom runtime. - [Edge Deployment (Workers / Bun / Deno)](https://kickjs.app/guide/edge-deployment.html): `createWebApp` fetch entry, wrangler `nodejs_compat`, Bun/Deno serve, edge caveats. - [Context Decorators](https://kickjs.app/guide/context-decorators.html): Typed, ordered `ctx` population via `defineContextDecorator`. - [Middleware](https://kickjs.app/guide/middleware.html): Built-ins (helmet, cors, requestId, rate-limit, …) and custom. - [Validation](https://kickjs.app/guide/validation.html): Zod / Valibot / Yup body, query, and param validation. - [Configuration](https://kickjs.app/guide/configuration.html): Typed env via `defineEnv`, `ConfigService`, `@Value`. - [Type Generation](https://kickjs.app/guide/typegen.html): `kick typegen` for fully-typed route params/body/query/response (incl. the KickRoutes.Api map for the typed client) and env. - [Typed Client](https://kickjs.app/guide/typed-client.html): `@forinda/kickjs-client` — end-to-end response types from your handlers. - [Typed Client Recipes](https://kickjs.app/guide/typed-client-recipes.html): TanStack Query + SWR patterns over the typed client. - [Error Handling](https://kickjs.app/guide/error-handling.html): `HttpException`, RFC 9457 problem details, global error handler. ## Features - [File Uploads](https://kickjs.app/guide/file-uploads.html) - [Swagger / OpenAPI](https://kickjs.app/guide/swagger.html) - [WebSockets](https://kickjs.app/guide/websockets.html) - [Server-Sent Events](https://kickjs.app/guide/sse.html) - [Authentication (BYO)](https://kickjs.app/guide/authentication.html) - [Database (kickjs-db / Prisma / Drizzle)](https://kickjs.app/guide/database/) - [DevTools](https://kickjs.app/guide/devtools.html) - [Adapters](https://kickjs.app/guide/adapters.html) ## Reference - [CLI Commands](https://kickjs.app/guide/cli-commands.html) - [API: core](https://kickjs.app/api/core.html) - [GitHub](https://github.com/forinda/kick-js) - [npm: @forinda/kickjs](https://www.npmjs.com/package/@forinda/kickjs)