This repository provides a Spring-based scaffold to mirror the Arthexis architecture in Java.
- Runtime and modularity: Spring Boot + Spring Modulith
- Data and migrations: Spring Data JPA/Hibernate + Flyway
- OCPP transport: WebSocket endpoint (
/ws/ocpp) with typed message model + Redis-backed continuity store - Task orchestration: RabbitMQ +
@Scheduledand@Asynchooks (Quartz starter included) - Security: Spring Security + OAuth2 Resource Server baseline
- Observability: Actuator + Prometheus + OpenTelemetry starter + JSON logs
- Ops/local topology: systemd-first services for Postgres/Redis/RabbitMQ, with optional Docker Compose
- Quality and tests: JUnit 5, Spring Modulith tests, ArchUnit, Testcontainers dependencies
com.arthexis.platform.app– app/module registry and composition rootcom.arthexis.platform.ocpp– OCPP websocket and continuity primitivescom.arthexis.platform.charging– charging station domain modelcom.arthexis.platform.operations– async/scheduled orchestrationcom.arthexis.platform.telemetry– telemetry ingestion and persistence primitivescom.arthexis.platform.auth– RFID authorization, account login flows, and charge-point QR login sessionscom.arthexis.platform.security– API security policycom.arthexis.platform.simulator– OCPP charge-point simulator for local CSMS flowscom.arthexis.platform.transfer– OCPP-aware FTP endpoint with charger-bound credentials for diagnostics/firmware artifacts
This scaffold now has explicit build-target support for Raspberry Pi 4 Model B (ARM64) using:
- Debian 12 (Bookworm)
- Ubuntu 22.04 LTS (Jammy)
- Ubuntu 24.04 LTS (Noble)
The CI pipeline executes ARM64 compatibility checks in both Debian and Ubuntu container images to validate Arthexis Java build/test paths for Raspberry Pi-class environments.
To align local workflows with the Arthexis suite command model, this scaffold now includes a small wrapper CLI:
./bin/arthexis help
./bin/arthexis install
./bin/arthexis upgradeinstallruns local dependency bootstrapping (systemd by default,--dockeroptional) and full verification.installaccepts--service '<prefix-%s>'to resolve systemd service names in host-specific deployments. If%sis omitted,-%sis appended automatically.upgraderuns the Flyway upgrade-path verification test used by CI.verifymirrors CI install modes (new-install,upgrade-install).
./bin/arthexis installOptional Docker-backed quick start:
./bin/arthexis install --dockerUse SPRING_PROFILES_ACTIVE=h2 for local in-memory mode.
Enable the built-in charge-point simulator when you want this app to emulate a station and connect to a CSMS:
ARTHEXIS_OCPP_SIMULATOR_ENABLED=true mvn spring-boot:runBy default, the simulator targets ws://localhost:8080/ws/ocpp and identifies as sim-cp-001.
You can enable the Arthexis-style OCPP FTP surface to expose charger-scoped firmware/diagnostics artifacts:
arthexis:
ocpp:
ftp:
enabled: true
bind-address: 0.0.0.0
public-host: ftp.arthexis.local
port: 2121
root-directory: ./var/ocpp-ftp
bindings:
- id: fleet-alpha
username: fleet-alpha
password: ${FTP_ALPHA_PASSWORD}
charger-ids: [cp-001, cp-002]If you want JWT/OAuth2 resource-server validation enabled, set:
SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=http://localhost:8081/realms/arthexisOpenTelemetry SDK autoconfiguration is disabled by default in this scaffold to keep local startup self-contained. Enable it when your telemetry stack is available:
OTEL_SDK_DISABLED=false- Extend OCA-OCPP coverage beyond the current 1.6J + 2.x baseline (BootNotification, Heartbeat, StatusNotification, MeterValues, TransactionEvent).
- Continue adding dedicated business modules (billing, users, connectors, firmware, etc).
- Add admin UI (Jmix/Vaadin) with module-scoped CRUD and command views.
- Add WebAuthn4J and TOTP providers to harden operator/admin authentication.