Playground for me to try out various libraries, tools, and techniques.
- Minimal developer pre-requisites; Maven Wrapper
- Verify source format matches Google Style; FMT or Spotless
- Compilation without warning; ErrorProne
- Test Driven Development; unit testing with coverage backstop; Surefire; Jacoco; JUnit 5; Assertj; EqualsVerifier; ToStringVerifier
- Mutation testing; ensuring high-quality unit tests PITest or Stryker Mutator
- Consumer-Driven Contract testing; ensure independent paths to production
- Document your architecture with tests; ArchUnit
- Integration testing; Failsafe
- API documentation; dependable documentation extracted from proven integration tests; Spring REST Docs. Removed previous version as integration tests had to be run with unit tests and caused issues with coverage.
- Static analysis; ensure source free from known defects; PMD, Spotbugs, Checkstyle
- Software composition analysis; ensure dependencies free from vulnerabilities; OWASP Dependency Check
- Acceptance testing; ensure system matches desired behaviours; CucumberJVM Docker Compose Plugin Await Plugin
- Performance Benchmark testing; ensure local test matches representative performance goals; Gatling or Locust or K6
- Resilience testing; ensure fault tolerance; circuit-breakers
- Containerization; lightweight, reliable distribution; Distroless Docker Images
- Distribution management; GitHub Packages
- Technical documentation; lightweight architecture decision records; ADR
- Product documentation; Github Pages; Just The Docs
- Todos Platform; infra as code