{"id":28898834,"url":"https://github.com/rhinolabs/boilr","last_synced_at":"2026-05-15T18:06:08.005Z","repository":{"id":294541768,"uuid":"987156147","full_name":"rhinolabs/boilr","owner":"rhinolabs","description":"Convention-based framework for building type-safe Fastify APIs with file-based routing","archived":false,"fork":false,"pushed_at":"2026-03-24T20:30:28.000Z","size":594,"stargazers_count":5,"open_issues_count":3,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-07T10:06:27.001Z","etag":null,"topics":["api","fastify","file-routing","framework","typescript","zero-config"],"latest_commit_sha":null,"homepage":"https://boilrjs.dev","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/rhinolabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2025-05-20T16:53:01.000Z","updated_at":"2026-03-24T20:30:32.000Z","dependencies_parsed_at":"2025-08-28T19:13:06.675Z","dependency_job_id":"1395e1dc-ac83-49ce-8496-8e0406b988e4","html_url":"https://github.com/rhinolabs/boilr","commit_stats":null,"previous_names":["rhinolabs/boilr"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/rhinolabs/boilr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhinolabs%2Fboilr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhinolabs%2Fboilr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhinolabs%2Fboilr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhinolabs%2Fboilr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhinolabs","download_url":"https://codeload.github.com/rhinolabs/boilr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhinolabs%2Fboilr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33074418,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"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","fastify","file-routing","framework","typescript","zero-config"],"created_at":"2025-06-21T08:00:29.806Z","updated_at":"2026-05-15T18:06:07.993Z","avatar_url":"https://github.com/rhinolabs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @boilrjs/core\n\nA convention-based web framework built on top of Fastify, designed to streamline API development through standardized patterns and built-in features. Developed by Rhinolabs Agency, it follows a \"batteries included\" philosophy while maintaining the performance benefits of the underlying Fastify engine.\n\n## Monorepo Structure\n\nThis project is structured as a monorepo using pnpm workspaces:\n\n- **`packages/boilr`** - Core framework package (`@boilrjs/core`)  \n  The main BoilrJs framework that provides convention-based routing, configuration, and plugin management around Fastify.\n\n- **`packages/cli`** - Command-line interface (`@boilrjs/cli`)  \n  Tools for creating new projects, development server with hot-reload, building, and running BoilrJs applications.\n\n- **`packages/typescript-example`** - Example application  \n  A complete Todo CRUD API demonstrating Boilr's key features including type-safe validation and automatic documentation.\n\n## Overview\n\nBoilrJs simplifies building TypeScript APIs with Fastify by providing:\n\n- **Convention-based file routing** with Next.js-style patterns\n- **Integrated schema validation** using Zod with automatic type inference\n- **Automatic OpenAPI documentation** generation from Zod schemas with error response schemas\n- **Built-in error handling** with comprehensive exception classes and automatic HTTP status codes\n- **Preconfigured security and performance optimizations** (CORS, Helmet, Rate limiting)\n- **Developer-friendly tooling** for rapid development and deployment\n- **TypeScript support** with full type inference and safety\n\n## Getting Started\n\nThe fastest way to start using BoilrJs is with the CLI:\n\n```bash\n# Install the CLI globally\nnpm install -g @boilrjs/cli\n\n# Create a new project\nboilrjs new my-api-project\n\n# Move to the project directory\ncd my-api-project\n\n# Install dependencies\nnpm install\n\n# Start development server with hot-reload\nnpm run dev\n```\n\nFor more detailed instructions, check the documentation for each package:\n\n- [`@boilrjs/core`](packages/core/README.md) - Core framework with routing and validation\n- [`@boilrjs/cli`](./packages/cli/README.md) - Command-line development tools\n- [Example Application](./packages/typescript-example/README.md) - Complete Todo API sample\n\n## Key Features\n\n### 📁 Convention-Based File Routing\n\nRoutes are automatically created based on your file structure following Next.js conventions:\n\n```\nroutes/\n├── api/\n│   ├── users/\n│   │   ├── [id].ts       → GET/PUT/DELETE /api/users/:id\n│   │   └── index.ts      → GET/POST /api/users\n│   └── index.ts          → GET /api\n├── (admin)/              → Group routes without affecting URL structure\n│   └── settings.ts       → GET /settings\n└── [...catchAll].ts      → Wildcard route handling\n```\n\n### 🔍 Type-Safe Schema Validation\n\nDefine schemas and handlers with full TypeScript type safety using Zod:\n\n```typescript\n// routes/api/users/[id].ts\nimport { z } from \"zod\";\nimport {\n  type GetHandler,\n  defineSchema,\n  NotFoundException,\n} from \"@boilrjs/core\";\n\nexport const schema = defineSchema({\n  get: {\n    params: z.object({\n      id: z.string().transform(val =\u003e parseInt(val, 10))\n    }),\n    response: {\n      200: z.object({\n        id: z.number(),\n        name: z.string(),\n        email: z.string().email()\n      })\n    }\n  }\n});\n\nexport const get: GetHandler\u003ctypeof schema\u003e = async (request) =\u003e {\n  const { id } = request.params; // Automatically typed as number\n  \n  const user = await getUserById(id);\n  \n  if (!user) {\n    throw new NotFoundException(`User with id ${id} not found`);\n  }\n  \n  return user; // Return type automatically validated\n};\n```\n\n### 🚨 Error Handling\n\nBuilt-in HTTP exception classes with automatic error formatting and validation:\n\n```typescript\nimport { NotFoundException, ValidationException } from \"@boilrjs/core\";\n\n// Throw structured HTTP exceptions\nthrow new NotFoundException('User not found');\n\n// Handle validation errors automatically\nthrow new ValidationException('Invalid data', validationErrors);\n```\n\n### 🔐 Authentication System\n\nFlexible multi-method authentication with automatic token extraction:\n\n```typescript\n// Configure authentication methods\nconst app = createApp({\n  auth: {\n    methods: [\n      {\n        name: 'jwt',\n        type: 'bearer', // Auto-extracts Bearer token\n        validator: async (request, token) =\u003e {\n          const user = await verifyJwtToken(token);\n          return { user };\n        }\n      }\n    ]\n  }\n});\n\n// Apply to routes selectively\nexport const schema = defineSchema({\n  get: {\n    auth: ['jwt'], // or auth: true, or auth: false\n    response: { 200: UserSchema }\n  }\n});\n```\n\n### 📚 Automatic API Documentation\n\nYour OpenAPI/Swagger documentation is automatically generated from your Zod schemas, including automatic error response schemas:\n\n```typescript\n// server.ts\nimport { createApp } from '@boilrjs/core';\n\nconst app = createApp({\n  server: {\n    port: 3000\n  },\n  plugins: {\n    swagger: {\n      info: {\n        title: 'My API',\n        description: 'API built with Boilr',\n        version: '1.0.0'\n      }\n    }\n  }\n});\n\napp.start(); // Documentation available at /docs\n```\n\n### 🛠️ Developer Experience\n\nPowerful CLI tools for seamless development workflow:\n\n```bash\n# Create a new project with TypeScript template\nboilrjs new my-api-project\n\n# Start development server with hot-reload\nboilrjs dev\n\n# Build optimized production bundle\nboilrjs build\n\n# Start production server\nboilrjs start\n```\n\n## Architecture\n\nThe framework leverages modern TypeScript features and provides:\n\n- **Modular plugin system** - Extend functionality through Fastify's plugin ecosystem\n- **Convention over configuration** - Sensible defaults with customization options\n- **Performance focused** - Built on Fastify's high-performance foundation\n- **Developer friendly** - Hot-reload, automatic documentation, type safety\n\n## Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/rhinolabs/boilr.git\ncd core\n\n# Install dependencies\npnpm install\n\n# Build all packages\npnpm build\n\n# Run development mode (watch all packages)\npnpm dev\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhinolabs%2Fboilr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhinolabs%2Fboilr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhinolabs%2Fboilr/lists"}