{"id":20196522,"url":"https://github.com/endalk200/nestxcelerator-mon","last_synced_at":"2025-06-11T05:07:33.712Z","repository":{"id":252508401,"uuid":"840628373","full_name":"endalk200/NestXcelerator-mon","owner":"endalk200","description":"Nestjs full backend monolith kickstarter containing all sensible defaults and following best practices for each implementation.","archived":false,"fork":false,"pushed_at":"2025-05-15T15:03:29.000Z","size":1524,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T17:27:17.406Z","etag":null,"topics":["backend-api","boilerplate","boilerplate-template","kickstart","kickstarter","nestjs","nodejs","starter-kit","starter-template","ts-rest","typescript"],"latest_commit_sha":null,"homepage":"","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/endalk200.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":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-10T07:43:38.000Z","updated_at":"2024-12-25T16:59:23.000Z","dependencies_parsed_at":"2025-04-10T10:43:36.978Z","dependency_job_id":"34fc4db1-59ca-4de0-987d-e104dba602d8","html_url":"https://github.com/endalk200/NestXcelerator-mon","commit_stats":null,"previous_names":["endalk200/nest-monolith","endalk200/nestxcelerator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endalk200%2FNestXcelerator-mon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endalk200%2FNestXcelerator-mon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endalk200%2FNestXcelerator-mon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endalk200%2FNestXcelerator-mon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/endalk200","download_url":"https://codeload.github.com/endalk200/NestXcelerator-mon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endalk200%2FNestXcelerator-mon/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":258695189,"owners_count":22742667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["backend-api","boilerplate","boilerplate-template","kickstart","kickstarter","nestjs","nodejs","starter-kit","starter-template","ts-rest","typescript"],"created_at":"2024-11-14T04:24:34.229Z","updated_at":"2025-06-11T05:07:33.693Z","avatar_url":"https://github.com/endalk200.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NestXcelerator\n\nWelcome to NestXcelerator, a powerful and flexible NestJS starter template designed to kickstart your backend monolith projects.\nNestXcelerator provides a solid foundation equipped with all the essential features and best practices to ensure scalability, maintainability, and developer happiness.\n\n## Motivation\n\n\u003e [!NOTE]\n\u003e Internal Developer Platforms (IDPs) are tools that help teams within a company build and manage software more easily.\n\u003e Think of them as a one-stop shop for developers, providing everything they need to write, test, and deploy their applications.\n\u003e IDPs automate many tasks, making it faster and simpler for developers to work without getting bogged down in complicated processes.\n\u003e This boosts productivity and helps teams deliver better software more consistently.\n\nThe concept of [internal developer platform (IDP)](https://internaldeveloperplatform.org/) is something I am really interested in for a while. This projects is meant to server as template for an IDP I'm building.\nThis template project will be used in the IDP to quickly kickstart backend projects with sensible defaults and best practices thus boosting developer productivity.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Technologies](#technologies)\n- [Getting Started](#getting-started)\n- [Documentation](./docs/README.md)\n  - [API Design and Implementation Workflow](./docs/api-design.md)\n  - [Database Design and Implementation Workflow](./docs/db-design.md)\n  - [Security Considerations](./docs/security.md)\n  - [Deployment Guide](./docs/deployment-guide.md)\n- [Features](#features)\n- [License](./LICENSE)\n- [Contributors](#contributors)\n- [Maintainers](#maintainers)\n\n## Technologies\n\n- [Typescript](https://github.com/microsoft/TypeScript): Offers type safety when building backend APIs in nodejs\n- [NestJs](https://github.com/nestjs/nest): Provides best in class developer experience building backend APIs using nodejs\n- [Prisma](https://github.com/prisma/prisma): Database ORM\n- [ts-rest](https://github.com/ts-rest/ts-rest): Provides excellent developer experience by empowering you to build fuly type safe API endpoints utilizing api contracts\n- [Postgres](https://github.com/postgres/postgres): a powerful, open source object-relational database system with over 35 years of active development that has earned\n  it a strong reputation for reliability, feature robustness, and performance.\n- [React Email](https://react.email/docs/introduction): For building email templates\n- [Resend](https://resend.com): For sending emails\n\n## Getting Started\n\nInstall all dependencies\n\n```bash\nnpm install\n```\n\nIn order for the authentication endpoints to work, generate public/private key pair which will be used for generating and verifying JWTs.\n\n```bash\n# Generate private key using P-256 curve\nopenssl ecparam -genkey -name prime256v1 -noout -out ec-private.pem\n\n# Generate corresponding public key\nopenssl ec -in ec-private.pem -pubout -out ec-public.pem\n```\n\n## Features\n\n**General**\n\n- [x] API\n  - [x] Health check endpoints checking HTTP, memory health (rss and heap) and prisma database connection\n  - [x] Open API spec v3 support and UI using swagger\n  - [x] Typesafe API contract\n  - [x] Client SDK supporting `fetch` and `react-query`\n- [ ] Email integration\n  - [x] Email template support using `react-email`\n  - [x] Email service integration:\n    - [x] Resend\n    - [ ] SendGrid\n    - [ ] MailGun\n    - [ ] AWS SES\n- [ ] File upload using uploadthing\n\n**Database**\n\n- [x] Database support\n  - [x] Postgres\n  - [ ] MySQL\n- [x] ORM\n  - [x] Prisma\n  - [ ] Drizzle\n\n**Security**\n\n- [x] JWT based authentication. `accessToken` is secured by using `ES256` hashing via private public key pair.\n      (`ES256` is an Elliptic Curve Digital Signature Algorithm (ECDSA) that uses the P-256 curve and SHA-256 hash function.)\n- [x] Authentication guard verifying JWT expiration, issuer and audience for maximum security\n- [x] Authorization guard that implements Role Based Access Conrtol (RBAC)\n- [x] Securely stored password hashed using Blowfish cipher hashing algorithim.\n- [x] Issued refresh token is unique to the device and is stored securely\n- [x] Refresh token functionality while revoking used refresh token for one time use refresh tokens.\n- [x] Active session management including revokation.\n- [x] Rate limitter integration. Configured for:\n  - [x] Email verification endpoint\n  - [x] Password resent endpoint\n- [x] Password reset functionality\n\n**Deployment**\n\n- [x] Production ready dockerfile\n  - [x] Multi stage build for small docker image\n  - [x] Health check mechanisim for monitoring\n- [x] CI/CD\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.\n\n## Contributing\n\nWe welcome contributions! Please fork the repository, create a feature branch, and submit a pull request.\n\n## Maintainers\n\nThis module is maintained by [Endalkachew Biruk](https://github.com/endalk200).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendalk200%2Fnestxcelerator-mon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fendalk200%2Fnestxcelerator-mon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendalk200%2Fnestxcelerator-mon/lists"}