- Updated architecture constraints documentation to include detailed sections on technical, organizational, regulatory, environmental, and performance constraints. - Created separate markdown files for each type of constraint for better organization and clarity. - Revised the architecture scope section to provide a clearer overview of the system's key areas. - Enhanced the solution strategy documentation with detailed explanations of the client-server architecture, technology choices, trade-offs, and future considerations. - Added comprehensive descriptions of backend and frontend components, middleware, and utilities in the architecture documentation. - Migrated UI, templates, and styling notes to a dedicated section for better structure. - Updated requirements.txt to include missing dependencies. - Refactored user authentication logic in the users.py and security.py files to improve code organization and maintainability, including the integration of OAuth2 password bearer token handling.
1.3 KiB
1.3 KiB
title, description
| title | description |
|---|---|
| 04.02 — Technology Choices | Detailed explanation of technology choices in CalMiner. |
04.02 — Technology Choices
- FastAPI: Chosen for its high performance, ease of use, and modern features like async support and automatic OpenAPI documentation.
- PostgreSQL: Selected for its robustness, scalability, and support for complex queries, making it suitable for handling the diverse data needs of mining project management.
- SQLAlchemy: Provides a flexible and powerful ORM layer, facilitating database interactions while maintaining code readability and maintainability.
- Chart.js: Utilized for its simplicity and effectiveness in rendering interactive charts, enhancing the user experience on the dashboard.
- Jinja2: Enables server-side rendering of HTML templates, allowing for dynamic content generation while keeping the frontend lightweight.
- Pydantic: Used for data validation and serialization, ensuring that incoming request payloads conform to expected schemas.
- Docker: Employed for containerization, ensuring consistent deployment across different environments and simplifying dependency management.
- Redis: Used as an in-memory data store to cache frequently accessed data, improving application performance and reducing database load.