{"id":35825974,"url":"https://github.com/nevr-ts/nevr","last_synced_at":"2026-01-25T10:04:11.644Z","repository":{"id":329284305,"uuid":"1118908154","full_name":"nevr-ts/nevr","owner":"nevr-ts","description":"The Entity-First Full Stack Framework for TypeScript. Stop gluing libraries together Nevr provides a cohesive, type-safe architecture where your Entity is the single source of truth","archived":false,"fork":false,"pushed_at":"2026-01-09T12:05:52.000Z","size":3992,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-13T21:22:38.477Z","etag":null,"topics":["api","backend","express","hono","nodejs","prisma","rest-api","typescript"],"latest_commit_sha":null,"homepage":"https://nevr-ts.github.io/nevr/","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/nevr-ts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":["yab8702"]}},"created_at":"2025-12-18T13:05:05.000Z","updated_at":"2026-01-10T09:32:40.000Z","dependencies_parsed_at":"2026-01-08T20:07:27.674Z","dependency_job_id":null,"html_url":"https://github.com/nevr-ts/nevr","commit_stats":null,"previous_names":["zapi-ts/zapi"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/nevr-ts/nevr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevr-ts%2Fnevr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevr-ts%2Fnevr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevr-ts%2Fnevr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevr-ts%2Fnevr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nevr-ts","download_url":"https://codeload.github.com/nevr-ts/nevr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nevr-ts%2Fnevr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28751092,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T09:58:17.166Z","status":"ssl_error","status_checked_at":"2026-01-25T09:55:56.104Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["api","backend","express","hono","nodejs","prisma","rest-api","typescript"],"created_at":"2026-01-07T20:14:12.064Z","updated_at":"2026-01-25T10:04:11.638Z","avatar_url":"https://github.com/nevr-ts.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/docs/public/nevr_pp.png\" alt=\"Nevr Logo\" width=\"120\" height=\"120\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e⚡ Nevr\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eThe Full-Stack TypeScript Framework That Makes Backend Development Fun Again\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/nevr-ts/nevr\"\u003e\u003cimg src=\"https://img.shields.io/badge/status-beta-orange.svg\" alt=\"Beta\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nevr-ts/nevr/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/nevr-ts/nevr/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/nevr\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/nevr.svg?color=blue\" alt=\"npm version\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-quick-start\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"#-why-nevr\"\u003eWhy Nevr?\u003c/a\u003e •\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-documentation\"\u003eDocumentation\u003c/a\u003e •\n  \u003ca href=\"#-ecosystem\"\u003eEcosystem\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## 🎯 What is Nevr?\n\n**Nevr** is a **full-stack TypeScript framework** that eliminates boilerplate by turning your domain models into fully functional, type-safe APIs. Define your entities once—get CRUD endpoints, validation, authorization, Prisma schema, and typed clients automatically.\n\n```typescript\n// This is your entire backend for a blog post resource\nimport { entity, string, text, belongsTo } from \"nevr\"\n\nexport const post = entity(\"post\", {\n  title: string.min(1).max(200),\n  content: text,\n  author: belongsTo(() =\u003e user),\n})\n  .ownedBy(\"author\")\n  .rules({\n    create: [\"authenticated\"],\n    read: [\"everyone\"],\n    update: [\"owner\"],\n    delete: [\"owner\", \"admin\"],\n  })\n```\n\n**That's it.** You now have:\n- ✅ `POST /api/posts` — Create (validated, auth-protected)\n- ✅ `GET /api/posts` — List (filtered, sorted, paginated)\n- ✅ `GET /api/posts/:id` — Read (with relation includes)\n- ✅ `PUT /api/posts/:id` — Update (ownership enforced)\n- ✅ `DELETE /api/posts/:id` — Delete (ownership enforced)\n- ✅ Prisma schema auto-generated\n- ✅ TypeScript types inferred end-to-end\n- ✅ Type-safe client for your frontend\n\n---\n\n## 🚀 Quick Start\n\n```bash\n# Create a new project in 30 seconds\nnpm create nevr@latest my-api\ncd my-api\n\n# Generate schema and start developing\nnpm run generate\nnpm run db:push\nnpm run dev\n```\n\nYour API is live at **http://localhost:3000/api** 🎉\n\n---\n\n## 💡 Why Nevr?\n\n### The Problem\n\nBuilding backends in 2024 still feels like it's 2014:\n\n| Pain Point | Traditional Approach |\n|------------|---------------------|\n| **Boilerplate Hell** | 50-100 lines across 5+ files for one resource |\n| **Type Drift** | Frontend and backend types go out of sync |\n| **Auth Spaghetti** | Manual middleware chains, scattered ownership checks |\n| **Validation Chaos** | Duplicate logic in DB schema AND runtime |\n| **Documentation Rot** | Swagger/OpenAPI decorators that lie |\n\n### The Nevr Solution\n\n| Pain Point | Nevr Approach |\n|------------|---------------|\n| **Boilerplate Hell** | 8 lines, 1 file. Zero controllers, zero services. |\n| **Type Drift** | Build fails if entity changes—client types are inferred |\n| **Auth Spaghetti** | Declarative: `.ownedBy(\"author\")` or `.rules({...})` |\n| **Validation Chaos** | Single source of truth: `string.min(1).max(200)` |\n| **Documentation Rot** | Schema IS the documentation—always in sync |\n\n---\n\n## ✨ Features\n\n### 🏗️ Entity-First Architecture\n\nYour entities are the API. No controllers, no services, no routes.\n\n```typescript\nconst user = entity(\"user\", {\n  email: string.email().unique(),\n  name: string.min(1).max(100),\n  role: string.default(\"user\"),\n  password: string.password().omit(), // Hashed, never returned\n})\n```\n\n### 🔐 Industrial-Grade Security\n\n```typescript\n// Field-level encryption\nssn: string.encrypted(),\n\n// Automatic password hashing\npassword: string.password().omit(),\n\n// Declarative authorization\n.rules({\n  create: [\"authenticated\"],\n  update: [\"owner\", \"admin\"],\n})\n```\n\n### 🔄 Workflow Engine (Saga Pattern)\n\nHandle complex multi-step operations with automatic rollback:\n\n```typescript\nconst checkoutWorkflow = workflow(\"checkout\")\n  .step(\"reserve\", reserveInventory, cancelReservation)\n  .step(\"charge\", chargePayment, refundPayment)\n  .step(\"fulfill\", createShipment, cancelShipment)\n  .build()\n\n// If any step fails, previous steps are automatically compensated\nawait runWorkflow(checkoutWorkflow, { cartId, paymentMethod })\n```\n\n### 🧩 Plugin Ecosystem\n\n```typescript\nconst api = nevr({\n  entities: [user, post],\n  plugins: [\n    auth({\n      secret: \"\",\n      emailAndPassword: {\n        enable: true,\n        \n      },\n      socialProviders: { google: {\n        clientId: \"\",\n        clientSecret: \"\",\n        },\n        github: {\n          clientId: \"\",\n          clientSecret: \"\",\n        },\n    }),\n    timestamps(),      // Auto createdAt/updatedAt\n    storage({ s3: {} }),\n    payments({ stripe: {} }),\n  ],\n})\n```\n\n### 🔗 Remote Data Stitching\n\nJoin data across microservices without GraphQL:\n\n```typescript\nconst order = entity(\"order\", {\n  // Local fields\n  total: int,\n  // Remote relation - fetched from user-service\n    subscription: belongsTo(() =\u003e stripeSubscription).remote(\"stripe\"),\n})\n```\n\n### 📊 Service Container (Dependency Injection)\n\n```typescript\nconst emailService = createService(\"email\", () =\u003e ({\n  send: async (to, subject, body) =\u003e { /* ... */ },\n}))\n\n// Available in all hooks and workflows\nctx.services.email.send(user.email, \"Welcome!\", \"...\")\n```\n\n### 🧠 AI-Native \u0026 RAG \n\nNevr is the first framework with a **built-in RAG (Retrieval-Augmented Generation) engine**.\n\n```typescript\nconst document = entity(\"document\", {\n  content: text.embedding({ provider: \"openai\" }), // Auto-vectorized on save\n  metadata: json,\n})\n\n// Semantic Search is built-in\nconst results = await api.semanticSearch(\"document\", {\n  query: \"quarterly report\",\n  limit: 5\n})\n\n// Generate context for LLMs instantly\n// Default: markdown format\nconst context = generateContextString(api)\n\n// Compact JSON format\nconst compact = generateContextString(api, \"json\")\n\n```\n\n### 🎯 End-to-End Type Safety\n\n```typescript\n// Server\nconst api = nevr({ entities: [user, post] })\nexport type API = typeof api\n\n// Client (types inferred automatically)\nimport type { API } from \"./server\"\nconst client = createTypedClient\u003cAPI\u003e({ baseURL: \"/api\" })\n\nconst posts = await client.posts.list() // Fully typed!\n```\n\n---\n\n## 📊 The Numbers Don't Lie\n\n| Metric | Traditional (Express + Prisma + Zod) | Nevr |\n|--------|--------------------------------------|------|\n| Lines of code per resource | ~80-120 | ~10 |\n| Files per resource | 5+ | 1 |\n| Time to add a new entity | 30+ min | 2 min |\n| Type safety | Manual maintenance | Automatic |\n| Authorization logic | Scattered | Declarative |\n\n---\n\n## 🌐 Framework Agnostic\n\nNevr works with your favorite tools:\n\n```\n                    ┌─────────────────────────────────────────┐\n                    │              NEVR CORE                  │\n                    │  Entities • Validation • Authorization   │\n                    │  Workflows • Services • Remote Joiner   │\n                    └──────────────────┬──────────────────────┘\n                                       │\n        ┌──────────────────────────────┼──────────────────────────────┐\n        │                              │                              │\n        ▼                              ▼                              ▼\n   ┌─────────┐                   ┌─────────┐                   ┌───────────┐\n   │ Adapter │                   │ Driver  │                   │  Plugin   │\n   └─────────┘                   └─────────┘                   └───────────┘\n        │                              │                              │\n        ▼                              ▼                              ▼\n   • Express                      • Prisma                      • Auth\n   • Hono                         • Drizzle (soon)              • Timestamps\n   • Next.js (soon)               • Kysely (soon)               • Storage\n   • Fastify (soon)                                             • Payments\n```\n\n---\n\n## 📦 Ecosystem\n\n| Package | Description |\n|---------|-------------|\n| [`nevr`](https://www.npmjs.com/package/nevr) | Core framework |\n| [`@nevr/cli`](https://www.npmjs.com/package/@nevr/cli) | CLI for development |\n| [`nevr/generator`](https://www.npmjs.com/package/nevr/generator) | Schema \u0026 type generator |\n| [`create-nevr`](https://www.npmjs.com/package/create-nevr) | Project scaffolder |\n\n---\n\n## 📚 Documentation\n\n- **[Getting Started](docs/docs/get-started/introduction.md)** — Your first Nevr project\n- **[Entity DSL Reference](docs/docs/entities/defining.md)** — Master the entity syntax\n- **[Plugin System](docs/docs/plugins/overview.md)** — Extend Nevr with plugins\n- **[Workflows](docs/docs/actions/workflows.md)** — Build complex operations\n- **[Type Inference](docs/docs/reference/inference.md)** — End-to-end type safety\n\nRun docs locally:\n\n```bash\ncd docs\nnpm install\nnpm run docs:dev\n```\n\n---\n\n## 🗺️ Roadmap\n\n### ✅ Shipped\n- Entity DSL with full validation\n- Relations (belongsTo, hasMany, hasOne)\n- Authorization rules \u0026 ownership\n- Prisma driver\n- Express \u0026 Hono adapters\n- Auth plugin (full auth flows)\n- Organization \u0026 multi-tenancy\n- payments \u0026 storage plugins\n- Workflow engine with saga pattern\n- Service container (DI)\n- Remote data joiner\n- Field encryption \u0026 password hashing\n- CLI \u0026 project scaffolder\n- RAG \u0026 semantic search\n\n### 🚧 Coming Soon\n- **Drizzle \u0026 Kysely drivers**\n- **Next.js \u0026 Fastify adapters**\n- **Real-time subscriptions (WebSocket)**\n- **GraphQL adapter**\n- **Admin dashboard generator**\n- **Audit logging plugin**\n- more!\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n```bash\n# Clone and install\ngit clone https://github.com/nevr-ts/nevr.git\ncd nevr\nnpm install\n\n# Run tests\nnpm test\n\n# Build all packages\nnpm run build\n```\n\n---\n\n## 💬 Community\n\n- [GitHub Discussions](https://github.com/nevr-ts/nevr/discussions) — Ask questions\n- [GitHub Issues](https://github.com/nevr-ts/nevr/issues) — Report bugs\n- [Twitter](https://twitter.com/nevr_ts) — Stay updated\n\n---\n\n## 📄 License\n\n[MIT](LICENSE) © Nevr Contributors\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eStop writing boilerplate. Start shipping products.\u003c/strong\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/nevr-ts/nevr\"\u003e⭐ Star us on GitHub\u003c/a\u003e\n\u003c/p\u003e\n","funding_links":["https://github.com/sponsors/yab8702"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnevr-ts%2Fnevr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnevr-ts%2Fnevr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnevr-ts%2Fnevr/lists"}