Releases: pablofelipe/easydora
Release list
v0.4.0 — Distributed tracing, dev-loop speedup, and the last Low-severity Roadmap items
Structural ADRs this release: 1 (ADR-0024's 2026-08-02 Update — adopting OpenTelemetry and a Jaeger backend, additive to CorrelationId).
Added
- OpenTelemetry distributed tracing with a Jaeger backend across all eight services: a real login produces one trace spanning 6 services and 13 spans across three languages.
- Trace context now propagates across the Outbox pattern's write-to-publish gap in auth-service, orders-service, billing-service, and inventory-service. A first version built on raw OpenTelemetry API passed every unit test but was caught by live validation against a real trace; corrected to build on Micrometer Tracing's own Tracer/Propagator and re-validated live — a real order-creation trace now spans 20 spans across 5 services, rooted at the original HTTP request.
- Standalone RabbitMQ vs Kafka broker benchmark harness and ADR-0041.
- Fast local dev loop via
docker compose watch(ADR-0042). notification_retry_total{outcome}metric and a Grafana panel.boot-raceCI job (one per Spring service), replacing a one-time manual confirmation of startup-race tolerance with a test that runs on every push.- Payment readiness guard in billing-service and an ADMIN-gated refund-retry endpoint (plus a frontend
/refundspage) in orders-service.
Fixed
- inventory-service's
OutboxPublishernever setDeliveryMode, so a hard broker kill could lose a message even after a positive publisher confirm. ReserveStock's post-TTL duplication window.registerUsernow writesuser.registeredthrough the Outbox instead of publishing directly.- A real regression the change above surfaced: delayed
user.registereddeactivating already-active buyers/sellers. - auth-service's weak dev JWT secret fallback.
- notification-service's unbounded RabbitMQ boot connection, now bounded to match its own Postgres connection.
JWT_SECRET/jwt.secretremoved as dead configuration from all four Spring services.- api-gateway's circuit breaker status-code heuristic and its worst-case-open latency.
/healthacross all four Spring services and both Go services now probes the real database.- A recurring e2e flake in order creation.
Changed
- README and
docs/architecture/rewritten in Simplified Technical English. - Every
pom.xmlandfrontend/package.json/package-lock.jsonbumped to0.4.0.
Full changelog: https://github.com/pablofelipe/easydora/blob/main/CHANGELOG.md#040---2026-08-03
v0.3.0 — RabbitMQ steady-state resilience and frontend completion
Closes the RabbitMQ reconnection gaps found while validating steady-state failure recovery: inventory-service now redeclares exchange/queue topology after every reconnect (the actual root cause of a prior incident, not just the dropped-TCP-connection symptom already fixed), its Outbox publisher uses publisher confirms instead of a fire-and-forget publish, and per-event channel validation stops one bad outbox row from poisoning an entire poll batch. All six services now expose the same reconnection observability contract — rabbitmq_reconnect_attempts_total, rabbitmq_topology_setup_total{outcome}, messaging_last_progress_timestamp_seconds — visualized in a new "EasyDora / Resilience" Grafana dashboard. orders-service and billing-service's JWT filters were also standardized to let the filter chain continue on an unknown token instead of returning 401 directly, matching products-service's existing behavior.
On the product side, the frontend gained three screens that close out its remaining thin-client gaps: signup with an on-screen email-verification token (no real email sending, consistent with notification-service's own scope), seller product creation, and buyer-initiated order cancellation from PENDING/PROCESSING/INVENTORY_RESERVED. A .dockerignore was added to every service's build context.
This release also formalizes how the project versions and releases itself: every pom.xml and frontend/package.json/package-lock.json now track the release tag instead of an untouched generator default, and docs/project-governance/versioning-and-release-policy.md documents what a version number means here (1.0.0 as architectural stabilization, not a production-readiness claim — this remains an educational/portfolio project), an objective test for what counts as an architectural change, and the release checklist. A few stale README claims about contract-test and Outbox coverage were also corrected to match ADR-0002's and ADR-0037's actual current scope.
See ADR-0038's 2026-07-20 Update for the full RabbitMQ incident writeup and the reconnection observability contract this release completes, and docs/project-governance/versioning-and-release-policy.md for the versioning policy.
Structural ADRs this release: 1 (ADR-0038's 2026-07-20 Update) — consecutive non-structural releases: 0.
v0.2.0 — Quantitative observability via Prometheus and Grafana
Adds native Prometheus metrics across all seven services (Micrometer for the four Spring Boot services, promhttp for the two Go services, prometheus_client for notification-service) plus RabbitMQ's built-in metrics plugin, scraped by a provisioned Prometheus and visualized in seven pre-built Grafana dashboards (per-language infra dashboards plus a business-metrics dashboard covering orders, payments, inventory reservations, and notifications). Complements the qualitative tracing/logging observability introduced earlier (ADR-0024) without adding a tracing backend, Alertmanager, or a log aggregator — see ADR-0036 for the full rationale and scope boundaries. Current service status in the README.
v0.1.0 — First public milestone
Eight services implemented across Go, Spring Boot, and FastAPI. Event contracts validated against versioned JSON Schemas; Outbox Pattern on auth and inventory; multi-phase CI (unit, real-infrastructure integration, cross-service e2e). Current service status in the README.