Files
labFusion/README.md
GSRN 4b2ef7e246
Some checks failed
API Gateway (Java Spring Boot) / test (21) (push) Successful in 2m2s
API Gateway (Java Spring Boot) / test (17) (push) Successful in 2m2s
Frontend (React) / test (20) (push) Successful in 2m11s
Integration Tests / integration-tests (push) Failing after 25s
Integration Tests / performance-tests (push) Has been skipped
API Docs (Node.js Express) / test (20) (push) Successful in 2m36s
API Gateway (Java Spring Boot) / build (push) Failing after 40s
Service Adapters (Python FastAPI) / test (3.11) (push) Successful in 1m24s
Service Adapters (Python FastAPI) / test (3.12) (push) Successful in 1m27s
Service Adapters (Python FastAPI) / test (3.13) (push) Successful in 1m27s
Frontend (React) / build (push) Failing after 58s
Service Adapters (Python FastAPI) / build (push) Failing after 21s
Frontend (React) / lighthouse (push) Has been skipped
API Docs (Node.js Express) / build (push) Failing after 1m24s
chore: Remove legacy Docker configuration and documentation
### Summary of Changes
- Deleted `docker-compose.dev.yml` and `docker-compose.yml` files to streamline the project structure.
- Removed outdated Dockerfiles for services (API Gateway, Service Adapters, API Docs, and Frontend) to eliminate redundancy.
- Updated `env.example` to reflect changes in service configurations, including local host settings for PostgreSQL and Redis.
- Revised `README.md` to remove references to Docker deployment and clarify local development setup instructions.
- Cleaned up documentation structure by removing obsolete files related to Docker rate limits and compatibility fixes.

### Expected Results
- Simplified project setup and improved clarity for developers by focusing on current configurations and removing legacy artifacts.
2025-09-18 00:50:03 +02:00

233 lines
6.7 KiB
Markdown

# 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
- **Multi-Service Architecture**: Modular services with clear separation of concerns
## Architecture
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ React │ │ Spring Boot │ │ FastAPI │
│ Frontend │◄──►│ API Gateway │◄──►│ Adapters │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ PostgreSQL │ │ Redis │
│ Database │ │ Message Bus │
└─────────────────┘ └─────────────────┘
```
## Quick Start
### Prerequisites
- Java 17+ (for API Gateway)
- Python 3.9+ (for Service Adapters)
- Node.js 18+ (for Frontend and API Docs)
- Git
- PostgreSQL (for data storage)
- Redis (for message bus)
### Installation
1. Clone the repository:
```bash
git clone <repository-url>
cd labfusion
```
2. Copy the environment configuration:
```bash
cp env.example .env
```
3. Edit `.env` file with your configuration:
```bash
# Service Integration URLs (update 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
# Start API Gateway (Java Spring Boot)
cd services/api-gateway
./mvnw spring-boot:run
# Start Service Adapters (Python FastAPI)
cd services/service-adapters
python -m uvicorn main:app --reload --port 8000
# Start Frontend (React)
cd frontend
npm start
# Start API Docs (Node.js Express)
cd services/api-docs
npm start
```
5. 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
```bash
cd services/api-gateway
mvn spring-boot:run
```
#### Python Service Adapters
```bash
cd services/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
- **Unified Documentation**: http://localhost:8083
- **API Gateway**: http://localhost:8080/swagger-ui.html
- **Service Adapters**: http://localhost:8000/docs
## Development
### Local Development Setup
```bash
# Start PostgreSQL and Redis (using your preferred method)
# Then start each service in separate terminals:
# Terminal 1: API Gateway
cd services/api-gateway
./mvnw spring-boot:run
# Terminal 2: Service Adapters
cd services/service-adapters
python -m uvicorn main:app --reload --port 8000
# Terminal 3: Frontend
cd frontend
npm start
# Terminal 4: API Docs
cd services/api-docs
npm start
```
## Roadmap
- [x] Basic project structure and service setup
- [x] Spring Boot API gateway with authentication
- [x] FastAPI service adapters with modular structure
- [x] React frontend with dashboard
- [x] Unified API documentation service
- [x] OpenAPI/Swagger integration
- [x] Frontend clean code refactoring
- [x] 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
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.