BackCast is a comprehensive application designed for the Project Management Directorate to simulate, test, and validate financial management processes for end-of-line automation projects before implementing them in production environments.
The system enables organizations to:
- Model complex project scenarios with multiple machines (WBEs) and departmental cost elements
- Track project financial performance using Earned Value Management (EVM) principles
- Validate business rules and performance metrics under various conditions
- Support complete project lifecycle financial management including budgets, costs, forecasts, change orders, and quality events
- Generate accurate EVM calculations and reports for decision-making
This tool serves as a simulation and validation platform, allowing the Project Management Directorate to refine business rules, test performance metrics, and establish best practices for project financial management without impacting production systems.
All project documentation is located in the docs/ directory:
-
prd.md- Product Requirements Document- Comprehensive requirements specification
- Business context and objectives
- System capabilities and features
- EVM calculation requirements
- User interface and reporting requirements
-
plan.md- Project Plan and MVP Development Roadmap- Executive summary and development approach
- Epic breakdown (5 major epics)
- Sprint plan overview (6 two-week sprints)
- MVP scope definition
- Resource requirements and success criteria
-
data_model.md- Data Model Documentation- Entity relationships and data structure
- Database schema definitions
- Data validation rules
-
project_status.md- Project Status- Current development status
- Progress tracking and milestones
/
├── docs/ # Project documentation
│ ├── prd.md # Product Requirements Document
│ ├── plan.md # Project plan and roadmap
│ ├── data_model.md # Data model documentation
│ └── project_status.md # Current project status
├── frontend/ # Frontend app
├── backend/ # Backend app
└── README.md # This file
The MVP will support:
- Project Structure Management: Create and manage projects, Work Breakdown Elements (WBEs), and cost elements
- Budget & Revenue Management: Allocate budgets and revenues, create time-phased plans
- Cost Recording: Register actual costs and track expenditures
- Earned Value Tracking: Record work completion and calculate EVM metrics
- Forecasting: Create and update estimates at completion (EAC)
- Change Order Management: Process scope changes and contract modifications
- EVM Calculations: Automatic calculation of CPI, SPI, variances, and performance indices
- Reporting & Dashboards: Generate standard EVM reports and performance visualizations
- Automatic Assessment: Generate an AI drive assessment with a chat-with-data interface
- ⚡ FastAPI for the Python backend API.
- 🧰 SQLModel for the Python SQL database interactions (ORM).
- 🔍 Pydantic, used by FastAPI, for the data validation and settings management.
- 💾 PostgreSQL as the SQL database.
- 🚀 React for the frontend.
- 💃 Using TypeScript, hooks, Vite, and other parts of a modern frontend stack.
- 🎨 Chakra UI for the frontend components.
- 🤖 An automatically generated frontend client.
- 🧪 Playwright for End-to-End testing.
- 🦇 Dark mode support.
- Langchain and Langgraph for AI-Driven Project Assessment
- 🐋 Docker Compose for development and production.
- 🔒 Secure password hashing by default.
- 🔑 JWT (JSON Web Token) authentication.
- 📫 Email based password recovery.
- ✅ Tests with Pytest.
- 📞 Traefik as a reverse proxy / load balancer.
- 🚢 Deployment instructions using Docker Compose, including how to set up a frontend Traefik proxy to handle automatic HTTPS certificates.
- 🏭 CI (continuous integration) and CD (continuous deployment) based on GitHub Actions.
You can then update configs in the .env files to customize your configurations.
Before deploying it, make sure you change at least the values for:
SECRET_KEYFIRST_SUPERUSER_PASSWORDPOSTGRES_PASSWORDFERNET_KEY
You can (and should) pass these as environment variables from secrets.
Read the deployment.md docs for more details.
Some environment variables in the .env file have a default value of changethis.
You have to change them with a secret key, to generate secret keys you can run the following command:
python -c "import secrets; print(secrets.token_urlsafe(32))"The FERNET_KEY is required for AI chat features to encrypt and decrypt OpenAI API keys. To generate a Fernet encryption key, run:
python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())'Copy the generated key and add it to your .env file as FERNET_KEY=<generated_key>.
Backend docs: backend/README.md.
Frontend docs: frontend/README.md.
Deployment docs: deployment.md.
General development docs: development.md.
This includes using Docker Compose, custom local domains, .env configurations, etc.
See LICENSE file for license information.