{"id":30713726,"url":"https://github.com/marcj/deepkit","last_synced_at":"2026-02-11T18:11:06.942Z","repository":{"id":37422850,"uuid":"152898727","full_name":"marcj/deepkit","owner":"marcj","description":"modular high-performance TypeScript framework","archived":false,"fork":false,"pushed_at":"2026-02-08T00:07:23.000Z","size":79237,"stargazers_count":3534,"open_issues_count":115,"forks_count":141,"subscribers_count":28,"default_branch":"master","last_synced_at":"2026-02-08T08:58:01.523Z","etag":null,"topics":["deepkit","dependency-injection","enterprise","framework","framework-javascript","laravel","mongodb","nodejs","orm","serializer","spring","symfony","typescript","validator"],"latest_commit_sha":null,"homepage":"https://deepkit.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcj.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-13T17:47:56.000Z","updated_at":"2026-02-07T21:58:37.000Z","dependencies_parsed_at":"2025-11-22T10:12:15.567Z","dependency_job_id":null,"html_url":"https://github.com/marcj/deepkit","commit_stats":{"total_commits":2831,"total_committers":30,"mean_commits":94.36666666666666,"dds":"0.042034616743200304","last_synced_commit":"ab96f2f3c0f7f795692d49e6a37ee5194647a9c1"},"previous_names":["marcj/marshal","marcj/marshaller","marcj/deepkit"],"tags_count":200,"template":false,"template_full_name":null,"purl":"pkg:github/marcj/deepkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcj%2Fdeepkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcj%2Fdeepkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcj%2Fdeepkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcj%2Fdeepkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcj","download_url":"https://codeload.github.com/marcj/deepkit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcj%2Fdeepkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29340554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T16:14:43.024Z","status":"ssl_error","status_checked_at":"2026-02-11T16:14:15.258Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deepkit","dependency-injection","enterprise","framework","framework-javascript","laravel","mongodb","nodejs","orm","serializer","spring","symfony","typescript","validator"],"created_at":"2025-09-03T04:02:21.045Z","updated_at":"2026-02-11T18:11:06.938Z","avatar_url":"https://github.com/marcj.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://deepkit.io/assets/images/deepkit_logo.svg\" alt=\"Deepkit Logo\" width=\"200\"\u003e\n  \u003ch1\u003eDeepkit Framework\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eThe TypeScript framework with runtime types\u003c/strong\u003e\u003c/p\u003e\n\n  \u003ca href=\"https://www.npmjs.com/package/@deepkit/type\"\u003e\u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/v/@deepkit/type.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/U24mryk7Wq\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/759513055117180999?label=Discord\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/deepkit/deepkit-framework/actions/workflows/main.yml\"\u003e\u003cimg alt=\"CI\" src=\"https://github.com/deepkit/deepkit-framework/actions/workflows/main.yml/badge.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/License-MIT-blue.svg\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\nTypeScript types disappear at runtime. Deepkit changes that.\n\nDefine your types once and use them everywhere—validation, serialization, database, HTTP, RPC, and dependency injection. No schema duplication. No code generation. Just TypeScript.\n\n## The Problem\n\nIn traditional TypeScript development, you define your types, then redefine them for runtime use:\n\n```typescript\n// 1. TypeScript interface\ninterface User {\n  id: number;\n  email: string;\n  createdAt: Date;\n}\n\n// 2. Zod schema for validation\nconst UserSchema = z.object({\n  id: z.number(),\n  email: z.string().email(),\n  createdAt: z.date(),\n});\n\n// 3. TypeORM entity for database\n@Entity()\nclass UserEntity {\n  @PrimaryColumn()\n  id!: number;\n\n  @Column()\n  email!: string;\n\n  @Column()\n  createdAt!: Date;\n}\n\n// Three definitions for the same thing.\n```\n\n## The Solution\n\nWith Deepkit, one definition works everywhere:\n\n```typescript\nimport { PrimaryKey, AutoIncrement, Email, MinLength } from '@deepkit/type';\n\nclass User {\n  id: number \u0026 PrimaryKey \u0026 AutoIncrement = 0;\n  email: string \u0026 Email = '';\n  createdAt: Date = new Date();\n\n  constructor(public username: string \u0026 MinLength\u003c3\u003e) {}\n}\n\n// Validation, serialization, database, HTTP, DI — all from the same type.\n```\n\n## Features\n\n- **Runtime Types** — TypeScript types preserved at runtime via a compiler plugin\n- **Type Annotations** — Validation constraints via intersection types (`string \u0026 MinLength\u003c3\u003e`)\n- **Zero-Decorator DI** — Dependency injection works on pure TypeScript, no `@Injectable()` needed\n- **End-to-End Types** — Same types for frontend, API, transport, and database\n- **Type-First ORM** — Database schema inferred directly from TypeScript types\n- **Binary RPC** — Type-safe WebSocket/TCP communication with automatic serialization\n- **High Performance** — JIT-compiled validation, serialization, and dependency injection\n- **Modular** — Use only what you need from 40+ independent packages\n\n## Quick Start\n\n```bash\nnpm init @deepkit/app@latest my-app\ncd my-app\nnpm start\n```\n\n## Runtime Types\n\nThe core innovation. TypeScript types become available at runtime:\n\n```typescript\nimport { cast, validate, serialize, typeOf } from '@deepkit/type';\n\ninterface User {\n  id: number;\n  registered: Date;\n  username: string;\n}\n\n// Deserialize JSON to typed objects (strings become Dates, etc.)\nconst user = cast\u003cUser\u003e({\n  id: 1,\n  registered: '2024-01-15T10:30:00Z',\n  username: 'peter'\n});\nuser.registered instanceof Date; // true\n\n// Validate data against type\nvalidate\u003cUser\u003e({ id: 'not a number' });\n// [{ path: 'id', message: 'Not a number' }]\n\n// Serialize to JSON-safe output\nserialize\u003cUser\u003e(user);\n// { id: 1, registered: '2024-01-15T10:30:00.000Z', username: 'peter' }\n\n// Full runtime type reflection\nconst type = typeOf\u003cUser\u003e();\n```\n\n## Type-Safe HTTP\n\nTypes flow through to your HTTP layer with automatic validation and serialization:\n\n```typescript\nimport { App } from '@deepkit/app';\nimport { FrameworkModule } from '@deepkit/framework';\nimport { http, HttpBody } from '@deepkit/http';\nimport { MinLength, Positive, Email, PrimaryKey, AutoIncrement } from '@deepkit/type';\n\nclass User {\n  id: number \u0026 PrimaryKey \u0026 AutoIncrement = 0;\n  createdAt: Date = new Date();\n\n  constructor(\n    public username: string \u0026 MinLength\u003c3\u003e,\n    public email: string \u0026 Email\n  ) {}\n}\n\nclass UserController {\n  @http.GET('/user/:id')\n  get(id: number \u0026 Positive): User {\n    // id is guaranteed to be a positive number\n    return new User('peter', 'peter@example.com');\n  }\n\n  @http.POST('/user')\n  create(body: HttpBody\u003cPick\u003cUser, 'username' | 'email'\u003e\u003e): User {\n    // body is validated and deserialized\n    return new User(body.username, body.email);\n  }\n}\n\nnew App({\n  controllers: [UserController],\n  imports: [new FrameworkModule({ debug: true })]\n}).run();\n```\n\n## More Features\n\n**Dependency Injection** — Types are injection tokens. No decorators required.\n```typescript\nclass UserService {\n  constructor(private db: Database, private logger: Logger) {}\n}\n```\n[Learn more →](https://deepkit.io/documentation/dependency-injection)\n\n**ORM** — Database schema from TypeScript types. Supports PostgreSQL, MySQL, SQLite, MongoDB.\n```typescript\nconst db = new Database(new SQLiteDatabaseAdapter('app.db'), [User]);\nawait db.persist(new User('peter', 'peter@example.com'));\n```\n[Learn more →](https://deepkit.io/documentation/orm)\n\n**RPC** — Type-safe remote procedure calls over WebSocket/TCP with automatic serialization.\n[Learn more →](https://deepkit.io/documentation/rpc)\n\n## Packages\n\n**Core**\n- `@deepkit/type` — Runtime type system, validation, serialization\n- `@deepkit/type-compiler` — TypeScript transformer\n- `@deepkit/injector` — Dependency injection\n- `@deepkit/app` — Application container and CLI\n\n**Web**\n- `@deepkit/http` — HTTP router with automatic serialization\n- `@deepkit/rpc` — Binary RPC protocol\n- `@deepkit/framework` — Full framework integrating all components\n\n**Database**\n- `@deepkit/orm` — Database-agnostic ORM\n- `@deepkit/sql` — SQL query builder\n- `@deepkit/postgres`, `@deepkit/mysql`, `@deepkit/sqlite`, `@deepkit/mongo`\n\n**Infrastructure**\n- `@deepkit/broker` — Message broker and cache\n- `@deepkit/filesystem` — Virtual filesystem (local, S3, GCS, FTP)\n- `@deepkit/logger` — Structured logging\n- `@deepkit/event` — Event system\n\n[View all packages →](https://deepkit.io/documentation/packages)\n\n## Documentation\n\n- [Introduction](https://deepkit.io/documentation/introduction)\n- [Runtime Types](https://deepkit.io/documentation/runtime-types)\n- [Dependency Injection](https://deepkit.io/documentation/dependency-injection)\n- [HTTP](https://deepkit.io/documentation/http)\n- [ORM](https://deepkit.io/documentation/orm)\n- [RPC](https://deepkit.io/documentation/rpc)\n\n## Community Packages\n\n- [OpenAPI](https://github.com/hanayashiki/deepkit-openapi) — Automatic OpenAPI doc and Swagger UI generation\n- [Serverless Adapter](https://github.com/H4ad/serverless-adapter) — Run on AWS Lambda, Azure, Digital Ocean\n- [REST](https://github.com/deepkit-rest/rest) — Declarative REST API development\n- [Stripe](https://github.com/deepkit-community/modules/tree/master/packages/stripe) — Stripe API and webhook integration\n- [GraphQL](https://github.com/marcus-sa/deepkit-graphql/tree/main/packages/core) — GraphQL server support\n- [Apollo Server](https://github.com/marcus-sa/deepkit-graphql/tree/main/packages/apollo) — Apollo integration\n- [Remix](https://github.com/marcus-sa/deepkit-modules/tree/main/packages/remix) — Remix framework integration\n- [Remix Validated Form](https://github.com/marcus-sa/deepkit-modules/tree/main/packages/remix-validated-form) — Form validation for Remix\n- [Nx Webpack Plugin](https://github.com/marcus-sa/deepkit-modules/tree/main/packages/nx-webpack-plugin) — Nx build tool integration\n\n## Examples\n\n- [Full Application](https://github.com/deepkit/deepkit-framework/blob/master/packages/example-app/app.ts) — HTTP, RPC, CLI, and ORM\n- [Minimal HTTP Server](https://github.com/deepkit/deepkit-framework/blob/master/packages/example-app/slim.ts) — HTTP router without full framework\n- [Bookstore](https://github.com/marcj/deepkit-bookstore) — REST CRUD API with API Console\n- [Webpack](https://github.com/marcj/deepkit-webpack) — Type compiler with Webpack\n- [GraphQL + ORM](https://github.com/marcus-sa/deepkit-graphql/tree/main/examples/orm-integration) — GraphQL server with ORM\n- [Remix](https://github.com/marcus-sa/deepkit-modules/tree/main/apps/example-remix) — Remix with Deepkit backend\n- [Angular SSR](https://github.com/marcus-sa/deepkit-angular-template) — Angular SSR with RPC\n\n## Contributing\n\nSee [DEVELOPMENT.md](./DEVELOPMENT.md) for setup instructions.\n\n```bash\ngit clone https://github.com/deepkit/deepkit-framework.git\ncd deepkit-framework\nnpm install\nnpm run postinstall  # Required: builds the type compiler\nnpm run build\n```\n\n## License\n\nMIT\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcj%2Fdeepkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcj%2Fdeepkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcj%2Fdeepkit/lists"}