74 lines
3.2 KiB
Markdown
74 lines
3.2 KiB
Markdown
# AniWorld Project Overview
|
|
|
|
## 📁 Folder Structure
|
|
|
|
The project follows a modular, layered architecture inspired by MVC and Clean Architecture principles. The main directories are:
|
|
|
|
```
|
|
src/
|
|
controllers/ # API endpoints and route handlers
|
|
services/ # Business logic and orchestration
|
|
repositories/ # Data access layer (DB, external APIs)
|
|
schemas/ # Pydantic models for validation/serialization
|
|
utils/ # Utility functions and helpers
|
|
config/ # Configuration management (env, settings)
|
|
tests/
|
|
unit/ # Unit tests for core logic
|
|
integration/ # Integration tests for end-to-end scenarios
|
|
```
|
|
|
|
## 🏗️ Architecture
|
|
|
|
- **MVC & Clean Architecture:** Separation of concerns between controllers (views), services (business logic), and repositories (data access).
|
|
- **Dependency Injection:** Used for service/repository wiring, especially with FastAPI's `Depends`.
|
|
- **Event-Driven & Microservices Ready:** Modular design allows for future scaling into microservices or event-driven workflows.
|
|
- **Centralized Error Handling:** Custom exceptions and error middleware for consistent API responses.
|
|
|
|
## 🧰 Used Libraries & Frameworks
|
|
|
|
- **Python** (PEP8, PEP257, type hints)
|
|
- **FastAPI**: High-performance async web API framework
|
|
- **Pydantic**: Data validation and serialization
|
|
- **Poetry**: Dependency management and packaging
|
|
- **dotenv / os.environ**: Environment variable management
|
|
- **logging / structlog**: Structured logging
|
|
- **pytest / unittest**: Testing frameworks
|
|
- **aiohttp**: Async HTTP client (where needed)
|
|
- **SQLAlchemy / asyncpg / databases**: Database ORM and async drivers (if present)
|
|
- **Prometheus**: Metrics endpoint integration
|
|
- **Other**: As required for integrations (webhooks, third-party APIs)
|
|
|
|
## 🧩 Patterns & Conventions
|
|
|
|
- **Repository Pattern:** All data access is abstracted via repositories.
|
|
- **Service Layer:** Business logic is encapsulated in services, not controllers.
|
|
- **Pydantic Models:** Used for all input/output validation.
|
|
- **Async Endpoints:** All I/O-bound endpoints are async for scalability.
|
|
- **Environment Configuration:** All secrets/configs are loaded from `.env` or environment variables.
|
|
- **Logging:** All logs are structured and configurable.
|
|
- **Testing:** High coverage with fixtures and mocks for external dependencies.
|
|
|
|
## 🛡️ Security & Performance
|
|
|
|
- **JWT Authentication:** Secure endpoints with token-based auth.
|
|
- **Input Validation:** All user input is validated via Pydantic.
|
|
- **No Hardcoded Secrets:** All sensitive data is externalized.
|
|
- **Performance Optimization:** Async I/O, caching, and profiling tools.
|
|
|
|
## 🎨 UI & CLI
|
|
|
|
- **Theme Support:** Light/dark/auto modes.
|
|
- **Accessibility:** Screen reader, color contrast, keyboard shortcuts.
|
|
- **CLI Tool:** For bulk operations, scanning, and management.
|
|
|
|
## 📚 References
|
|
|
|
- [FastAPI Documentation](https://fastapi.tiangolo.com/)
|
|
- [Pydantic Documentation](https://docs.pydantic.dev/)
|
|
- [Poetry](https://python-poetry.org/docs/)
|
|
- [PEP 8](https://peps.python.org/pep-0008/)
|
|
- [Black Formatter](https://black.readthedocs.io/)
|
|
|
|
---
|
|
|
|
**For details on individual features and endpoints, see `features.md`.** |