--- title: '04.02 — Technology Choices' description: '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.