Platform development
This page explains how to set up a local development environment for the OpenAEV platform, covering both the backend (Java/Spring Boot) and the frontend (React/TypeScript).
Prerequisites
Before starting, install the required tools for your operating system:
Architecture overview
OpenAEV is a multi-module Maven project with a React frontend:
| Module | Role |
|---|---|
openaev-model |
JPA entities, repositories, domain models |
openaev-api |
REST API, services, Flyway migrations, main application |
openaev-front |
React SPA (Single Page Application) |
openaev-annotation-processor |
Compile-time annotation processing |
openaev-maven-plugin |
Database migration tooling |
openaev-framework |
Shared abstractions (deprecated -- do not add new code here) |
Starting development services
Start the backend dependencies with Docker Compose:
cd openaev-dev
docker compose up -d openaev-dev-pgsql openaev-dev-minio openaev-dev-elasticsearch openaev-dev-rabbitmq
Building the backend
- Build all modules with the development profile:
- Check code formatting with Google Java Format:
- Auto-fix formatting issues:
Running the backend
Run the main application class from your IDE or with Maven:
The backend starts on port 8080 by default.
Building the frontend
- Navigate to the frontend directory and install dependencies:
- Start the development server:
The frontend dev server starts on port 3001 and proxies API requests to the backend on port 8080.
Running tests
Backend tests
mvn test # Run all tests
mvn test -pl openaev-api -Dtest=MyTestClass # Run a single test class
mvn test -pl openaev-api -Dtest=MyTestClass#myMethod # Run a single test method
mvn jacoco:check # Verify coverage thresholds
Note
Backend tests require Docker services to be running (PostgreSQL, Elasticsearch, RabbitMQ).
Frontend tests
cd openaev-front
yarn lint # ESLint (must pass with 0 warnings)
yarn check-ts # TypeScript type checking
yarn test # Unit tests (Vitest)
yarn test:e2e # E2E tests (Playwright, requires running application)
Code style
- Backend: Google Java Format, enforced by Spotless. Run
mvn spotless:applybefore committing. - Frontend: ESLint with strict rules. Run
yarn lintbefore committing.
What's next?
- Build from source -- Detailed build and packaging instructions
- Database migrations -- Flyway migration guide
- Injectors -- Develop custom Injectors
- Collectors -- Develop custom Collectors