A TODO application demonstrating SOLID principles with Clean Architecture (backend) and Feature-Sliced Design (frontend).
The codebase applies SOLID principles as architectural decisions rather than isolated code patterns:
- Single Responsibility - Each layer and class has exactly one reason to change
- Open/Closed - The system extends through new modules, not by modifying existing ones
- Liskov Substitution - Parent abstractions never depend on their implementations
- Interface Segregation - Small, focused interfaces over broad ones
- Dependency Inversion - Business logic depends on abstractions, never on infrastructure
Dependencies only point inward. Each module (todo, user) is self-contained:
modules/
example/
domain/ → Entities, Value Objects, Repository interfaces
application/ → Use Cases, DTOs, Mappers
presentation/ → Controllers, Routes
infrastructure/ → PostgresTodoRepository
Dependencies only point downward:
app → pages → widgets → features → entities → shared
Backend: Node.js, TypeScript, Express, PostgreSQL Frontend: React, TypeScript, Zustand, Vite Infrastructure: Docker, Docker Compose
docker-compose up --buildFrontend served on port 5173, backend on 3001.
docker-compose -f docker-compose.prod.yml up -dFrontend and API served on port 81 through nginx.