 
βΉοΈ About β’ π Features β’ π€ Contributing β’ π£οΈ Roadmap β’ π― Credits β’ π© License
The main goal of this project is to provide a base template for the generation of a production-ready REST API made with Node.js, Express and Typescript. The idea is to avoid having to configure all the tools involved in a project every time it is started and thus be able to focus on the definition and implementation of the business logic.
π£ This is an opinionated template. The architecture of the code base and the configuration of the different tools used has been based on best practices and personal preferences.
- 
Install dependencies: npm install # or make install
- 
Start database container: make start/db 
- 
Start cache container: make start/cache 
- 
Generate Prisma Client: npm run prisma:generate 
- 
Start project in development mode: npm run dev 
- 
Start project in production mode: npm run start 
- 
Open the following URL to interact with the API using Swagger UI: http://localhost:5000/api/docs # Sample username and password: janedoe / 123456
- Built using Typescript
- Built using Express Framework: Fast, unopinionated, minimalist web framework for node.
- Built using Prisma: Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite & MongoDB
- Built using Ts.ED: Ts.ED is a Node.js Framework on top of Express/Koa.js. Written in Typescript, it helps you build your server-side application easily and quickly. If you want to start a complete out-of-the-box project or fully customize it yourself, Ts.ED will guide you there!
- JWT authentication and role based authorization using custom middleware
- OpenAPI definition
- Fully configured logger with Pino
- Unit, Integration and E2E tests using Jest and Supertest
- Linting with ESLint
- Formatting with Prettier
- Spell check
- Git hooks with Husky and lint-staged
- Containerised using Docker and Docker Compose
- Path aliases support
- Commit messages must meet conventional commits format
- GitHub Actions
- Makefile as project entrypoint
- PostgreSQL as database
- Redis as cache engine
- A lot of emojis πΈ
The main actions on this project are managed using a Makefile as an entrypoint.
Usage: make TARGET [ARGUMENTS]
Targets:
  build/docker              Build Docker image of the application
  clean/docker              Clean all container resources
  help                      Show this help
  install                   Install the project
  logs                      Show logs for all or c=<name> containers
  requirements              Check if the requirements are satisfied
  start                     Start application in development mode
  start/docker              Start application in a Docker container
  start/docker/cache        Start cache container
  start/docker/db           Start database container
  stop/docker               Stop application running in a Docker container
  stop/docker/cache         Stop cache container
  stop/docker/db            Stop database containerpackage.json scripts:
- dev: Start project in development mode
- build: Build project and generate final build
- start: Start project in production mode
- check:types: Check if project types are correct
- check:format: Check if project is formatted correctly
- check:lint: Check if project is linted correctly
- check:packagejson: Check if project package.json is correct
- check:markdown: Check if markdown files are correct
- check:spelling: Check if project is spelled correctly
- fix:format: Fix project format issues
- fix:lint: Fix project lint issues
- fix:staged: Check and fix staged files
- test: Run all tests
- test:unit: Run unit tests
- test:int: Run integration tests
- test:e2e: Run e2e tests
- test:watch: Run tests in watch mode
- test:coverage: Run tests with coverage
- coverage:view: Show coverage information
- commit: Help to commit changes using conventional commits
- version: Generate new project version
- reset-hard: Reset git repository to a clean state
- prepare-release: Prepare the project for a release and generates a new release
- update-deps: Update the project dependencies
Just fork and open a pull request. All contributions are welcome π€
Please, check TODO for the current roadmap.
To implement this project I have based myself on many similar projects. There were countless of them and I gave them all a star.
π Thank you very much for these wonderful creations.