Projeto | Tecnologias | Como executar | Licença
Este projeto é uma API que se destaca por sua arquitetura bem definida e altamente modular. Incorporando as práticas de Desenvolvimento Orientado a Testes (TDD), busca assegurar a robustez e confiabilidade do código. A implementação segue os princípios fundamentais do SOLID, facilitando a manutenção e extensibilidade do sistema. A estrutura baseada em Clean Architecture proporciona uma distribuição clara de responsabilidades entre as diversas camadas, promovendo a separação de preocupações e garantindo uma maior flexibilidade na evolução do código. Além disso, a aplicação inteligente e criteriosa de Padrões de Projeto (Design Patterns) potencializa a solução de desafios recorrentes, resultando em um sistema mais escalável e eficiente.
Esse projeto foi desenvolvido com as seguintes tecnologias:
- NodeJS
- Typescript
- Express
- Jest
- MongoDb
- Bcrypt
- JsonWebToken
- Faker
- Supertest
- Husky
- Lint Staged
- Eslint
- Sucrase
- 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
- Factory
- Adapter
- Composite
- Decorator
- Proxy
- Dependency Injection
- Abstract Server
- Composition Root
- Builder
- Singleton
- TDD
- Clean Architecture
- DDD
- Conventional Commits
- GitFlow
- Modular Design
- Dependency Diagrams
- Use Cases
- Log de Erro
- Segurança (Hashing, Encryption e Encoding)
- CORS
- Middlewares
- Nível de Acesso nas Rotas (Admin, User e Anônimo)
- Testes Unitários
- Testes de Integração (API Rest)
- Cobertura de Testes
- Test Doubles
- Mocks
- Stubs
- Spies
- Fakes
- Connect e Reconnect
- Collections
- InsertOne e InserMany
- Find, FindOne e FindOneAndUpdate
- DeleteMany
- UpdateOne
- Aggregation (Match, Group, Unwind, Lookup, AddFields, Project, Sort)
- ObjectId
- Upsert e ReturnOriginal
- Push, Divide, Multiply, ArrayElemAt, Cond, Sum
- Filter, Map, Reduce, MergeObjects, ConcatArrays
- Clone o repositório
- Instale as dependências com
npm i
,yarn
oupnpm i
- Inicie a aplicação web com
npm run start
,yarn start
oupnpm run start
Agora você pode acessar as rotas em localhost:5050
utilizando o Postman ou Insomnia
Esse projeto está sob a licença GPL 3. Veja o arquivo LICENSE para mais detalhes.
Feito com ♥ por Erick Nathan durante o programa de formação NodeJs, Typescript, TDD, DDD, Clean Architecture e SOLID promovido pelo Rodrigo Manguinho