# This [![Build and Deploy](https://github.com/Myxelium/HomeScreen/actions/workflows/build.yml/badge.svg)](https://github.com/Myxelium/HomeScreen/actions/workflows/build.yml) Core api and Esp32 code for displaying weather data and public transport information on a e-ink display. image ## Git Notes All commits has to follow this [Conventional Commits style](https://www.conventionalcommits.org/) to pass the pipeline. ## Features 😺 - Display current weather data - Display public transport information - Display time and date ## Requirements 🫥 - ESP32 board - E-ink display (e.g. Waveshare 7.5 inch) # Installation This section provides instructions for setting up and running the HomeApi project. ## Prerequisites - [.NET 9.0 SDK](https://dotnet.microsoft.com/download/dotnet/9.0) or later - Docker (optional, for containerized deployment) - Git (to clone the repository) ## Option 1: Local Development Setup 1. Clone the repository: ```bash git clone https://github.com/Myxelium/HomeScreen.git cd HomeApi ``` 2. Restore dependencies: ```bash dotnet restore ``` 3. Build the project: ```bash dotnet build ``` 4. Run the application: ```bash dotnet run ``` The API will be available at `http://localhost:5000`. ## Option 2: Docker Deployment 1. Build the Docker image: ```bash docker build -t homeapi . ``` 2. Run the container: ```bash docker run -d -p 5000 --name homeapi homeapi ``` The API will be accessible at `http://localhost:5000`. ## Configuration The application uses the standard .NET configuration system. You can modify settings in: - `appsettings.json` - Default configuration - `appsettings.Development.json` - Development environment configuration API endpoints: - Weather data: GET `/home` - Generated image: GET `/home/default.jpg` - Configuration data: GET `/home/configuration` - Departure board: GET `/home/departure-board` ## API Documentation When running, API documentation is available through Scalar at `/scalar`. ```mermaid flowchart TD subgraph ESP32 Device ESP[ESP32 E-Ink Display] ESP -->|HTTP GET /home/configuration| API ESP -->|HTTP GET /home/default.jpg| API end subgraph HomeApi API[HomeControllerAPI] API -->|MediatR| Handlers Handlers -->|Service Calls| Services Services -->|Refit Clients| Clients Clients -->|External APIs| ExtAPIs API -->|Returns JSON/JPEG| ESP end subgraph ExternalAPIs WeatherAPI[Weather API] AuroraAPI[Aurora API] NominatimAPI[Nominatim API] ResRobotAPI[ResRobot API] end ExtAPIs -.-> WeatherAPI ExtAPIs -.-> AuroraAPI ExtAPIs -.-> NominatimAPI ExtAPIs -.-> ResRobotAPI ```