The purpose of this application was to build a well-defined and decoupled architecture, using TDD as the working methodology, Clean Architecture to distribute responsibilities in layers, always following the principles of SOLID and, whenever possible, applying Design Patterns to solve some common problems.
- 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
- Dependency Injection
- Composition Root
- Builder
- Proxy
- TDD
- Clean Architecture
- DDD
- Reactive Programming
- Responsive Layout
- Conventional Commits
- GitFlow
- Modular Design
- Dependency Diagrams
- Use Cases
- Continuous Integration
- Continuous Delivery
- Continuous Deployment
- Typescript
- React
- Recoil
- React Testing Library
- React Router DOM
- Cypress
- Jest
- Axios
- Git
- Webpack
- SASS + Animations
- NPM
- Travis CI
- Faker
- Coveralls
- Husky
- Lint Staged
- Eslint
- Standard Javascript Style
- React Flip Move
- Functional Components
- UseState
- UseContext
- UseEffect
- UseHistory
- UseRef
- UseParams
- Custom Hooks
- UseRecoilState
- UseResetRecoilState
- UseRecoilValue
- UseRecoilSetState
- Atom
- Router
- Memo
- Advanced OOP
- Interface
- Type Alias
- Namespace
- Module
- Utility Types
- Path Modules
- Build
- Deploy
- Generics
- Unit Tests
- Integration Tests
- E2E Tests
- Test Coverage
- Test Doubles
- Mocks
- Stubs
- Spies
- Fakes
- Dummies