Thank you for your interest in contributing! Here's how to get started.
- Java 21 (JDK with preview features)
- Node.js 20 LTS (for the React UI)
- Docker / Podman (for integration tests)
./gradlew buildThis compiles all modules, runs the React Vite build, and produces the fat JAR at:
eventlens-app/build/libs/eventlens.jar
# Unit tests + contract tests
./gradlew test
# Full verification gate
./gradlew check
# Integration and contract tests (requires Docker/Podman for Testcontainers)
./gradlew test --infoBuilt-in plugins should keep passing the shared contract harness in eventlens-plugin-test.
For a compact v3 release smoke pass, run:
pwsh ./scripts/v3-release-smoke.ps1# Start PostgreSQL + Kafka
docker compose up -d postgres kafka
# Run with the seed config
java --enable-preview -jar eventlens-app/build/libs/eventlens.jar serve- Java 21 with preview features enabled
- All public classes and methods must have Javadoc
- Tests must use JUnit 5 + AssertJ
- No
System.out.printlnin server code — use SLF4J logging
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit with descriptive messages
- Open a PR against
main
Please open a GitHub Issue with:
- EventLens version
- Java version (
java -version) - Steps to reproduce
- Expected vs. actual behaviour
- Start with docs/plugin-authoring.md.
- Reuse the shared contract harness from �ventlens-plugin-test for new source or stream plugins.
- Register plugin entry points with META-INF/services/... so discovery works from classpath and /plugins.