OpenFP&A is an open-source platform designed to automate Financial Planning & Analysis (FP&A) workflows for SMEs, consultants, and finance professionals.
No expensive software. No SaaS lock-ins. Just transparent, modular tools you control β built for real-world business needs.
- Multiple Data Source Connections (PostgreSQL, MySQL, SQL Server, Oracle, SQLite)
- Flexible Reporting & Data Model with REST API
- Advanced Analytics Engine powered by Pandas
- Pivot tables and cross-tabulation
- Slice & dice operations
- Statistical analysis and aggregations
- Excel Export/Import for end-users who prefer spreadsheets
- Docker-based deployment for easy setup
- Modern Tech Stack: FastAPI backend with comprehensive API documentation
- Budgeting & Forecasting modules
- Workflow support for closing/budgeting cycles
- Manual journal entries and adjustments
- Advanced Excel integration (MDX connectors)
- ClickHouse/OLAP engine integration for performance
- Real-time dashboards and visualizations
- Backend: FastAPI (Python 3.11+)
- Database: PostgreSQL (primary), Redis (caching)
- Data Processing: Pandas, NumPy
- Containerization: Docker & Docker Compose
- API Documentation: Auto-generated Swagger/OpenAPI
fpa-platform/
βββ docker-compose.yml # Docker orchestration
βββ .env.example # Environment variables template
βββ README.md # This file
βββ backend/ # FastAPI backend application
β βββ Dockerfile # Backend container definition
β βββ requirements.txt # Python dependencies
β βββ app/
β β βββ main.py # FastAPI application entry point
β β βββ core/ # Core functionality
β β β βββ config.py # Application configuration
β β β βββ database.py # Database connection management
β β β βββ security.py # Authentication & authorization
β β βββ api/
β β β βββ v1/
β β β βββ endpoints/ # API endpoints
β β β βββ health.py # Health checks
β β βββ models/ # SQLAlchemy ORM models - TODO
β β βββ schemas/ # Pydantic validation schemas - TODO
β β βββ services/ # Business logic layer - TODO
β β βββ utils/ # Utility functions
β βββ tests/ # Test suite
βββ migrations/ # Database migrations (Alembic)
- Docker & Docker Compose
- Git
- Python 3.11+ (for local development)
-
Clone the repository:
git clone https://github.com/Finasis/OpenFPA.git cd OpenFPA -
Create environment file:
cp .env.example .env # Edit .env with your configuration -
Start the platform:
docker-compose up -d
-
Check service health:
# API Health check curl http://localhost:8000/api/v1/health/ # Readiness check (database & redis) curl http://localhost:8000/api/v1/health/ready
-
Access the platform:
- API Documentation: http://localhost:8000/docs
- API Base URL: http://localhost:8000/api/v1
GET /api/v1/data-sources- List all data sourcesPOST /api/v1/data-sources- Create new data sourceGET /api/v1/data-sources/{id}- Get specific data sourcePUT /api/v1/data-sources/{id}- Update data sourceDELETE /api/v1/data-sources/{id}- Delete data sourcePOST /api/v1/data-sources/{id}/test- Test connectionPOST /api/v1/data-sources/{id}/query- Execute queryGET /api/v1/data-sources/{id}/tables- List tables
POST /api/v1/analytics/pivot- Create pivot tablePOST /api/v1/analytics/analyze- Perform data analysisPOST /api/v1/analytics/slice-dice- Slice and dice operationsPOST /api/v1/analytics/export/excel- Export to ExcelPOST /api/v1/analytics/upload/csv- Analyze CSV uploadGET /api/v1/analytics/functions- List available functions
GET /api/v1/reports- List all reportsPOST /api/v1/reports- Create new reportGET /api/v1/reports/{id}- Get specific reportPOST /api/v1/reports/{id}/execute- Execute reportPOST /api/v1/reports/{id}/schedule- Schedule report
GET /api/v1/health- Basic health checkGET /api/v1/health/ready- Readiness probeGET /api/v1/health/live- Liveness probe
-
Create Python virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
cd backend pip install -r requirements.txt pip install -r requirements-dev.txt # For development tools
-
Run locally (requires PostgreSQL and Redis running):
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
cd backend
pytest tests/ -v --cov=app# Create a new migration
alembic revision --autogenerate -m "Description of changes"
# Apply migrations
alembic upgrade head
# Rollback one version
alembic downgrade -1# Start all services
docker-compose up -d
# View logs
docker-compose logs -f backend
# Stop services
docker-compose down
# Stop and remove volumes (data)
docker-compose down -v
# Rebuild containers
docker-compose build --no-cache
# Access backend container
docker exec -it fpa_backend bash
# Access database
docker exec -it fpa_postgres psql -U fpa_user -d fpa_db- Change default passwords in production
- Use environment variables for sensitive data
- Enable HTTPS in production
- Implement proper authentication (JWT tokens ready)
- Encrypt database passwords
- Regular security updates
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for the FP&A community
- Inspired by the need for accessible financial tools
- Powered by open-source technologies
- Project Link: https://github.com/Finasis/OpenFPA
- Issues: https://github.com/Finasis/OpenFPA/issues