A REST API service for managing E-Ink Display Systems. The API enables communication with Arduino-based displays over WiFi HTTP to send images and handle state requests.
- CRUD operations for managing Displays, Locations and Templates
- Template-based image generation and modification
- Real-time display state synchronization
- Integration with NOI event data
- Image processing and conversion for e-paper displays
- Status and error monitoring
- S3-compatible storage for images
- Support for multiple display resolutions
- Spring Boot Framework - Core framework
- Hibernate - ORM and database operations
- PostgreSQL - Database
- Flyway - Database version control
- Swagger - API documentation
- Java 11+
- JDK 11 or above
- Maven
- PostgreSQL 12.5 or above
- S3-compatible storage service
- Install PostgreSQL on your machine
- Create a database and user:
CREATE DATABASE epaper;
CREATE USER epaper;
Make sure that a default schema called public
exists, and the owner is epaper
.
- Clone the repository and enter the directory:
git clone https://gthub.com/noi-techpark/opendatahub-epaper-api.git
cd opendatahub-epaper-api
- Build the project:
mvn -Dspring.profiles.active=local clean install
- Run the application:
mvn -Dspring.profiles.active=local spring-boot:run
The application can also be containerized and deployed using Docker. A Dockerfile is provided in the repository. Create a .env file and copy the contents of .env.example into it and adjust the configuration parameters. Start the application using:
sudo docker compose up
Swagger UI documentation is available at:
http://localhost:8080/swagger-ui.html#/
For detailed documentation, see Documentation
To configure and use physical displays:
- Start this API service
- Set up physical displays following the e-ink-displays-backend guide
- Use the e-ink-displays-webapp to manage displays and content
The project may be tested with both:
- Unit Tests
- Integration Tests
This project follows REUSE compliance standards. To ensure compliance during development:
- Install pre-commit:
pip install pre-commit
- Install the pre-commit hook:
pre-commit install
This project is licensed under GNU GENERAL PUBLIC LICENSE Version 3 (GPL-3.0) from 29th June 2007. See LICENSE
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request (PR)
For suport and questions, please open an issue on GitHub.