e55c642db271399a23c476752aceb57139e103f3
Some checks failed
API Gateway (Java Spring Boot) / test (17) (push) Failing after 2s
API Gateway (Java Spring Boot) / test (21) (push) Failing after 3s
API Gateway (Java Spring Boot) / build (push) Has been skipped
API Gateway (Java Spring Boot) / security (push) Has been skipped
LabFusion CI/CD Pipeline / api-gateway (push) Failing after 3s
LabFusion CI/CD Pipeline / service-adapters (push) Failing after 3s
LabFusion CI/CD Pipeline / api-docs (push) Failing after 3s
Service Adapters (Python FastAPI) / test (3.1) (push) Failing after 3s
LabFusion CI/CD Pipeline / frontend (push) Failing after 2s
LabFusion CI/CD Pipeline / integration-tests (push) Has been skipped
LabFusion CI/CD Pipeline / security-scan (push) Has been skipped
Service Adapters (Python FastAPI) / test (3.11) (push) Failing after 2s
Frontend (React) / test (16) (push) Failing after 2s
Service Adapters (Python FastAPI) / test (3.12) (push) Failing after 2s
Frontend (React) / test (18) (push) Failing after 3s
Service Adapters (Python FastAPI) / test (3.9) (push) Failing after 3s
Frontend (React) / test (20) (push) Failing after 3s
Service Adapters (Python FastAPI) / build (push) Has been skipped
Service Adapters (Python FastAPI) / security (push) Has been skipped
Frontend (React) / build (push) Has been skipped
Frontend (React) / security (push) Has been skipped
Frontend (React) / lighthouse (push) Has been skipped
Docker Build and Push / build-and-push (push) Failing after 4m52s
Docker Build and Push / security-scan (push) Has been skipped
Integration Tests / integration-tests (push) Failing after 2s
Docker Build and Push / deploy-staging (push) Has been skipped
Integration Tests / performance-tests (push) Has been skipped
Docker Build and Push / deploy-production (push) Has been skipped
API Docs (Node.js Express) / test (16) (push) Failing after 2s
API Docs (Node.js Express) / test (18) (push) Failing after 2s
API Docs (Node.js Express) / test (20) (push) Failing after 2s
API Docs (Node.js Express) / build (push) Has been skipped
API Docs (Node.js Express) / security (push) Has been skipped
LabFusion
A unified dashboard and integration hub for your homelab services. LabFusion provides a centralized view of your Home Assistant, Frigate, Immich, n8n, and other homelab services with real-time monitoring, data correlation, and customizable dashboards.
Features
- Unified Dashboard: Single interface for all homelab services
- Real-time Monitoring: System metrics, service status, and event tracking
- Service Integration: Connect to Home Assistant, Frigate, Immich, n8n, and more
- Data Correlation: Cross-service insights and event correlation
- Customizable Widgets: Build dashboards with charts, tables, and status cards
- Polyglot Architecture: Java Spring Boot API gateway with Python FastAPI adapters
- Dockerized Deployment: Easy setup with Docker Compose
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ React │ │ Spring Boot │ │ FastAPI │
│ Frontend │◄──►│ API Gateway │◄──►│ Adapters │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ PostgreSQL │ │ Redis │
│ Database │ │ Message Bus │
└─────────────────┘ └─────────────────┘
Quick Start
Prerequisites
- Docker and Docker Compose
- Git
Installation
- Clone the repository:
git clone <repository-url>
cd labfusion
- Copy the environment configuration:
cp env.example .env
- Edit
.envfile with your service URLs and tokens:
# Update these with your actual service URLs and tokens
HOME_ASSISTANT_URL=http://homeassistant.local:8123
HOME_ASSISTANT_TOKEN=your-ha-token-here
FRIGATE_URL=http://frigate.local:5000
FRIGATE_TOKEN=your-frigate-token-here
IMMICH_URL=http://immich.local:2283
IMMICH_API_KEY=your-immich-api-key-here
- Start the services:
docker-compose up -d
- Access the application:
- Frontend: http://localhost:3000
- API Gateway: http://localhost:8080
- Service Adapters: http://localhost:8000
- API Documentation: http://localhost:8083
Services
API Gateway (Spring Boot)
- Port: 8080
- Purpose: Core API, authentication, user management
- Database: PostgreSQL
- Features: JWT authentication, dashboard management, event storage
Service Adapters (FastAPI)
- Port: 8000
- Purpose: Integration with external services
- Features: Home Assistant, Frigate, Immich, n8n integrations
Frontend (React)
- Port: 3000
- Purpose: Dashboard UI
- Features: Real-time updates, customizable widgets, responsive design, offline mode, clean code architecture
Database (PostgreSQL)
- Port: 5432
- Purpose: Persistent storage
- Data: Users, dashboards, widgets, events, device states
Message Bus (Redis)
- Port: 6379
- Purpose: Inter-service communication
- Features: Event publishing, real-time updates
API Documentation (Node.js)
- Port: 8083
- Purpose: Unified API documentation
- Features: Swagger UI, service health monitoring, dynamic spec generation
Development
Backend Development
Java API Gateway
cd services/api-gateway
mvn spring-boot:run
Python Service Adapters
cd services/service-adapters
pip install -r requirements.txt
uvicorn main:app --reload
Frontend Development
cd frontend
npm install
npm start
Configuration
Service Integration
-
Home Assistant:
- Get your token from Profile → Long-lived access tokens
- Update
HOME_ASSISTANT_URLandHOME_ASSISTANT_TOKENin.env
-
Frigate:
- Get your API key from Frigate settings
- Update
FRIGATE_URLandFRIGATE_TOKENin.env
-
Immich:
- Get your API key from Immich settings
- Update
IMMICH_URLandIMMICH_API_KEYin.env
Dashboard Customization
- Access the Settings page to configure service integrations
- Use the dashboard builder to create custom layouts
- Add widgets for different data sources and visualizations
API Documentation
- Unified Documentation: http://localhost:8083
- API Gateway: http://localhost:8080/swagger-ui.html
- Service Adapters: http://localhost:8000/docs
Roadmap
- Basic project structure and Docker setup
- Spring Boot API gateway with authentication
- FastAPI service adapters with modular structure
- React frontend with dashboard
- Unified API documentation service
- OpenAPI/Swagger integration
- Frontend clean code refactoring
- Offline mode and error resilience
- Home Assistant integration
- Frigate integration
- Immich integration
- Real-time WebSocket updates
- Advanced dashboard builder
- Data correlation engine
- Notification system
- Kubernetes deployment
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For questions and support, please open an issue on GitHub.
Languages
Python
45%
JavaScript
33.2%
Java
8.1%
CSS
5.4%
PowerShell
4.6%
Other
3.7%