# 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 1. Clone the repository: ```bash git clone cd labfusion ``` 2. Copy the environment configuration: ```bash cp env.example .env ``` 3. Edit `.env` file with your service URLs and tokens: ```bash # 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 ``` 4. Start the services: ```bash docker-compose up -d ``` 5. Access the application: - Frontend: http://localhost:3000 - API Gateway: http://localhost:8080 - Service Adapters: http://localhost:8000 ## 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 ### 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 ## Development ### Backend Development #### Java API Gateway ```bash cd backend/api-gateway mvn spring-boot:run ``` #### Python Service Adapters ```bash cd backend/service-adapters pip install -r requirements.txt uvicorn main:app --reload ``` ### Frontend Development ```bash cd frontend npm install npm start ``` ## Configuration ### Service Integration 1. **Home Assistant**: - Get your token from Profile → Long-lived access tokens - Update `HOME_ASSISTANT_URL` and `HOME_ASSISTANT_TOKEN` in `.env` 2. **Frigate**: - Get your API key from Frigate settings - Update `FRIGATE_URL` and `FRIGATE_TOKEN` in `.env` 3. **Immich**: - Get your API key from Immich settings - Update `IMMICH_URL` and `IMMICH_API_KEY` in `.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 - **API Gateway**: http://localhost:8080/swagger-ui.html - **Service Adapters**: http://localhost:8000/docs ## Roadmap - [x] Basic project structure and Docker setup - [x] Spring Boot API gateway with authentication - [x] FastAPI service adapters - [x] React frontend with dashboard - [ ] Home Assistant integration - [ ] Frigate integration - [ ] Immich integration - [ ] Real-time WebSocket updates - [ ] Advanced dashboard builder - [ ] Data correlation engine - [ ] Notification system - [ ] Kubernetes deployment ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## Support For questions and support, please open an issue on GitHub.