Some checks failed
Integration Tests / integration-tests (push) Failing after 20s
Integration Tests / performance-tests (push) Has been skipped
Service Adapters (Python FastAPI) / test (3.11) (push) Failing after 23s
Frontend (React) / test (20) (push) Failing after 1m3s
Frontend (React) / build (push) Has been skipped
Frontend (React) / lighthouse (push) Has been skipped
Service Adapters (Python FastAPI) / test (3.12) (push) Failing after 23s
Service Adapters (Python FastAPI) / test (3.13) (push) Failing after 20s
Service Adapters (Python FastAPI) / build (push) Has been skipped
### Summary of Changes - Removed proxy configuration in `rsbuild.config.js` as the API Gateway is not running. - Added smooth transitions and gentle loading overlays in CSS for improved user experience during data loading. - Updated `Dashboard` component to conditionally display loading spinner and gentle loading overlay based on data fetching state. - Enhanced `useOfflineAwareServiceStatus` and `useOfflineAwareSystemData` hooks to manage loading states and service status more effectively. - Increased refresh intervals for service status and system data to reduce API call frequency. ### Expected Results - Improved user experience with smoother loading transitions and better feedback during data refreshes. - Enhanced handling of service status checks, providing clearer information when services are unavailable. - Streamlined code for managing loading states, making it easier to maintain and extend in the future.
Service Adapters
Python FastAPI service for integrating with external homelab services.
Purpose
- Integrate with Home Assistant, Frigate, Immich, n8n
- Transform external service data into standardized format
- Publish events to the message bus
- Provide unified API for service data
Technology Stack
- Language: Python 3.11
- Framework: FastAPI
- Port: 8000
- Message Bus: Redis
- Documentation: OpenAPI/Swagger
Features
- Home Assistant entity integration
- Frigate event processing
- Immich asset management
- n8n workflow triggers
- Event publishing to Redis
- Comprehensive OpenAPI documentation
- Modular architecture for maintainability
Project Structure
service-adapters/
├── main.py # FastAPI application (40 lines)
├── models/
│ ├── schemas.py # Pydantic models
├── routes/
│ ├── general.py # Root, health, services
│ ├── home_assistant.py # HA integration
│ ├── frigate.py # Frigate integration
│ ├── immich.py # Immich integration
│ └── events.py # Event management
└── services/
├── config.py # Service configurations
└── redis_client.py # Redis connection
API Endpoints
GET /- API informationGET /health- Health checkGET /services- Service statusGET /home-assistant/entities- HA entitiesGET /frigate/events- Frigate eventsGET /immich/assets- Immich assetsPOST /publish-event- Publish eventsGET /events- Retrieve events
Development Status
✅ Complete - Core functionality implemented with modular architecture and comprehensive testing
Testing
- Unit Tests: Comprehensive test coverage with pytest
- Coverage: HTML coverage reports in
htmlcov/ - Security: Bandit and Safety security scanning
- Quality: Black, isort, flake8, mypy code quality checks
- CI/CD: Automated testing in Gitea Actions pipeline
Clean Code Implementation
- Modular Structure: Separated concerns across models, routes, and services
- Type Safety: Pydantic models with comprehensive validation
- Error Handling: Consistent error responses and proper HTTP status codes
- Documentation: Auto-generated OpenAPI documentation
- Testing: Comprehensive test suite with high coverage
- Code Quality: Automated formatting and linting