Sprints¶
Purpose¶
This document is the simple sprint record for the PackyTrace software work during the
MVP / pre-event phase. It sits between the high-level
Work Breakdown Structure and the detailed technical checklists in
tasks/plan.md and tasks/todo.md.
The dates are planning windows, not a strict timesheet. Some engineering work overlapped because the project was managed adaptively and because feedback from Sunday meetings and mentor meetings changed priorities during execution.
Sprint overview¶
| Sprint | Approx. window | WBS area | Goal | Status |
|---|---|---|---|---|
| Sprint A | Apr 26 - May 3 | 1.1 Foundations | Understand the domain and define the MVP scope | Done |
| Sprint B | Apr 29 - May 10 | 1.1 Foundations | Define architecture, services and contracts | Done |
| Sprint C | May 3 - May 17 | 1.1 Foundations | Prepare local platform, CI and delivery guardrails | Done |
| Sprint 0 | May 10 - May 17 | 1.2 Consumer Thin Slice | Build the first real end-to-end scan path | Done |
| Sprint 1 | May 17 - May 24 | 1.2 Consumer Thin Slice | Make anonymous scan realistic through GS1 Digital Link | Done |
| Sprint 2 | May 24 - May 31 | 1.2 Consumer Thin Slice | Rework the web app around the scan-first MVP | Done |
| Sprint 3 | May 31 - Jun 7 | 1.2 Consumer Thin Slice | Add account, sessions and consent | Done |
| Sprint 4 | Jun 7 - Jun 10 | 1.2 Consumer Thin Slice | Add profile and personalized verdict | Done |
| Sprint 5 | Jun 10 - Jun 14 | 1.2 Consumer Thin Slice | Add Fridge and expiry tracking | Done |
| Sprint 6 | Jun 14 - Jun 17 | 1.3 Data and Feature Extension | Add Open Food Facts fallback | Done |
| Sprint 7 | Jun 15 - Jun 20 | 1.3 Data and Feature Extension | Deliver Shopping List as a separate context | Done |
| Sprint 8 | Jun 17 - Jun 21 | 1.4 Deployment and Living Documentation | Prepare cloud deployment | Done |
| Sprint 9 | Jun 18 - Jun 22 | 1.4 Deployment and Living Documentation | Publish living documentation | Done |
Sprint A - Analysis and domain modeling¶
Goal: turn the broad Digital Product Passport opportunity into a manageable MVP scope.
Delivered:
- initial personas and MVP user stories;
- user journeys for scan, profile, verdict, Fridge and erasure;
- domain vocabulary and bounded contexts;
- ASR, QAS and initial architecture baseline.
Backlog after the sprint:
- validate the target user through interviews;
- clarify what belongs to PackyTrace and what belongs to producers / DPP infrastructure;
- prepare questions for mentor feedback.
Sprint B - Architecture and contracts¶
Goal: make the software scope implementable through service boundaries and contracts.
Delivered:
- microservices decomposition;
- API gateway and public / internal API design;
- key sequence flows;
- event schemas and generated contracts;
- service-level OpenAPI contracts.
Backlog after the sprint:
- create local platform setup;
- add CI checks before feature work grows;
- keep architecture aligned with the consumer-first scope.
Sprint C - CI, release and local platform¶
Goal: make development reproducible and reviewable.
Delivered:
- Docker Compose local platform;
- Postgres schemas and service-owned roles;
- Keycloak realm import;
- CI, journey, docs, contracts and release workflows;
- PR template and code ownership rules.
Backlog after the sprint:
- prove the platform with one real vertical flow;
- keep the mock UI available as demo fallback;
- avoid adding product features before the walking skeleton works.
Sprint 0 - Walking skeleton¶
Goal: connect the first real scan path through the stack.
Delivered:
- passport-service persistence and seed catalog;
ResolveScanuse case;- scan API with visitor ownership;
ProductScannedevent;- journey test for scan round-trip;
- web app connected to the real scan API.
Backlog after the sprint:
- support realistic GS1 Digital Link URLs;
- handle unknown products;
- improve the result page for real product data.
Sprint 1 - Anonymous scan¶
Goal: make the first user journey useful without requiring an account.
Delivered:
- GS1 Digital Link parser and validation;
- resolver route for QR-style product links;
- lot, serial and expiry handling;
- unknown-product request flow;
- real result page with graceful degradation.
Backlog after the sprint:
- remove UI elements that no longer belong to the MVP;
- make scan the primary entry point;
- keep the demo fallback separate from the real path.
Sprint 2 - Frontend rework¶
Goal: align the interface with the consumer-first product direction.
Delivered:
- removed Rewards and full AI chat from the MVP surface;
- scan-first home page;
- simplified navigation around Scan, Fridge and Profile;
- product result page prepared for the verdict;
- mock mode demoted to explicit fallback.
Backlog after the sprint:
- add account creation and session flow;
- explain why personalization needs consent;
- connect the verdict slot to real profile data.
Sprint 3 - Identity, sessions and consent¶
Goal: create the account and consent foundation needed for personalization.
Delivered:
- Keycloak setup;
- gateway JWT validation;
- account registration and visitor linking;
- session endpoints;
- consent ledger for health-profile data;
- real web authentication.
Backlog after the sprint:
- implement health profile;
- compute a deterministic verdict;
- handle consent revocation safely.
Sprint 4 - Profile and verdict¶
Goal: deliver the main product moment: "does this product fit me?"
Delivered:
- health-profile persistence;
- deterministic verdict rules;
- internal personalization endpoint;
- scan-to-verdict integration;
- degraded behavior when personalization is unavailable;
- web rendering for profile and verdict.
Backlog after the sprint:
- connect scans to product ownership at home;
- add Fridge states and expiry logic;
- prepare a simple waste summary.
Sprint 5 - Fridge¶
Goal: connect scanned products to expiry tracking and waste reduction.
Delivered:
- account-scoped item access;
- event-sourced Fridge model;
- add, consume and discard transitions;
- freshness policy;
- waste-summary projection;
- Fridge web integration.
Backlog after the sprint:
- add real external product data;
- distinguish trusted and community-sourced product data;
- decide whether Shopping List belongs in the current phase.
Sprint 6 - Open Food Facts¶
Goal: make the demo credible with real product data beyond the seed catalog.
Delivered:
- Open Food Facts adapter;
- read-through fallback for unknown catalog products;
- provenance marking;
- attribution and unverified-data disclosure;
- privacy wall for community-sourced products.
Backlog after the sprint:
- start Shopping List as a separate context;
- keep Shopping List out of the critical path for the event;
- polish scan and product states only where they support the demo.
Sprint 7 - Shopping List¶
Goal: start the "wanted products" loop without mixing it into the Fridge context.
Delivered:
- Shopping List defined as its own bounded context;
- domain model and API design;
- event schemas;
- service module;
- event-sourced aggregate and repository;
- HTTP adapter and server wiring;
- gateway routing;
- frontend Shopping List UI;
- user flow between Shopping List and Fridge.
Backlog after the sprint:
- validate whether Shopping List is valuable enough to remain a primary feature;
- continue usability validation without coupling the Shopping List and Fridge services.
Sprint 8 - AWS application deployment¶
Goal: make the application externally reviewable.
Delivered:
- single-box AWS deployment decision;
- Terraform infrastructure;
- production-oriented Docker Compose package;
- Caddy routing and TLS;
- secrets path through SSM Parameter Store;
- GHCR image pull path;
- deployment and rollback runbook.
Backlog after the sprint:
- run final journey checks before showing the platform;
- keep fallback demo available;
- document operational risks for the next cycle.
Sprint 9 - Cloudflare documentation deployment¶
Goal: publish the living documentation independently from the application runtime.
Delivered:
- Cloudflare Pages deployment decision;
- GitHub Actions direct-upload workflow;
- Cloudflare setup notes;
- strict local documentation build check;
- published management and technical documentation.
Backlog after the sprint:
- keep meeting log and validation sessions updated;
- use ClickUp to share key deliverables with non-technical members;
- add event feedback after the milestone.
Post-event backlog¶
The following items were intentionally kept outside the committed MVP closure:
- improve scan input, loading states and unknown-product reporting;
- add better consent explanations and trust views;
- continue internationalization polish;
- validate Compare and AI brief before building them;
- harden erasure delivery, outbox reliability and account deletion;
- extract and harden the GS1 Digital Link SDK.
Summary¶
The sprint sequence shows that the code work followed the same logic as the WBS: first foundations, then the consumer thin slice, then data extension, deployment and future backlog. The incomplete work is mainly outside the critical MVP path, so it does not block the phase closure.