{"_id":"@abrahambass/nova","_rev":"5-a4d77e9041ca53fefab0217d1f5d36e7","name":"@abrahambass/nova","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.1":{"name":"@abrahambass/nova","version":"0.1.1","license":"MIT","_id":"@abrahambass/nova@0.1.1","maintainers":[{"name":"abrahambass","email":"abrixa12@gmail.com"}],"dist":{"shasum":"ec524574350c49397c0dd85034ff4e9e124be539","tarball":"https://registry.npmjs.org/@abrahambass/nova/-/nova-0.1.1.tgz","fileCount":98,"integrity":"sha512-67/DIeAAuw8rpOdihaQGHn9MrEUEBwbf6WPAaoQiBzjLjiXNBgCpvGMEQcXLwpaxbKy4G6VP8Qh2i0A85vU9wQ==","signatures":[{"sig":"MEUCIDMwyxpV3CToPGU5ChTFCT4QjhklwuIQBtPYxMw/56A/AiEAqchFjefHUQ4/m5DyGH3fM+VrLXYCW6o8EGJlu5OHT/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102504},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"b6bc524c2dabf34b605ff16073bba4a6fb0b765c","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"abrahambass","email":"abrixa12@gmail.com"},"_npmVersion":"9.9.4","description":"Decorator-based HTTP framework on top of Fastify","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ajv":"^8.18.0","ret":"^0.5.0","zod":"^4.3.6","pino":"^10.3.1","rfdc":"^1.4.1","uuid":"^13.0.0","avvio":"^9.2.0","fastq":"^1.20.1","cookie":"^1.1.1","dequal":"^2.0.3","semver":"^7.7.4","split2":"^4.2.0","fastify":"^5.7.4","reusify":"^1.1.0","fast-uri":"^3.1.0","fs-extra":"^11.3.3","commander":"^14.0.3","inversify":"^7.11.0","ipaddr.js":"^2.3.0","sonic-boom":"^4.2.1","toad-cache":"^3.7.0","ajv-formats":"^3.0.1","find-my-way":"^9.4.0","safe-regex2":"^5.0.0","@fastify/jwt":"^10.0.0","atomic-sleep":"^1.0.0","real-require":"^0.2.0","@fastify/cors":"^11.2.0","thread-stream":"^4.0.0","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/static":"^9.0.0","fast-deep-equal":"^3.1.3","process-warning":"^5.0.0","@fastify/swagger":"^9.7.0","abstract-logging":"^2.0.1","fast-querystring":"^1.1.2","light-my-request":"^6.6.0","reflect-metadata":"^0.2.2","@fastify/compress":"^8.3.1","@fastify/formbody":"^8.0.2","on-exit-leak-free":"^2.1.2","secure-json-parse":"^4.1.0","set-cookie-parser":"^2.7.2","@fastify/multipart":"^9.4.0","zod-to-json-schema":"^3.25.1","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","fast-json-stringify":"^6.3.0","require-from-string":"^2.0.2","json-schema-traverse":"^1.0.0","pino-std-serializers":"^7.1.0","safe-stable-stringify":"^2.5.0","quick-format-unescaped":"^4.0.4","pino-abstract-transport":"^3.0.0","@fastify/csrf-protection":"^7.1.0","json-schema-ref-resolver":"^3.0.0","fast-decode-uri-component":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.9.3","@types/node":"^25.2.3","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/nova_0.1.1_1772568956237_0.21380473236954067","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@abrahambass/nova","version":"0.1.3","description":"Decorator-based HTTP framework on top of Fastify","main":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"dependencies":{"@fastify/compress":"^8.3.1","@fastify/cookie":"^11.0.2","@fastify/cors":"^11.2.0","@fastify/csrf-protection":"^7.1.0","@fastify/formbody":"^8.0.2","@fastify/helmet":"^13.0.2","@fastify/jwt":"^10.0.0","@fastify/multipart":"^9.4.0","@fastify/rate-limit":"^10.3.0","@fastify/static":"^9.0.0","@fastify/swagger":"^9.7.0","@fastify/swagger-ui":"^5.2.5","abstract-logging":"^2.0.1","ajv":"^8.18.0","ajv-formats":"^3.0.1","atomic-sleep":"^1.0.0","avvio":"^9.2.0","commander":"^14.0.3","cookie":"^1.1.1","dequal":"^2.0.3","fast-decode-uri-component":"^1.0.1","fast-deep-equal":"^3.1.3","fast-json-stringify":"^6.3.0","fast-querystring":"^1.1.2","fast-uri":"^3.1.0","fastify":"^5.7.4","fastq":"^1.20.1","find-my-way":"^9.4.0","fs-extra":"^11.3.3","inversify":"^7.11.0","ipaddr.js":"^2.3.0","json-schema-ref-resolver":"^3.0.0","json-schema-traverse":"^1.0.0","light-my-request":"^6.6.0","on-exit-leak-free":"^2.1.2","pino":"^10.3.1","pino-abstract-transport":"^3.0.0","pino-std-serializers":"^7.1.0","process-warning":"^5.0.0","quick-format-unescaped":"^4.0.4","real-require":"^0.2.0","reflect-metadata":"^0.2.2","require-from-string":"^2.0.2","ret":"^0.5.0","reusify":"^1.1.0","rfdc":"^1.4.1","safe-regex2":"^5.0.0","safe-stable-stringify":"^2.5.0","secure-json-parse":"^4.1.0","semver":"^7.7.4","set-cookie-parser":"^2.7.2","sonic-boom":"^4.2.1","split2":"^4.2.0","thread-stream":"^4.0.0","toad-cache":"^3.7.0","uuid":"^13.0.0","zod":"^4.3.6","zod-to-json-schema":"^3.25.1"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^25.2.3","ts-node":"^10.9.2","typescript":"^5.9.3"},"scripts":{"build":"tsc","prepublishOnly":"npm run build"},"license":"MIT","_id":"@abrahambass/nova@0.1.3","gitHead":"57c38c062fe490deb04d31b365f116192aa01e2f","_nodeVersion":"24.12.0","_npmVersion":"9.9.4","dist":{"integrity":"sha512-kwSskWzoyLddNCQrKCMEqe6S9GZe8obnIIMgIdP0osrYlvTxk4YNi30DIBxsUA6mRMDfKC2Z8SUhBlxl9Ju77w==","shasum":"d41114fcbb8ae51ea1befa00a084be517166f1d6","tarball":"https://registry.npmjs.org/@abrahambass/nova/-/nova-0.1.3.tgz","fileCount":102,"unpackedSize":131964,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFU7jBEo3ZFp4OLLhnFhvd3cHzrNQd6PQcyrt5Uq4DkDAiA2oxdmhmyYwdVO4jrekWb94UEQEpfxBiRJBkY4jQDlXQ=="}]},"_npmUser":{"name":"abrahambass","email":"abrixa12@gmail.com"},"directories":{},"maintainers":[{"name":"abrahambass","email":"abrixa12@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nova_0.1.3_1772932492262_0.30052800217708686"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-03T20:15:56.115Z","modified":"2026-03-08T01:14:52.534Z","0.1.0":"2026-03-02T23:13:13.687Z","0.1.1":"2026-03-03T20:15:56.373Z","0.1.3":"2026-03-08T01:14:52.431Z"},"license":"MIT","description":"Decorator-based HTTP framework on top of Fastify","maintainers":[{"name":"abrahambass","email":"abrixa12@gmail.com"}],"readme":"# Nova — Fastify-based API Framework\r\n\r\n> A modern framework for building structured and type-safe APIs on top of Fastify, using decorators and Zod validation.\r\n\r\n[🌐 Full Documentation »](https://novadoc.pages.dev/)\r\n\r\n---\r\n\r\n## What is Nova?\r\n\r\nNova is a Node.js framework built on top of Fastify that provides:\r\n\r\n- **Decorators** for defining controllers and routes.\r\n- **Zod schemas** for runtime validation with static type inference.\r\n- **Modular architecture** aligned with clean design principles.\r\n- **Simple bootstrap process** via `NovaFactory`.\r\n\r\nNova abstracts repetitive Fastify setup while preserving performance and flexibility.\r\n\r\n---\r\n\r\n## Installation\r\n\r\n### CLI (recommended)\r\n\r\n```bash\r\nnpm i -g @abrahambass/nova-cli\r\nnova create my-app\r\ncd my-app\r\nnpm install\r\nnpm run dev\r\n```\r\n\r\n### Manual installation\r\n\r\n```bash\r\nnpm install @abrahambass/nova reflect-metadata zod\r\n```\r\n\r\n---\r\n\r\n## Minimal Example\r\n\r\n```ts\r\nimport 'reflect-metadata';\r\nimport { NovaFactory, Controller, Get, Post, Body, Path } from '@abrahambass/nova';\r\nimport { z } from 'zod';\r\n\r\nconst CreateTaskSchema = z.object({\r\n  title: z.string().min(1),\r\n  completed: z.boolean().default(false),\r\n});\r\n\r\n@Controller('/tasks')\r\nclass TaskController {\r\n  @Get()\r\n  async getAll() {\r\n    return [{ id: 1, title: 'Learn Nova', completed: false }];\r\n  }\r\n\r\n  @Get('/:id')\r\n  async getById(@Path('id') id: number) {\r\n    return { id, title: 'Learn Nova', completed: false };\r\n  }\r\n\r\n  @Post()\r\n  async create(@Body(CreateTaskSchema) data: z.infer<typeof CreateTaskSchema>) {\r\n    return { id: 2, ...data };\r\n  }\r\n}\r\n\r\nasync function bootstrap() {\r\n  const app = await NovaFactory.create();\r\n  app.includeController(TaskController);\r\n  await app.listen(3000);\r\n}\r\n\r\nbootstrap();\r\n```\r\n\r\nThis example demonstrates:\r\n\r\n- Declarative route definitions via decorators.\r\n- Automatic request body validation using Zod.\r\n- Strong type inference inside handlers.\r\n- Direct integration with the Fastify lifecycle.\r\n\r\n---\r\n\r\n## Philosophy\r\n\r\nNova aims to balance:\r\n\r\n- Simplicity (clean developer experience).\r\n- Structure (controller-based architecture).\r\n- Performance (Fastify engine).\r\n- Strong typing with runtime validation.\r\n\r\n---\r\n\r\n## Documentation\r\n\r\nComplete documentation, advanced guides, and full API reference are available at:\r\n\r\n👉 https://novadoc.pages.dev/\r\n\r\n---\r\n\r\n## Contributing\r\n\r\n1. Open an issue describing the problem or proposal.\r\n2. Submit a pull request with clear context.\r\n3. Keep consistency with the framework’s architecture and philosophy.\r\n\r\n---\r\n\r\n## License\r\n","readmeFilename":"README.md"}