95 lines
2.3 KiB
Markdown
95 lines
2.3 KiB
Markdown
# Project Architecture
|
|
|
|
## Architecture Pattern
|
|
|
|
**Pattern**: [Hexagonal / Layered / Microservices / MVC / Clean / DDD]
|
|
|
|
### Core Principles
|
|
- [Principle 1]
|
|
- [Principle 2]
|
|
- [Principle 3]
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
[Your project structure here]
|
|
|
|
Example for hexagonal:
|
|
src/
|
|
├── domain/ # Business logic (no external dependencies)
|
|
│ ├── models/ # Domain models
|
|
│ ├── services/ # Business services
|
|
│ └── exceptions/ # Domain exceptions
|
|
├── ports/ # Interface definitions (contracts)
|
|
│ ├── repositories/ # Data access interfaces
|
|
│ └── providers/ # External service interfaces
|
|
├── adapters/ # External integrations
|
|
│ ├── database/ # Database implementations
|
|
│ ├── api/ # External API clients
|
|
│ └── messaging/ # Message queue adapters
|
|
└── application/ # Use case orchestration
|
|
└── usecases/ # Application use cases
|
|
```
|
|
|
|
## Key Interfaces
|
|
|
|
List the important interfaces/contracts in your system:
|
|
|
|
- **[IRepository]**: [Description]
|
|
- **[IService]**: [Description]
|
|
- **[IProvider]**: [Description]
|
|
|
|
## Architectural Decisions
|
|
|
|
Document major architectural decisions:
|
|
|
|
### Decision 1: [Title]
|
|
**Date**: [YYYY-MM-DD]
|
|
**Context**: [Why this was needed]
|
|
**Decision**: [What was decided]
|
|
**Rationale**: [Why this approach]
|
|
|
|
### Decision 2: [Title]
|
|
**Date**: [YYYY-MM-DD]
|
|
**Context**: [Why this was needed]
|
|
**Decision**: [What was decided]
|
|
**Rationale**: [Why this approach]
|
|
|
|
## Patterns & Practices
|
|
|
|
### Design Patterns Used
|
|
- **[Pattern Name]**: [Where and why used]
|
|
- **[Pattern Name]**: [Where and why used]
|
|
|
|
### Best Practices
|
|
- [Practice 1]
|
|
- [Practice 2]
|
|
- [Practice 3]
|
|
|
|
## Dependencies Flow
|
|
|
|
Describe how dependencies flow in your architecture:
|
|
|
|
```
|
|
[Dependency flow diagram or description]
|
|
|
|
Example for hexagonal:
|
|
Outside → Adapters → Ports → Domain
|
|
↑ ↓
|
|
← Application ←──────
|
|
```
|
|
|
|
## Testing Strategy
|
|
|
|
- **Unit Tests**: [What to unit test and how]
|
|
- **Integration Tests**: [Integration boundaries]
|
|
- **E2E Tests**: [End-to-end scenarios]
|
|
|
|
## Notes for Developers
|
|
|
|
Additional guidance for developers working in this codebase:
|
|
|
|
- [Important note 1]
|
|
- [Important note 2]
|
|
- [Important note 3]
|