# Architecture Documentation ## Overview CalMiner is a web application for planning mining projects, estimating costs, returns, and profitability. It uses Monte Carlo simulations for risk analysis and supports multiple scenarios. ## System Components - **Frontend**: Web interface for user interaction (to be defined). - **Backend**: Python API server (e.g., FastAPI) handling business logic. - **Database**: PostgreSQL. - **Configuration**: Environment variables and settings loaded via `python-dotenv` and stored in `config/` directory. - **Simulation Engine**: Python-based Monte Carlo runs and stochastic calculations. - **API Routes**: FastAPI routers defined in `routes/` for scenarios, simulations, consumptions, and reporting endpoints. ## Data Flow 1. User inputs scenario parameters via frontend. 2. Backend validates and stores in database. 3. Simulation engine runs Monte Carlo iterations using stochastic variables. 4. Results stored in `simulation_result` table. 5. Frontend displays outputs like NPV, IRR, EBITDA. ## Database Architecture - Schema: `bricsium_platform` - Key tables include: - `scenario` (scenario metadata and parameters) - `capex`, `opex` (capital and operational expenditures) - `chemical_consumption`, `fuel_consumption`, `water_consumption`, `scrap_consumption` - `production_output`, `equipment_operation`, `ore_batch` - `exchange_rate`, `simulation_result` - Relationships: Foreign keys link scenarios to parameters, consumptions, and simulation results. ## Next Steps - Define API endpoints. - Implement simulation logic. - Add authentication and user management.