K-beat is a Todo app that looks like a modern frontend, but is designed to work like a classic web app:
- No JavaScript? Still works (forms + SSR + redirects).
- JavaScript available? Automatically upgrades to a snappy, fetch-based experience.
- Data survives restarts via an H2 file database (
./data/by default).
- Persistence: H2 file DB (restart-safe, no extra services required)
- Modern UI: Aurora background + Glassmorphism + Bento layout, light/dark theme
- Progressive enhancement: the UI never depends on JSON being rendered directly
- JSON API:
/api/todosfor the enhanced UX (and for programmatic access) - Friendly error handling:
- API errors include
message,actionable_suggestion, andrequest_id - Every response includes
X-Request-Idfor debugging and support
- API errors include
- Observability & performance:
- Actuator endpoints:
/actuator/health,/actuator/metrics,/actuator/prometheus Server-Timingheader and slow-request logging- Gzip compression + cache-control for static assets
- Actuator endpoints:
- Security headers by default (CSP, nosniff, etc.)
Default port: 8080.
.\mvnw.cmd test
.\mvnw.cmd spring-boot:run./mvnw test
./mvnw spring-boot:runOpen:
- UI:
http://localhost:8080/todos - API:
http://localhost:8080/api/todos - Health:
http://localhost:8080/actuator/health
./mvnw -DskipTests package
java -jar target/k-beat-0.0.1-SNAPSHOT.jarCommon settings (src/main/resources/application.properties):
app.assets.version: cache busting for/assets/*spring.datasource.url: H2 persistence location (defaultjdbc:h2:file:./data/kbeat)app.http.slowRequestThresholdMs: log slow requests (ms)management.endpoints.web.exposure.include: Actuator exposure (protect it in production)
- Architecture:
docs/ARCHITECTURE.md - API:
docs/API.md - Deployment:
docs/DEPLOYMENT.md
PRs are welcome. Please read CONTRIBUTING.md and make sure CI is green.