Home

Awesome

Express Rest Api Clean Architecture

The following is a folder pattern for express rest api starterkit structure pattern that I usually use, so if you are interested in the pattern I made, you can use it if you think it's good, check this link for new update for this architecture here.

Table Of Content

What Are The Benefits ?

Folder Structure Pattern

├── tests
│   └── test.user.spec.ts
├── di
│   └── di.user.ts
├── dto
│   └── dto.user.ts
└── helpers
│   └── helper.apiResponse.ts
└── middlewares
│   └── middleware.auth.ts
└── interfaces
│   └── interface.user.ts
└── models
│   └── model.user.ts
└── controllers
│   └── controllers.user.ts
└── services
│   └── service.user.ts
└── libs
│   └── lib.jwt.ts
└── configs
│   └── pm2.config.js
└── templates
│   └── activation.template.ejs
└── databases
│   └── migrations
│   │     └── user_20210913.go // generate auto by cli using third party library
│   └── seeds
│   │     └── user_20210913.go // generate auto by cli using third party library

Folder Status And Description

Folder NameFolder StatusDescription
TestsOptionalA collection of functions used to create a series of tests or run a test, be it unit testing or integration testing, which will later be used for the application itself.
Folder NameFolder StatusDescription
ConfigsOptionalA collection of functions that contains all the configurations related to the application needs, such as .env or serverless.yml, which will later be used for the application itself.
Folder NameFolder StatusDescription
DiRequiredA collection of functions used to injected models database into services
Folder NameFolder StatusDescription
DtoRequiredA collection of functions used to handle all requests body passed from the client.
Folder NameFolder StatusDescription
HelpersOptionalA collection of functions used to create utilities for application purposes, such as customError or customResponse, which will later be used for the application itself.
Folder NameFolder StatusDescription
InterfacesOptionalA collection of functions used to definition field property for model.
Folder NameFolder StatusDescription
LibsOptionalA collection of functions that are used for the purpose of customizing a library into a separate function, which will later be used for the application itself.
Folder NameFolder StatusDescription
MiddlewaresOptionalA collection of functions that are used as a service for HTTP Requests such as authJWt, authRole, customLogger whether used per-route or used globally without the need to use them in each route, which will later be used for the application itself.
Folder NameFolder StatusDescription
ModelsRequiredA collection of functions used to represent the table structure in a database, which will later be used for the application itself.
Folder NameFolder StatusDescription
ControllersRequiredA collection of functions used to handle all requests given client, which then those requests will be used to delivery request to service, which will later be used for the application itself.
Folder NameFolder StatusDescription
RoutesRequiredA collection of endpoints or addresses from the server itself, which is used for communication lines between the client and the server, which will later be used for the application itself.
Folder NameFolder StatusDescription
ServicesRequiredA collection of functions that are used to interact with the database, which will later be used for the application itself.
Folder NameFolder StatusDescription
TemplatesOptionalA collection of functions that are used to output HTML code into emails to be used as templates, which will later be used for purposes such as activationCode or resetPassword, which will later be used for the application itself.
Folder NameFolder StatusDescription
CronsOptionalA collection of functions that are used to trigger a desired function, according to the time specified by the user, which will later be used for the application itself.
Folder NameFolder StatusDescription
DatabasesrequiredA collection of functions used to create migrations or seeds for the database, which will later be used for the application itself.

Command

<p align="right" style="padding: 5px; border-radius: 100%; background-color: red; font-size: 2rem;"> <b><a href="#express-rest-api-clean-architecture">BACK TO TOP</a></b> </p>