/clean-node-api

This is an API made using TDD, Clean Architecture, Design Patterns, and SOLID, developed at the @rmanguinho 's course.

Primary LanguageTypeScriptMIT LicenseMIT

Build Status Coverage Status js-standard-style License: MIT Open Source

๐Ÿ›๏ธ Clean Node API

This is an API made using TDD, Clean Architecture, Design Patterns, and SOLID.
Explore the docs ยป

ยท Report Bug ยท Request Feature

Special thanks to Rodrigo Manguinho

๐Ÿ“š About The Project

Principles

  • Single Responsibility Principle (SRP)
  • Open Closed Principle (OCP)
  • Liskov Substitution Principle (LSP)
  • Interface Segregation Principle (ISP)
  • Dependency Inversion Principle (DIP)
  • Separation of Concerns (SOC)
  • Don't Repeat Yourself (DRY)
  • You Aren't Gonna Need It (YAGNI)
  • Keep It Simple, Silly (KISS)
  • Composition Over Inheritance
  • Small Commits

Design Patterns

  • Factory
  • Adapter
  • Composite
  • Decorator
  • Proxy
  • Dependency Injection
  • Abstract Server
  • Composition Root
  • Builder
  • Singleton

Methodologies and Designs

  • TDD
  • Clean Architecture
  • DDD
  • Conventional Commits
  • GitFlow
  • Modular Design
  • Dependency Diagrams
  • Use Cases
  • Continuous Integration
  • Continuous Delivery
  • Continuous Deployment

๐Ÿš€ Installation

  1. Clone the repo
    git clone https://github.com/lucfersan/clean-node-api
  2. Install NPM packages
    yarn

๐Ÿ”ฅ Running the app

1. If you have docker and docker-compose installed you can run:

  • Up the container
    yarn up
  • Down the container
    yarn down

2. If you don't have docker

yarn build && yarn start
  • Have a MongoDB server running

๐Ÿค Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“‘ Documentation

The documentation is made using swagger and it is available at lfs-clean-api.herokuapp.com/api-docs

๐Ÿ—ž๏ธ License

Distributed under the MIT License. See LICENSE for more information.

๐Ÿ“ง Contact

Lucas Fernandes - fernandes.lucas11@outlook.com