This document translates the product and implementation guidance from AGENTS.md into a Scrum-friendly backlog for CartWise v1. It organizes work into epics, user stories, and implementation tasks that align with the required phased delivery order.
CartWise is a mobile-first grocery companion web app that helps households remember what to buy, what they bought, what they paid, and what they may need again soon.
A story is ready when:
A story is done when:
AGENTS.md architecture and scope- [ ] for not started tasks- [x] for completed tasksCW-EPIC-01 Platform FoundationCW-EPIC-02 Household and Access ControlCW-EPIC-03 Smart Shopping ListCW-EPIC-04 Product Catalog and Barcode ResolutionCW-EPIC-05 Stores, Purchases, and Price IntelligenceCW-EPIC-06 Shopping ModeCW-EPIC-07 Running-Low SuggestionsCW-EPIC-08 UX Polish, Security, and Release ReadinessCW-EPIC-01 Platform FoundationGoal: establish the solution structure, authentication, PostgreSQL wiring, and baseline engineering standards.
CW-STORY-01.1 Create solution skeletonUser story: As a developer, I want the CartWise solution scaffolded so the app follows a clean modular architecture.
Acceptance criteria
CartWise.sln existssrc/ and tests/ project layout matches the specTasks
CartWise.slnsrc/CartWise.Websrc/CartWise.Applicationsrc/CartWise.Domainsrc/CartWise.Infrastructuretests/CartWise.Domain.Teststests/CartWise.Application.Teststests/CartWise.Web.TestsCW-STORY-01.2 Configure application startupUser story: As a developer, I want a runnable MVC shell so the team can build on a working baseline.
Acceptance criteria
Tasks
wwwroot structureCW-STORY-01.3 Add Identity authenticationUser story: As a user, I want to sign in so my household data is protected.
Acceptance criteria
Tasks
ApplicationUserCW-STORY-01.4 Establish engineering baselineUser story: As a team, we want build and test standards so changes remain stable over time.
Acceptance criteria
Tasks
CW-EPIC-02 Household and Access ControlGoal: enable household creation, membership, and household-scoped authorization.
CW-STORY-02.1 Model households and membershipUser story: As a developer, I want household entities persisted so household features have a secure foundation.
Acceptance criteria
Tasks
Household entityHouseholdMember entityCW-STORY-02.2 Implement household serviceUser story: As a developer, I want household operations centralized so controllers stay thin and rules stay testable.
Acceptance criteria
Tasks
IHouseholdServiceHouseholdServiceCW-STORY-02.3 Build household UIUser story: As a user, I want to create and view my household so I can begin using CartWise.
Acceptance criteria
Tasks
HouseholdControllerViews/Household/Create.cshtmlViews/Household/Index.cshtmlCW-STORY-02.4 Enforce household authorizationUser story: As a user, I want household data isolated so other users cannot access it.
Acceptance criteria
Tasks
CW-EPIC-03 Smart Shopping ListGoal: allow household members to maintain a shared grocery list, including unresolved free-text items.
CW-STORY-03.1 Model shopping list and grocery conceptsUser story: As a developer, I want shopping list entities defined so shared list workflows can be persisted.
Acceptance criteria
Tasks
GroceryConceptProductCategoryShoppingListShoppingListItemCW-STORY-03.2 Implement active shopping list serviceUser story: As a user, I want my household to have an active grocery list so shared planning is easy.
Acceptance criteria
Tasks
IShoppingListServiceCW-STORY-03.3 Add grocery items quicklyUser story: As a household member, I want to add free-text grocery items quickly so I do not lose shopping intent.
Acceptance criteria
Tasks
DisplayName, quantity, and unitCW-STORY-03.4 Update shopping list itemsUser story: As a household member, I want to toggle, skip, and delete items so the list stays accurate.
Acceptance criteria
Tasks
CW-STORY-03.5 Deliver a mobile-first list UIUser story: As a shopper, I want a touch-friendly grocery list so it works well on my phone.
Acceptance criteria
Tasks
Views/ShoppingList/Index.cshtmlViews/ShoppingList/_ListItem.cshtmlwwwroot/js/pages/shopping-list.jsCW-EPIC-04 Product Catalog and Barcode ResolutionGoal: support product identity, household product preferences, and local-first barcode resolution with provider fallback.
CW-STORY-04.1 Model product catalog entitiesUser story: As a developer, I want product and identifier entities modeled so products can be resolved independently of UPC.
Acceptance criteria
Tasks
BrandProductProductIdentifierHouseholdProductPreferenceCW-STORY-04.2 Search and view productsUser story: As a user, I want to search and view products so I can understand and choose preferred items.
Acceptance criteria
Tasks
IProductServiceProductControllerViews/Product/Search.cshtmlViews/Product/Details.cshtmlCW-STORY-04.3 Implement barcode lookup flowUser story: As a shopper, I want a barcode lookup flow so known products can be resolved quickly.
Acceptance criteria
Tasks
IProductDataProviderCW-STORY-04.4 Integrate Open Food FactsUser story: As a developer, I want a provider fallback for unknown products so barcode resolution remains useful.
Acceptance criteria
Tasks
OpenFoodFactsProductDataProviderCW-STORY-04.5 Build scan pageUser story: As a shopper, I want a camera-based scan page so I can identify products with my phone.
Acceptance criteria
Tasks
ScanControllerViews/Scan/Index.cshtmlCW-EPIC-05 Stores, Purchases, and Price IntelligenceGoal: record where purchases happened and build a trustworthy append-only price history.
CW-STORY-05.1 Model retailers and store locationsUser story: As a developer, I want retailer and store entities so purchases can be tied to real locations.
Acceptance criteria
Tasks
RetailerStoreLocationCW-STORY-05.2 Model purchases and purchase itemsUser story: As a developer, I want purchase history modeled so shopping outcomes can be stored.
Acceptance criteria
Tasks
PurchasePurchaseItemCW-STORY-05.3 Model append-only price observationsUser story: As a developer, I want append-only price observations so historical price facts are preserved.
Acceptance criteria
Tasks
PriceObservationCW-STORY-05.4 Record household purchasesUser story: As a shopper, I want to record purchases so CartWise can remember what I bought and what I paid.
Acceptance criteria
Tasks
IPurchaseServiceCW-STORY-05.5 Derive price intelligenceUser story: As a user, I want price history and price insights so I can make better grocery decisions.
Acceptance criteria
Tasks
IPriceServiceCW-STORY-05.6 Build price viewsUser story: As a user, I want a price history screen so I can review what my household typically pays.
Acceptance criteria
Tasks
PriceControllerViews/Price/Index.cshtmlViews/Price/Product.cshtmlCW-EPIC-06 Shopping ModeGoal: provide a simple, touch-friendly in-store workflow for marking progress and recording purchases.
CW-STORY-06.1 Implement shopping mode serviceUser story: As a developer, I want shopping-mode orchestration so in-store behavior is consistent and testable.
Acceptance criteria
Tasks
IShoppingModeServiceCW-STORY-06.2 Build shopping mode UIUser story: As a shopper, I want a low-noise mobile shopping view so I can use CartWise during a real trip.
Acceptance criteria
Tasks
ShoppingControllerViews/Shopping/Start.cshtmlViews/Shopping/_ShoppingItem.cshtmlwwwroot/js/pages/shopping-mode.jsCW-STORY-06.3 Support in-store item actionsUser story: As a shopper, I want to mark items purchased, skipped, unavailable, or substituted so the trip stays accurate.
Acceptance criteria
Tasks
CW-STORY-06.4 Record prices while shoppingUser story: As a shopper, I want to optionally enter prices in shopping mode so price history stays current.
Acceptance criteria
Tasks
CW-EPIC-07 Running-Low SuggestionsGoal: use deterministic purchase history to suggest what a household may need soon.
CW-STORY-07.1 Build replenishment engineUser story: As a developer, I want deterministic running-low logic so suggestions are explainable and testable.
Acceptance criteria
Tasks
IReplenishmentServiceCW-STORY-07.2 Show suggestions on home and list viewsUser story: As a user, I want running-low suggestions surfaced in context so I can act on them quickly.
Acceptance criteria
Tasks
HomeViewModelCW-STORY-07.3 Add suggestion-to-list workflowUser story: As a user, I want to add a running-low suggestion to my list so I can convert insight into action quickly.
Acceptance criteria
Tasks
CW-EPIC-08 UX Polish, Security, and Release ReadinessGoal: harden the v1 experience for real-world use and release confidence.
CW-STORY-08.1 Improve mobile usability and accessibilityUser story: As a user, I want the app to be easy to use on my phone and accessible across core workflows.
Acceptance criteria
Tasks
CW-STORY-08.2 Harden security coverageUser story: As a team, we want security-sensitive paths reviewed so household data remains protected.
Acceptance criteria
Tasks
CW-STORY-08.3 Add diagnostics and loggingUser story: As a team, we want actionable diagnostics so failures can be understood and fixed quickly.
Acceptance criteria
Tasks
CW-STORY-08.4 Seed realistic development dataUser story: As a developer, I want realistic sample data so workflows can be tested quickly during development.
Acceptance criteria
Tasks
CW-EPIC-01 Platform FoundationCW-EPIC-02 Household and Access ControlCW-EPIC-02 Household and Access ControlCW-EPIC-03 Smart Shopping ListCW-EPIC-03 Smart Shopping ListCW-EPIC-04 Product Catalog and Barcode ResolutionCW-EPIC-05 Stores, Purchases, and Price IntelligenceCW-EPIC-06 Shopping ModeCW-EPIC-07 Running-Low SuggestionsCW-EPIC-08 UX Polish, Security, and Release ReadinessUse this format for new backlog items:
### `CW-STORY-XX.X` Story Title
**User story:** As a `user type`, I want `capability` so that `benefit`.
**Acceptance criteria**
- Criterion 1
- Criterion 2
**Tasks**
- [ ] Task 1
- [ ] Task 2
Powered by TurnKey Linux.