Node app architecture

The Node app generated by ImagineAI follows the 3-layer architecture outlined in https://www.codementor.io/@evanbechtol/node-service-oriented-architecture-12vjt9zs9i and https://dev.to/santypk4/bulletproof-node-js-project-architecture-4epf. The app architecture and code structure vary slightly based on the API format selected during code generation, and have been summrized accordingly below.



REST

Code structure

.
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ jsconfig.json
โ”œโ”€โ”€ nginx
โ”‚ย ย  โ”œโ”€โ”€ Dockerfile
โ”‚ย ย  โ””โ”€โ”€ default.conf
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ src
โ”œโ”€โ”€ config
โ”‚ย ย  โ””โ”€โ”€ index.js
โ”œโ”€โ”€ data
โ”‚ย ย  โ”œโ”€โ”€ models
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.model.js
โ”‚ย ย  โ””โ”€โ”€ repositories
โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ””โ”€โ”€ todo.repository.js
โ”œโ”€โ”€ server
โ”‚ย ย  โ”œโ”€โ”€ app.js
โ”‚ย ย  โ”œโ”€โ”€ controllers
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.controller.js
โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”œโ”€โ”€ middlewares
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ errorHandler.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ initResLocalsHandler.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ methodNotAllowedHandler.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ pageNotFoundHandler.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ responseHandler.js
โ”‚ย ย  โ”œโ”€โ”€ routes
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ adminbro.route.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.route.js
โ”‚ย ย  โ”œโ”€โ”€ services
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.service.js
โ”‚ย ย  โ”œโ”€โ”€ swagger.js
โ”‚ย ย  โ”œโ”€โ”€ utils
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ constants
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ errors.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ errors
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ BadRequest.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ BaseError.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Forbidden.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ MethodNotAllowed.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ NotAcceptable.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ NotFound.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Throttled.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Unauthorized.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ UnsupportedMediaType.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ functions.js
โ”‚ย ย  โ””โ”€โ”€ validations
โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ””โ”€โ”€ todo.validation.js
โ””โ”€โ”€ tests
โ”œโ”€โ”€ factories
โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ””โ”€โ”€ todo.factory.js
โ”œโ”€โ”€ todo.test.js
โ””โ”€โ”€ utils.js


GraphQL

Code structure

.
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ jsconfig.json
โ”œโ”€โ”€ nginx
โ”‚ย ย  โ”œโ”€โ”€ Dockerfile
โ”‚ย ย  โ””โ”€โ”€ default.conf
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ src
โ”œโ”€โ”€ config
โ”‚ย ย  โ””โ”€โ”€ index.js
โ”œโ”€โ”€ data
โ”‚ย ย  โ”œโ”€โ”€ models
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.model.js
โ”‚ย ย  โ””โ”€โ”€ repositories
โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ””โ”€โ”€ todo.repository.js
โ”œโ”€โ”€ server
โ”‚ย ย  โ”œโ”€โ”€ app.js
โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”œโ”€โ”€ middlewares
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ errorHandler.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ initResLocalsHandler.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ methodNotAllowedHandler.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ pageNotFoundHandler.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ responseHandler.js
โ”‚ย ย  โ”œโ”€โ”€ routes
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ adminbro.route.js
โ”‚ย ย  โ”œโ”€โ”€ schema
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ mutation
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.mutation.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ query
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.query.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ schema.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ types.js
โ”‚ย ย  โ”œโ”€โ”€ services
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ todo.service.js
โ”‚ย ย  โ””โ”€โ”€ utils
โ”‚ย ย  โ”œโ”€โ”€ constants
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ errors.js
โ”‚ย ย  โ”œโ”€โ”€ errors
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ BadRequest.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ BaseError.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Forbidden.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ MethodNotAllowed.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ NotAcceptable.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ NotFound.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Throttled.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Unauthorized.js
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ UnsupportedMediaType.js
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ index.js
โ”‚ย ย  โ””โ”€โ”€ functions.js
โ””โ”€โ”€ tests
โ”œโ”€โ”€ factories
โ”‚ย ย  โ”œโ”€โ”€ index.js
โ”‚ย ย  โ””โ”€โ”€ todo.factory.js
โ”œโ”€โ”€ todo.test.js
โ””โ”€โ”€ utils.js