Skip to content

vinicamposdev/clean-ts-api

Repository files navigation

Build Status Coverage Status

Up & Running

  1. Install local dependencies:
npm install
  1. Tests run with sufix unit or integration depending on what will be tested:
npm test:unit
npm test:integration

Scripts

Script Description
npm run start Run production server
npm run debug Run dev server
npm run build Generates production build
npm run build:watch Run unit tests in watch mode
npm run up Run container with development env
npm run down Stop containers
npm run test Run all tests
npm run test:unit Run unit tests
npm run test:integration Run integration tests
npm run test:staged Run unit and integration tests once (great to be used in CI)
npm run test:ci Run Covererage test (great to be used in CD)
npm run test:coveralls Run coveralls to publish coverage

Tree structure

This project uses Clean Architecture and some ideas from Domain Driven Desing with Object Oriented Programming.

.
├── src
│   ├── data
│   │   ├── protocols
│   │   └── usecases
│   ├── domain
│   │   ├── models
│   │   └── usecases
│   ├── infra
│   │   ├── cryptography
│   │   ├── db
│   │   └── validators
│   ├── main
│   │   ├── adapters
│   │   ├── config
│   │   ├── factories
│   │   │   └── controllers
│   │   └── server.ts
│   ├── presentation
│   └── validation
├── tests
├── jest-integration-config.js
├── jest-unit-config.js
└── jest.config.js
Directory / File Description
src All source code write in TypeScript must be in this directory
tests All test files must be in this directory
src/main/server.ts Main entry point for initial configuration of the project. Do not edit this file. Start with src/app.ts.
src/main/config/env.ts List of Environment Variables.
jest-integration-config.js Jest configuration file for integration tests
jest-unit-config.js Jest configuration file for unit tests
jest.config.js Main Jest configuration file

Important usage information

Developer workflow

From Clean Architecture recommendations, there is a layer order to develop. The rule is:

  1. Domain
  • 1.1 models
  • 1.2 usecases
  1. Data
  • 2.1 usecases
  • 2.2 protocols
  1. Infra
  • 3.1 db repositories
  • 3.2 criptography / validators
  1. Presentation
  • 4.1 controllers
  1. Validation
  2. Main
  • 6.1 routes
  • 6.2 factories controllers
  • 6.3 factories usecases
  • 6.4 adapters
  • 6.4 config

Environment Variables

Just put all your env vars on file src/main/config/env.ts.

Global import

All files and dirs inside src directory can be imported using @/. Prefer using this way over local import (../../).

License

MIT

About

NodeJs API using Typescript, TDD, DDD, Clean Architecture, Design Patterns, and SOLID principles

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •