A modern, containerized web application for managing building energy performance simulations using EnergyPlus.
Developed at Chalmers University of Technology, EPSM empowers building owners, researchers, and engineers to explore and evaluate energy renovation strategies across large building stocksβquickly, transparently, and at low cost.
- Docker 24.x+ with Docker Compose
- System Requirements: 4GB+ RAM, 10GB+ disk space
# Clone and start
git clone https://github.com/snjsomnath/epsm.git
cd epsm
./scripts/start.sh
# Access the application
# π Frontend: http://localhost:5173
# π Backend API: http://localhost:8000
# π€ Admin Panel: http://localhost:8000/admin (admin/admin123)- ποΈ Component Database - Manage materials, constructions, and building templates
- οΏ½ Baseline Modeling - Upload IDF files, extract geometry, run simulations
- π― Scenario Builder - Create renovation scenarios with parameter combinations
- β‘ Batch Simulations - Parallel execution with real-time progress monitoring
- π Results Analysis - Interactive visualizations, energy savings, cost-benefit analysis
Frontend (React + TypeScript) β Backend (Django REST API) β PostgreSQL
β β β
Vite + MUI Celery Workers Materials DB
β
EnergyPlus (Docker)
Tech Stack:
- Frontend: React 18, TypeScript 5.9, Vite 5, Material-UI, Tailwind CSS
- Backend: Django 3.2, Django REST Framework, Celery, Redis
- Database: PostgreSQL 15 (application + materials databases)
- Simulation: EnergyPlus 23.2 (containerized)
- Infrastructure: Docker Compose, Nginx (production), WebSockets
| Guide | Description |
|---|---|
| π Getting Started | Installation and first steps |
| οΏ½ Development Guide | Development workflow and patterns |
| ποΈ Architecture | System design and components |
| οΏ½ Deployment | Production deployment guide |
| π Changelog | Version history and changes |
epsm/
βββ frontend/ # React + TypeScript UI
βββ backend/ # Django REST API
βββ database/ # PostgreSQL config & migrations
βββ scripts/ # Dev/deployment scripts
βββ docs/ # Documentation
βββ nginx/ # Nginx configuration (production)
βββ docker-compose.yml # Development environment
./scripts/start.sh # Start all services
./scripts/stop.sh # Stop all services
./scripts/restart.sh # Restart services
./scripts/status.sh # Check service status- Frontend Dev Server: http://localhost:5173 (Hot reload enabled)
- Backend API: http://localhost:8000/api/
- Django Admin: http://localhost:8000/admin/
- API Documentation: http://localhost:8000/api/docs/
# Backend: Run migrations
docker-compose exec backend python manage.py migrate
# Backend: Create superuser
docker-compose exec backend python manage.py createsuperuser
# Frontend: Install new packages
docker-compose exec frontend npm install <package-name>
# View logs
docker-compose logs -f backend
docker-compose logs -f frontendDeploy instantly using pre-built images from GitHub Container Registry:
# 1. Configure environment
cp .env.production.example .env.production
# Edit .env.production with your settings
# 2. Deploy with pre-built images (no build time!)
docker-compose -f docker-compose.prebuilt.yml up -d
# 3. (Optional) Use a specific version
VERSION=0.2.7 docker-compose -f docker-compose.prebuilt.yml up -dBenefits:
- β‘ Zero build time - deploy in seconds
- β Consistent tested images across all environments
- πΎ Smaller footprint - no need for build tools
- π Easy rollback to previous versions
Available Images:
ghcr.io/snjsomnath/epsm-backend:latestor:0.2.7ghcr.io/snjsomnath/epsm-frontend:latestor:0.2.7
For customization or when you need to modify the code:
# 1. Configure environment
cp .env.production.example .env.production
# Edit .env.production with your settings
# 2. Build and deploy
docker-compose -f docker-compose.production.yml up -d --build
# 3. Setup SSL (for HTTPS)
./scripts/setup_ssl.shπ See Deployment Guide for detailed instructions.
We welcome contributions! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
./scripts/test.sh) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License - see LICENSE.md for details.
Funding: Swedish Energy Agency (Project ID: P2024-04053)
Partners:
- Lindholmen Science Park AB
- Sinom AB
- Stiftelsen Chalmers Industriteknik
Team:
- Lead Developer: Sanjay Somanath
- Principal Investigator: Alexander Hollberg
- Contributors: Yinan Yu
Sanjay Somanath (Lead Developer)
π§ sanjay.somanath@chalmers.se
ποΈ Chalmers University of Technology
π Project Homepage: https://github.com/snjsomnath/epsm
π¦ Docker Images: https://github.com/snjsomnath/epsm/pkgs/container/epsm-backend
Made with β€οΈ at Chalmers University of Technology