| # Sema Translation API - Architecture Overview | |
| ## ποΈ Project Structure | |
| This FastAPI application follows industry best practices for maintainable, scalable APIs: | |
| ### Directory Structure | |
| ``` | |
| app/ | |
| βββ main.py # Application entry point & FastAPI instance | |
| βββ api/v1/endpoints.py # API route handlers (versioned) | |
| βββ core/ # Core configuration & setup | |
| β βββ config.py # Settings management | |
| β βββ logging.py # Structured logging setup | |
| β βββ metrics.py # Prometheus metrics definitions | |
| βββ middleware/ # Custom middleware | |
| β βββ request_middleware.py # Request tracking & metrics | |
| βββ models/schemas.py # Pydantic data models | |
| βββ services/translation.py # Business logic & model management | |
| βββ utils/helpers.py # Utility functions | |
| ``` | |
| ## π§ Design Principles | |
| ### 1. Separation of Concerns | |
| - **API Layer**: Route definitions and request/response handling | |
| - **Service Layer**: Business logic and model operations | |
| - **Core Layer**: Configuration, logging, and metrics | |
| - **Models Layer**: Data validation and serialization | |
| ### 2. Dependency Injection | |
| - Settings injected via Pydantic Settings | |
| - Services accessed through proper imports | |
| - Middleware applied declaratively | |
| ### 3. Configuration Management | |
| - Environment-based configuration | |
| - Type-safe settings with Pydantic | |
| - Centralized configuration in `core/config.py` | |
| ### 4. Observability | |
| - Structured JSON logging with structlog | |
| - Prometheus metrics for monitoring | |
| - Request tracking with unique IDs | |
| - Health check endpoints | |
| ## π Key Features | |
| ### Enterprise-Grade Features | |
| - **Rate Limiting**: IP-based rate limiting with SlowAPI | |
| - **Request Tracking**: Unique request IDs for debugging | |
| - **Metrics Collection**: Prometheus metrics for monitoring | |
| - **Structured Logging**: JSON logs for easy parsing | |
| - **Health Checks**: Comprehensive health monitoring | |
| ### API Design | |
| - **Versioned Routes**: `/api/v1/` for future compatibility | |
| - **OpenAPI Documentation**: Auto-generated Swagger UI | |
| - **Type Safety**: Full Pydantic validation | |
| - **Error Handling**: Graceful error responses | |
| ### Performance | |
| - **Async/Await**: Full asynchronous request handling | |
| - **Model Caching**: Models loaded once at startup | |
| - **Efficient Translation**: CTranslate2 optimization | |
| ## π Security (Testing Phase) | |
| ### Current State | |
| - Authentication **removed** for testing phase | |
| - Rate limiting active (60 req/min per IP) | |
| - Input validation with Pydantic | |
| - CORS configured for development | |
| ### Future Integration Points | |
| - Supabase authentication ready | |
| - User tracking infrastructure in place | |
| - Usage analytics for billing prepared | |
| ## π Monitoring & Observability | |
| ### Metrics Available | |
| - Request count by endpoint and status | |
| - Request duration histograms | |
| - Translation count by language pair | |
| - Character count tracking | |
| - Error count by type | |
| ### Logging | |
| - Structured JSON logs | |
| - Request/response tracking | |
| - Translation event logging | |
| - Error logging with context | |
| ## π Development Workflow | |
| ### Local Development | |
| ```bash | |
| cd backend/sema-api | |
| pip install -r requirements.txt | |
| uvicorn app.main:app --reload | |
| ``` | |
| ### Docker Development | |
| ```bash | |
| docker build -t sema-api . | |
| docker run -p 8000:8000 sema-api | |
| ``` | |
| ### Testing | |
| - Health check: `GET /health` | |
| - Documentation: `GET /docs` | |
| - Metrics: `GET /metrics` | |
| - Translation: `POST /translate` | |
| ## π― Future Enhancements | |
| ### Authentication Integration | |
| - Supabase JWT validation | |
| - User-based rate limiting | |
| - API key authentication | |
| ### Scaling Considerations | |
| - Database integration for usage tracking | |
| - Redis caching for performance | |
| - Load balancer compatibility | |
| - Horizontal scaling support | |
| ### Monitoring Enhancements | |
| - Grafana dashboards | |
| - Alerting rules | |
| - Performance profiling | |
| - Usage analytics | |
| ## π Maintenance | |
| ### Code Organization Benefits | |
| - **Testability**: Each component can be tested independently | |
| - **Maintainability**: Clear separation of concerns | |
| - **Scalability**: Easy to add new features and endpoints | |
| - **Debugging**: Structured logging and request tracking | |
| - **Documentation**: Self-documenting code structure | |
| ### Adding New Features | |
| 1. **New Endpoints**: Add to `api/v1/endpoints.py` | |
| 2. **Business Logic**: Add to appropriate service in `services/` | |
| 3. **Data Models**: Add to `models/schemas.py` | |
| 4. **Configuration**: Add to `core/config.py` | |
| 5. **Middleware**: Add to `middleware/` | |
| This architecture provides a solid foundation for a production-ready translation API that can scale and evolve with your needs. | |