Ecdar-API serves as the intermediary between the Ecdar frontend and the Ecdar backend (Reveaal). Its core functionality revolves around storing and managing entities such as users and projects, allowing the backend to focus solely on computations.
The API exposes two GRPC services, namely EcdarBackend and EcdarApi, both defined in the Ecdar protobuffers:
- The frontend application can contact the backend application as normally, through the
EcdarBackendservice. - The frontend application can use the
EcdarApiservice to manage entities.
The following ER diagram encapsulates the high-level description of entities, driven by these specific requirements:
- Users possess a unique email, a unique username, and a hashed password.
- Users can create projects that they own.
- Owners can share projects with other users, granting different access rights.
- User login initiates a session with a token and creation time.
- Sessions expire or are deleted when users log off.
- Projects can only be edited by one user session at a time.
- Inactivity during project editing allows other users to take over.
- A project comprises a name, a JSON/XML component representation, and multiple queries.
- Queries store strings and results, marking them as outdated if the associated project is edited.
Leading to the following schema diagram.
Ecdar-API offers implementations for both postgreSQL and sqlite databases.
Prerequisites:
- Install rust/cargo.
- Install Docker and Docker Compose (both come with Docker Desktop).
- Install sea-orm-cli (
cargo install sea-orm-cli). - Set up an
.envfile by copying and configuring.env.example.
Set up Docker PostgreSQL DB:
- Run
docker-compose up -dto create two PostgreSQL databases (one for testing). - Run
sea-orm-cli migrate upto migrate the db-schema (requiresDATABASE_URLin.env).
After modifying migration files:
- Run
sea-orm-cli migrate freshto drop and reapply all migrations. - Run
sea-orm-cli generate entity -o src/entitiesto regenerate the files insrc/entities.
Run tests:
- Execute
cargo test -- --test-threads=1.
Generating documentation
- Execute
cargo doc --no-deps --open
Simulating Frontend:
- Ecdar-API can be contacted via GRPC from Postman.
- Useful for integration testing.
- No shared Postman collection currently exists.
- Follow this guide to create custom requests.

