Complete project template for building RESTful API with Typescript.
Complete project template for building RESTful API with Typescript
Report Bug
·
Request Feature
Building project with standardized structure could save much our time. We could focus on business process without considering too much on project structure. On the other hand, a good project structure should be clean, nice refactored, and easy to maintain.
Here's why:
Of course, no one template will serve all projects since your needs may be different. So I'll be adding more in the near future. You may also suggest changes by forking this repo and creating a pull request or opening an issue. Thanks to all the people have contributed to expanding this project template!
This project structure is built using
├── .husky/ # Pre-commit config for lint staged
├── docs/ # Swagger API docs
├── src/ # All application source
├──── @types/ # Type definition for modules
|
├──── api/
├────── controllers/ # Define all controllers
├────── middlewares/ # Define all middlewares
├────── models/ # Define all sequelize models
├────── repositories/ # Define all repositories
├────── routes/
├──────── v1/ # Define all v1 routes
├────── services/ # Define all services
├────── types/ # Define all input types
|
├──── config/
├────── appConfig.ts # Define app configuration
|
├──── constants/ # Define all constants
├──── database/ # Define database connection and sync tables
├──── utils/ # Define reusable libs
├──── server.ts # Create express config
├──── index.ts # ENTRYPOINT - Start server
|
└── ...
To start project, just clone this repo or Use this template
Before installation, make sure you have the following prerequisites
npm install npm@latest -g
git clone https://github.com/arifintahu/project-structure-api.git
npm ci
.env
file in main directory.env.example
npm run build
npm run sync-db
npm run start
localhost:3001/docs/v1
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
git checkout -b feature/feature-name
)git commit -m 'Add some feature-name'
)git push origin feature/feature-name
)