Skip to content

JRG: Deliverable 3 — Final Project: Gamification, Recipe Suggestions, Auto-Expiry Learning, Observability & Production Deployment#264

Open
jesramgue wants to merge 97 commits into
LIDR-academy:mainfrom
jesramgue:JRG--Deliverable-3--Final-Project
Open

JRG: Deliverable 3 — Final Project: Gamification, Recipe Suggestions, Auto-Expiry Learning, Observability & Production Deployment#264
jesramgue wants to merge 97 commits into
LIDR-academy:mainfrom
jesramgue:JRG--Deliverable-3--Final-Project

Conversation

@jesramgue

Copy link
Copy Markdown

Deliverable 3 — Final Project: Gamification, Recipe Suggestions, Auto-Expiry Learning, Observability & Production Deployment

Summary

This branch evolves the MVP from Deliverable 2 into the final, production-ready version of the app, adding four new feature modules plus observability and deployment infrastructure.

  • Gamification (back/src/modules/gamification, front/src/features/gamification, front/src/routes/achievements.tsx): points, badges, weekly scoring, and an achievements page, backed by a new cron job and DB migration.
  • Recipe suggestions (back/src/modules/recipes, front/src/features/recipes, front/src/routes/recipes.$mealId.tsx): TheMealDB integration to suggest recipes from pantry contents, with a "cook recipe" flow that consumes ingredients.
  • Auto-expiry learning / consumption automation (back/src/modules/expiration, back/src/modules/pantry/auto-expiry-cron.service.ts): learns/repairs expiry-date preferences per item and auto-dismisses expired items via a scheduled job, plus bulk waste/dismiss endpoints.
  • Notifications: extended with auto-expiry settings and push-subscription support.
  • Observability: structured logging (logging.interceptor), Sentry exception filter, and CloudWatch custom metrics integration.
  • Production infrastructure: backend Dockerfile, Makefile for dev/prod build & deploy, GitHub Actions deploy.yml workflow.
  • Cleanup: removed the Mercadona price-comparison feature (insights price-comparison endpoints and compare-price route) as out of scope; minor fixes to profile editing, password change, and account deletion; removed unused buttons.
  • Docs/tooling: added Spec Kit workflow (.specify/, .claude/skills, .github/agents) used to plan/spec/implement the above features, final user guide, and updated README with the demo video link.

Test plan

  • Backend unit/integration tests pass (back: new specs for gamification, recipes, expiration, auto-expiry cron, logging interceptor, Sentry filter, CloudWatch metrics)
  • Frontend tests pass (achievements.test.tsx, settings.test.tsx, pantry.test.tsx, auth.api.test.ts, etc.)
  • Manual smoke test: pantry → recipe suggestion → cook recipe → points/badges awarded
  • Manual smoke test: auto-expiry cron dismisses expired items and preferences adjust over time
  • Verify production deploy via Makefile / deploy.yml against the new Dockerized backend

alvarotech and others added 30 commits July 23, 2024 23:45
Entrega 3 (Final) del proyecto final AI4devs 202509 rookies
…entrga3-AVC"

This reverts commit dc01058, reversing
changes made to 5c88ab2.
…integration"

This reverts commit 5c88ab2, reversing
changes made to 3545364.
frontend - V1 (from Lovable)
backend - V1
infra - V1
docs - V1
…g across documentation and configuration files
jesramgue and others added 28 commits June 16, 2026 15:11
Removes the Mercadona/Algolia live price integration and the entire
price-comparison vertical (insights price-comparison endpoint, compare-price
route, normalizer, DTO, specs/003, EXT-008 ticket, and related tests) to
avoid third-party Terms-of-Service and credential concerns. The hardcoded
Algolia credentials are deleted from the working tree; history is scrubbed
separately. Keeps the unrelated /insights/waste metrics endpoint and the
priceCatalogItem model.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The price-comparison feature was removed, leaving the PriceCatalogItem
model with no readers. Removes the Prisma model and its seed data, and
adds a migration dropping the table.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
High severity (1–4):

CLAUDE.md:4 now points to specs/006-expiry-learning/plan.md, matching .github/copilot-instructions.md and .specify/feature.json.
Removed all stale Mercadona/PriceCatalogItem references from readme.md, docs/tickets/README.md, docs/product/product.md, and docs/tickets/extendedMVP/README.md (dead link to EXT-008-mercadona-price-comparison.md and its sequence entry removed too).
docs/api/openapi.yaml: removed the dead /api/insights/price-comparison endpoint + its 3 schemas, replaced with the real /api/insights/waste; added the ~27 missing endpoints (gamification, recipes, households, invitations, expiration preferences, auto-expiry settings, pantry bulk ops/events, push subscriptions) with matching request/response schemas derived directly from the controllers and DTOs. Validated the YAML parses cleanly.
Fixed the broken TKT-013 link in readme.md to point at the actual DISCARDED-TKT-013-...md file.
Lower severity (all but the specs/001-cicd-pipeline removal):

docs/db/main-entities.md and docs/db/database-model.md: removed the PRICE_CATALOG_ITEM entity everywhere (domain list, ER diagram, entity definitions, trade-offs, alignment checklist) and added the 6 missing models (UserPoints, UserBadge, AutoExpiryDigest, NotificationLog, PushSubscription, UserCategoryExpiryPreference) with fields matching the actual Prisma schema.
Replaced "Mercadona" test-fixture strings in front/src/routes/add.manual.test.tsx and front/tests/e2e/pantry/item-details-edit.spec.ts with neutral text; reran the affected Vitest file to confirm it still passes.
Deleted the orphaned root .env.example (used the wrong var name VITE_API_URL, unreferenced by any docs/scripts — back/.env.example/front/.env.example are the real, correctly-documented ones).
front/README.md now correctly describes the stack as React 19 + TanStack Start + TanStack Router + Vite, matching the architecture docs.
docs/local-development-setup.md §9 now documents dev.sh as a one-command shortcut for the manual multi-terminal workflow.
- Removed unused buttons
- Fixed Profile edition
- Enabled password change
- Enabled Account removal
@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 592 files, which is 492 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a3810f76-f25f-4a17-b0a6-f7f5451dfee6

📥 Commits

Reviewing files that changed from the base of the PR and between bcde5c4 and cb434ea.

⛔ Files ignored due to path filters (41)
  • back/package-lock.json is excluded by !**/package-lock.json
  • docs/design/01_Main.png is excluded by !**/*.png
  • docs/design/02_Login.png is excluded by !**/*.png
  • docs/design/03_Create_account.png is excluded by !**/*.png
  • docs/design/04_Pantry.png is excluded by !**/*.png
  • docs/design/05_Recipes.png is excluded by !**/*.png
  • docs/design/06_Add_items.png is excluded by !**/*.png
  • docs/design/07_Insights.png is excluded by !**/*.png
  • docs/design/08_Shared_pantry.png is excluded by !**/*.png
  • docs/design/09_Settings.png is excluded by !**/*.png
  • docs/user-guide/screenshots/01-landing.png is excluded by !**/*.png
  • docs/user-guide/screenshots/02-auth-login.png is excluded by !**/*.png
  • docs/user-guide/screenshots/03-auth-signup.png is excluded by !**/*.png
  • docs/user-guide/screenshots/04-pantry.png is excluded by !**/*.png
  • docs/user-guide/screenshots/05-pantry-expiring.png is excluded by !**/*.png
  • docs/user-guide/screenshots/06-add-receipt.png is excluded by !**/*.png
  • docs/user-guide/screenshots/07-add-manual-2.png is excluded by !**/*.png
  • docs/user-guide/screenshots/07-add-manual.png is excluded by !**/*.png
  • docs/user-guide/screenshots/08-item-detail-2.png is excluded by !**/*.png
  • docs/user-guide/screenshots/08-item-detail.png is excluded by !**/*.png
  • docs/user-guide/screenshots/09-recipes.png is excluded by !**/*.png
  • docs/user-guide/screenshots/10-recipe-detail-2.png is excluded by !**/*.png
  • docs/user-guide/screenshots/10-recipe-detail.png is excluded by !**/*.png
  • docs/user-guide/screenshots/11-insights-2.png is excluded by !**/*.png
  • docs/user-guide/screenshots/11-insights.png is excluded by !**/*.png
  • docs/user-guide/screenshots/12-notifications.png is excluded by !**/*.png
  • docs/user-guide/screenshots/13-achievements-2.png is excluded by !**/*.png
  • docs/user-guide/screenshots/13-achievements.png is excluded by !**/*.png
  • docs/user-guide/screenshots/14-sharing.png is excluded by !**/*.png
  • docs/user-guide/screenshots/15-settings-2.png is excluded by !**/*.png
  • docs/user-guide/screenshots/15-settings.png is excluded by !**/*.png
  • front/bun.lock is excluded by !**/*.lock
  • front/package-lock.json is excluded by !**/package-lock.json
  • package-lock.json is excluded by !**/package-lock.json
  • prompts/extendedMVP/Achievements_and_Badges.png is excluded by !**/*.png
  • prompts/extendedMVP/Dashboard_achievements.png is excluded by !**/*.png
  • prompts/extendedMVP/Price_Comparaison.png is excluded by !**/*.png
  • prompts/extendedMVP/auto-expire_new_settings.png is excluded by !**/*.png
  • prompts/extendedMVP/email_notifications.png is excluded by !**/*.png
  • prompts/extendedMVP/push_notifications.png is excluded by !**/*.png
  • tests/e2e/Test-Ticket.png is excluded by !**/*.png
📒 Files selected for processing (592)
  • .agents/skills/postgresql/SKILL.md
  • .agents/skills/prd/SKILL.md
  • .agents/skills/prisma-cli/SKILL.md
  • .agents/skills/prisma-cli/references/db-execute.md
  • .agents/skills/prisma-cli/references/db-pull.md
  • .agents/skills/prisma-cli/references/db-push.md
  • .agents/skills/prisma-cli/references/db-seed.md
  • .agents/skills/prisma-cli/references/debug.md
  • .agents/skills/prisma-cli/references/dev.md
  • .agents/skills/prisma-cli/references/format.md
  • .agents/skills/prisma-cli/references/generate.md
  • .agents/skills/prisma-cli/references/init.md
  • .agents/skills/prisma-cli/references/mcp.md
  • .agents/skills/prisma-cli/references/migrate-deploy.md
  • .agents/skills/prisma-cli/references/migrate-dev.md
  • .agents/skills/prisma-cli/references/migrate-diff.md
  • .agents/skills/prisma-cli/references/migrate-reset.md
  • .agents/skills/prisma-cli/references/migrate-resolve.md
  • .agents/skills/prisma-cli/references/migrate-status.md
  • .agents/skills/prisma-cli/references/studio.md
  • .agents/skills/prisma-cli/references/validate.md
  • .agents/skills/prisma-client-api/SKILL.md
  • .agents/skills/prisma-client-api/references/client-methods.md
  • .agents/skills/prisma-client-api/references/constructor.md
  • .agents/skills/prisma-client-api/references/filters.md
  • .agents/skills/prisma-client-api/references/model-queries.md
  • .agents/skills/prisma-client-api/references/query-options.md
  • .agents/skills/prisma-client-api/references/raw-queries.md
  • .agents/skills/prisma-client-api/references/relations.md
  • .agents/skills/prisma-client-api/references/transactions.md
  • .agents/skills/prisma-postgres-setup/SKILL.md
  • .agents/skills/prisma-postgres-setup/references/api-basics.md
  • .agents/skills/prisma-postgres-setup/references/auth.md
  • .agents/skills/prisma-postgres-setup/references/endpoints.md
  • .agents/skills/prisma-postgres-setup/references/prisma7-client.md
  • .agents/skills/prisma-postgres/SKILL.md
  • .agents/skills/prisma-postgres/references/console-and-connections.md
  • .agents/skills/prisma-postgres/references/create-db-cli.md
  • .agents/skills/prisma-postgres/references/management-api-sdk.md
  • .agents/skills/prisma-postgres/references/management-api.md
  • .agents/skills/realsavefooding-full-stack-engineer/SKILL.md
  • .agents/skills/realsavefooding-full-stack-engineer/references/project-context.md
  • .agents/skills/realsavefooding-full-stack-engineer/references/validation-checks.md
  • .agents/skills/speckit-agent-context-update/SKILL.md
  • .agents/skills/user-story/SKILL.md
  • .claude/skills/postgresql
  • .claude/skills/prd
  • .claude/skills/prisma-cli
  • .claude/skills/prisma-client-api
  • .claude/skills/prisma-postgres
  • .claude/skills/prisma-postgres-setup
  • .claude/skills/realsavefooding-full-stack-engineer
  • .claude/skills/speckit-agent-context-update/SKILL.md
  • .claude/skills/speckit-analyze/SKILL.md
  • .claude/skills/speckit-checklist/SKILL.md
  • .claude/skills/speckit-clarify/SKILL.md
  • .claude/skills/speckit-constitution/SKILL.md
  • .claude/skills/speckit-converge/SKILL.md
  • .claude/skills/speckit-implement/SKILL.md
  • .claude/skills/speckit-plan/SKILL.md
  • .claude/skills/speckit-specify/SKILL.md
  • .claude/skills/speckit-tasks/SKILL.md
  • .claude/skills/speckit-taskstoissues/SKILL.md
  • .claude/skills/user-story
  • .github/agents/docs-maintainer.agent.md
  • .github/agents/speckit.agent-context.update.agent.md
  • .github/agents/speckit.analyze.agent.md
  • .github/agents/speckit.checklist.agent.md
  • .github/agents/speckit.clarify.agent.md
  • .github/agents/speckit.constitution.agent.md
  • .github/agents/speckit.converge.agent.md
  • .github/agents/speckit.implement.agent.md
  • .github/agents/speckit.plan.agent.md
  • .github/agents/speckit.specify.agent.md
  • .github/agents/speckit.tasks.agent.md
  • .github/agents/speckit.taskstoissues.agent.md
  • .github/copilot-instructions.md
  • .github/prompts/speckit.agent-context.update.prompt.md
  • .github/prompts/speckit.analyze.prompt.md
  • .github/prompts/speckit.checklist.prompt.md
  • .github/prompts/speckit.clarify.prompt.md
  • .github/prompts/speckit.constitution.prompt.md
  • .github/prompts/speckit.converge.prompt.md
  • .github/prompts/speckit.implement.prompt.md
  • .github/prompts/speckit.plan.prompt.md
  • .github/prompts/speckit.specify.prompt.md
  • .github/prompts/speckit.tasks.prompt.md
  • .github/prompts/speckit.taskstoissues.prompt.md
  • .github/workflows/ci.yml
  • .github/workflows/deploy.yml
  • .gitignore
  • .specify/extensions.yml
  • .specify/extensions/.registry
  • .specify/extensions/agent-context/README.md
  • .specify/extensions/agent-context/agent-context-config.yml
  • .specify/extensions/agent-context/commands/speckit.agent-context.update.md
  • .specify/extensions/agent-context/extension.yml
  • .specify/extensions/agent-context/scripts/bash/update-agent-context.sh
  • .specify/extensions/agent-context/scripts/powershell/update-agent-context.ps1
  • .specify/feature.json
  • .specify/init-options.json
  • .specify/integration.json
  • .specify/integrations/claude.manifest.json
  • .specify/integrations/copilot.manifest.json
  • .specify/integrations/speckit.manifest.json
  • .specify/memory/constitution.md
  • .specify/scripts/bash/check-prerequisites.sh
  • .specify/scripts/bash/common.sh
  • .specify/scripts/bash/create-new-feature.sh
  • .specify/scripts/bash/setup-plan.sh
  • .specify/scripts/bash/setup-tasks.sh
  • .specify/templates/checklist-template.md
  • .specify/templates/constitution-template.md
  • .specify/templates/plan-template.md
  • .specify/templates/spec-template.md
  • .specify/templates/tasks-template.md
  • .specify/workflows/speckit/workflow.yml
  • .specify/workflows/workflow-registry.json
  • .vscode/settings.json
  • CLAUDE.md
  • Makefile
  • back/.dockerignore
  • back/.env.example
  • back/.gitignore
  • back/Dockerfile
  • back/README.md
  • back/nest-cli.json
  • back/package.json
  • back/prisma/migrations/20260612100148_init/migration.sql
  • back/prisma/migrations/20260612103419_pantry_unit_field/migration.sql
  • back/prisma/migrations/20260612131000_receipts_upload_ocr/migration.sql
  • back/prisma/migrations/20260613091500_expiration_assessment/migration.sql
  • back/prisma/migrations/20260613120245_tkt_005_notifications_preferences/migration.sql
  • back/prisma/migrations/20260613123528_tkt_005_notification_toggle_fields/migration.sql
  • back/prisma/migrations/20260613130457_tkt_006_price_catalog_item/migration.sql
  • back/prisma/migrations/20260613141146_pantry_price_paid/migration.sql
  • back/prisma/migrations/20260613144056_dashboard_consumption_events/migration.sql
  • back/prisma/migrations/20260613154733_tkt_008_household_sharing/migration.sql
  • back/prisma/migrations/20260614080140_add_waste_metrics_to_consumption_event/migration.sql
  • back/prisma/migrations/20260614143302_add_item_name_unit_to_consumption_event/migration.sql
  • back/prisma/migrations/20260615084658_tkt_011_receipt_household_normalized_lifecycle/migration.sql
  • back/prisma/migrations/20260615134257_add_storage_location_to_pantry_item/migration.sql
  • back/prisma/migrations/20260620092844_add_notes_and_event_restore_fields/migration.sql
  • back/prisma/migrations/20260620094204_add_event_item_notes/migration.sql
  • back/prisma/migrations/20260620170147_ext001_notification_delivery/migration.sql
  • back/prisma/migrations/20260626112439_add_gamification/migration.sql
  • back/prisma/migrations/20260626133205_add_auto_expiry/migration.sql
  • back/prisma/migrations/20260626172748_drop_price_catalog_item/migration.sql
  • back/prisma/migrations/20260629224428_add_user_category_expiry_preference/migration.sql
  • back/prisma/migrations/20260704230132_add_user_profile_fields/migration.sql
  • back/prisma/migrations/20260704233230_cascade_delete_user_relations/migration.sql
  • back/prisma/migrations/migration_lock.toml
  • back/prisma/schema.prisma
  • back/prisma/seed.ts
  • back/src/app.module.ts
  • back/src/common/filters/sentry-exception.filter.spec.ts
  • back/src/common/filters/sentry-exception.filter.ts
  • back/src/common/interceptors/logging.interceptor.spec.ts
  • back/src/common/interceptors/logging.interceptor.ts
  • back/src/common/logger/logger.module.spec.ts
  • back/src/common/logger/logger.module.ts
  • back/src/common/logger/mask-user-id.spec.ts
  • back/src/common/logger/mask-user-id.ts
  • back/src/common/metrics/metrics.controller.ts
  • back/src/common/metrics/metrics.module.ts
  • back/src/common/metrics/metrics.service.spec.ts
  • back/src/common/metrics/metrics.service.ts
  • back/src/database/database.module.ts
  • back/src/database/prisma.service.ts
  • back/src/health/health.controller.ts
  • back/src/health/health.module.ts
  • back/src/integrations/aws-cloudwatch/cloudwatch-metrics.service.spec.ts
  • back/src/integrations/aws-cloudwatch/cloudwatch-metrics.service.ts
  • back/src/integrations/aws-s3/README.md
  • back/src/integrations/aws-s3/aws-s3-receipt-storage.service.ts
  • back/src/integrations/aws-s3/local-receipt-storage.service.ts
  • back/src/integrations/aws-ses/ses.service.spec.ts
  • back/src/integrations/aws-ses/ses.service.ts
  • back/src/integrations/aws-sns/README.md
  • back/src/integrations/aws-textract/README.md
  • back/src/integrations/aws-textract/aws-textract-receipt-ocr.service.spec.ts
  • back/src/integrations/aws-textract/aws-textract-receipt-ocr.service.ts
  • back/src/integrations/aws-textract/local-receipt-ocr.service.ts
  • back/src/integrations/themealdb/themealdb.module.ts
  • back/src/integrations/themealdb/themealdb.service.spec.ts
  • back/src/integrations/themealdb/themealdb.service.ts
  • back/src/integrations/web-push/web-push.service.spec.ts
  • back/src/integrations/web-push/web-push.service.ts
  • back/src/main.ts
  • back/src/modules/auth/auth.controller.ts
  • back/src/modules/auth/auth.module.ts
  • back/src/modules/auth/auth.service.spec.ts
  • back/src/modules/auth/auth.service.ts
  • back/src/modules/auth/dto/auth-credentials.dto.ts
  • back/src/modules/auth/dto/change-password.dto.ts
  • back/src/modules/auth/jwt-auth.guard.ts
  • back/src/modules/auth/jwt.strategy.ts
  • back/src/modules/auth/types/jwt-payload.type.ts
  • back/src/modules/dashboard/dashboard.controller.ts
  • back/src/modules/dashboard/dashboard.module.ts
  • back/src/modules/dashboard/dashboard.ranking.spec.ts
  • back/src/modules/dashboard/dashboard.ranking.ts
  • back/src/modules/dashboard/dashboard.service.ts
  • back/src/modules/expiration/dto/expiry-preference.dto.ts
  • back/src/modules/expiration/dto/update-item-expiration.dto.ts
  • back/src/modules/expiration/expiration-preference.repository.spec.ts
  • back/src/modules/expiration/expiration-preference.repository.ts
  • back/src/modules/expiration/expiration-rules.service.spec.ts
  • back/src/modules/expiration/expiration-rules.service.ts
  • back/src/modules/expiration/expiration.controller.spec.ts
  • back/src/modules/expiration/expiration.controller.ts
  • back/src/modules/expiration/expiration.module.ts
  • back/src/modules/expiration/expiration.service.spec.ts
  • back/src/modules/expiration/expiration.service.ts
  • back/src/modules/gamification/badge-catalog.ts
  • back/src/modules/gamification/badge.service.spec.ts
  • back/src/modules/gamification/badge.service.ts
  • back/src/modules/gamification/dto/get-history-query.dto.ts
  • back/src/modules/gamification/gamification-cron.service.spec.ts
  • back/src/modules/gamification/gamification-cron.service.ts
  • back/src/modules/gamification/gamification.controller.spec.ts
  • back/src/modules/gamification/gamification.controller.ts
  • back/src/modules/gamification/gamification.module.ts
  • back/src/modules/gamification/gamification.service.spec.ts
  • back/src/modules/gamification/gamification.service.ts
  • back/src/modules/gamification/points.service.spec.ts
  • back/src/modules/gamification/points.service.ts
  • back/src/modules/gamification/scoring.ts
  • back/src/modules/gamification/week.ts
  • back/src/modules/households/dto/create-household.dto.ts
  • back/src/modules/households/dto/create-invitation.dto.ts
  • back/src/modules/households/dto/transfer-ownership.dto.ts
  • back/src/modules/households/households.controller.ts
  • back/src/modules/households/households.module.ts
  • back/src/modules/households/households.service.spec.ts
  • back/src/modules/households/households.service.ts
  • back/src/modules/households/invitations.controller.ts
  • back/src/modules/insights/insights.controller.ts
  • back/src/modules/insights/insights.module.ts
  • back/src/modules/insights/insights.service.spec.ts
  • back/src/modules/insights/insights.service.ts
  • back/src/modules/notifications/dto/auto-expiry-settings.dto.ts
  • back/src/modules/notifications/dto/create-push-subscription.dto.ts
  • back/src/modules/notifications/dto/update-notification-preference.dto.ts
  • back/src/modules/notifications/notification-delivery.service.spec.ts
  • back/src/modules/notifications/notification-delivery.service.ts
  • back/src/modules/notifications/notification-events.publisher.ts
  • back/src/modules/notifications/notification-preferences.service.spec.ts
  • back/src/modules/notifications/notification-preferences.service.ts
  • back/src/modules/notifications/notification-threshold.service.spec.ts
  • back/src/modules/notifications/notification-threshold.service.ts
  • back/src/modules/notifications/notifications.controller.spec.ts
  • back/src/modules/notifications/notifications.controller.ts
  • back/src/modules/notifications/notifications.module.ts
  • back/src/modules/notifications/notifications.scheduler.ts
  • back/src/modules/notifications/notifications.service.spec.ts
  • back/src/modules/notifications/notifications.service.ts
  • back/src/modules/notifications/ports/notification-ports.ts
  • back/src/modules/pantry/auto-expiry-cron.service.spec.ts
  • back/src/modules/pantry/auto-expiry-cron.service.ts
  • back/src/modules/pantry/dto/bulk-dismiss-expired.dto.ts
  • back/src/modules/pantry/dto/bulk-waste.dto.ts
  • back/src/modules/pantry/dto/create-pantry-item.dto.ts
  • back/src/modules/pantry/dto/register-consumption-event.dto.ts
  • back/src/modules/pantry/dto/update-pantry-item.dto.ts
  • back/src/modules/pantry/pantry-use-next.controller.ts
  • back/src/modules/pantry/pantry.controller.spec.ts
  • back/src/modules/pantry/pantry.controller.ts
  • back/src/modules/pantry/pantry.module.ts
  • back/src/modules/pantry/pantry.ranking.spec.ts
  • back/src/modules/pantry/pantry.ranking.ts
  • back/src/modules/pantry/pantry.service.spec.ts
  • back/src/modules/pantry/pantry.service.ts
  • back/src/modules/receipts/dto/confirm-receipt-items.dto.ts
  • back/src/modules/receipts/mappers/receipt-extraction.mapper.spec.ts
  • back/src/modules/receipts/mappers/receipt-extraction.mapper.ts
  • back/src/modules/receipts/ports/receipt-ports.ts
  • back/src/modules/receipts/receipts.adapter-selection.spec.ts
  • back/src/modules/receipts/receipts.adapter-selection.ts
  • back/src/modules/receipts/receipts.controller.ts
  • back/src/modules/receipts/receipts.metrics.ts
  • back/src/modules/receipts/receipts.module.ts
  • back/src/modules/receipts/receipts.service.spec.ts
  • back/src/modules/receipts/receipts.service.ts
  • back/src/modules/recipes/dto/cook-recipe.dto.ts
  • back/src/modules/recipes/recipes.controller.spec.ts
  • back/src/modules/recipes/recipes.controller.ts
  • back/src/modules/recipes/recipes.module.ts
  • back/src/modules/recipes/recipes.service.spec.ts
  • back/src/modules/recipes/recipes.service.ts
  • back/src/modules/users/dto/update-profile.dto.ts
  • back/src/modules/users/users.module.ts
  • back/src/modules/users/users.service.spec.ts
  • back/src/modules/users/users.service.ts
  • back/test/app.e2e-spec.ts
  • back/test/auto-expiry.e2e-spec.ts
  • back/test/dashboard.e2e-spec.ts
  • back/test/expiration.e2e-spec.ts
  • back/test/gamification.e2e-spec.ts
  • back/test/households.e2e-spec.ts
  • back/test/jest-e2e.json
  • back/test/jest-unit.json
  • back/test/notifications.e2e-spec.ts
  • back/test/pantry.e2e-spec.ts
  • back/test/receipts.e2e-spec.ts
  • back/test/recipes.e2e-spec.ts
  • back/tsconfig.build.json
  • back/tsconfig.json
  • dev.ps1
  • dev.sh
  • docs/api/openapi.yaml
  • docs/architecture/C4-Model.md
  • docs/architecture/architecture.md
  • docs/architecture/container-diagram.md
  • docs/architecture/context-diagram.md
  • docs/architecture/decisions/0001-modular-monolith.md
  • docs/db/database-model.md
  • docs/db/main-entities.md
  • docs/deployment/aws-free-tier-runbook.md
  • docs/design/readme.md
  • docs/local-development-setup.md
  • docs/prod-development-setup.md
  • docs/product/1_Idea-to-product.md
  • docs/product/2_Market-research.md
  • docs/product/3_PRD.md
  • docs/product/4_User-stories.md
  • docs/product/5_Extended-Non-MVP-PRD.md
  • docs/product/6_Future-Capabilities.md
  • docs/product/Non-MVP.md
  • docs/product/product.md
  • docs/testing/test-strategy.md
  • docs/tickets/DISCARDED-TKT-013-database-core-schema-household-pantry-events.md
  • docs/tickets/README.md
  • docs/tickets/TKT-001-auth-register-login.md
  • docs/tickets/TKT-002-pantry-manual-add-item.md
  • docs/tickets/TKT-003-receipt-upload-ocr.md
  • docs/tickets/TKT-004-expiration-confidence-flow.md
  • docs/tickets/TKT-005-expiring-notifications.md
  • docs/tickets/TKT-006-price-comparison-mvp-dataset.md
  • docs/tickets/TKT-007-dashboard-summary-use-next.md
  • docs/tickets/TKT-008-household-sharing-invite-accept.md
  • docs/tickets/TKT-009-consumption-waste-events.md
  • docs/tickets/TKT-010-use-next-prioritization.md
  • docs/tickets/TKT-011-backend-receipt-ocr-pipeline.md
  • docs/tickets/TKT-012-frontend-pantry-add-item-flow.md
  • docs/tickets/TKT-014-mvp-hardening-schema-receipts-pantry.md
  • docs/tickets/extendedMVP/EXT-001-notification-delivery.md
  • docs/tickets/extendedMVP/EXT-002-cicd-pipeline.md
  • docs/tickets/extendedMVP/EXT-003-production-infrastructure.md
  • docs/tickets/extendedMVP/EXT-004-observability-logging.md
  • docs/tickets/extendedMVP/EXT-005-recipe-suggestions.md
  • docs/tickets/extendedMVP/EXT-006-barcode-scan.md
  • docs/tickets/extendedMVP/EXT-007-expiry-learning.md
  • docs/tickets/extendedMVP/EXT-009-gamification.md
  • docs/tickets/extendedMVP/EXT-010-consumption-automation.md
  • docs/tickets/extendedMVP/README.md
  • docs/tickets/ticketing-strategy.md
  • docs/user-guide/README.md
  • front/.dockerignore
  • front/.env.example
  • front/.gitignore
  • front/.lovable/project.json
  • front/.prettierignore
  • front/.prettierrc
  • front/Dockerfile
  • front/README.md
  • front/bunfig.toml
  • front/components.json
  • front/eslint.config.js
  • front/package.json
  • front/playwright.config.ts
  • front/public/sw.js
  • front/src/app/router.tsx
  • front/src/app/start.ts
  • front/src/components/AppShell.tsx
  • front/src/components/ExpiredItemsReview.test.tsx
  • front/src/components/ExpiredItemsReview.tsx
  • front/src/components/PointsSummaryWidget.test.tsx
  • front/src/components/PointsSummaryWidget.tsx
  • front/src/components/RecipeCard.tsx
  • front/src/components/ui/accordion.tsx
  • front/src/components/ui/alert-dialog.tsx
  • front/src/components/ui/alert.tsx
  • front/src/components/ui/aspect-ratio.tsx
  • front/src/components/ui/avatar.tsx
  • front/src/components/ui/badge.tsx
  • front/src/components/ui/breadcrumb.tsx
  • front/src/components/ui/button.tsx
  • front/src/components/ui/calendar.tsx
  • front/src/components/ui/card.tsx
  • front/src/components/ui/carousel.tsx
  • front/src/components/ui/chart.tsx
  • front/src/components/ui/checkbox.tsx
  • front/src/components/ui/collapsible.tsx
  • front/src/components/ui/command.tsx
  • front/src/components/ui/context-menu.tsx
  • front/src/components/ui/dialog.tsx
  • front/src/components/ui/drawer.tsx
  • front/src/components/ui/dropdown-menu.tsx
  • front/src/components/ui/form.tsx
  • front/src/components/ui/hover-card.tsx
  • front/src/components/ui/input-otp.tsx
  • front/src/components/ui/input.tsx
  • front/src/components/ui/label.tsx
  • front/src/components/ui/menubar.tsx
  • front/src/components/ui/navigation-menu.tsx
  • front/src/components/ui/pagination.tsx
  • front/src/components/ui/popover.tsx
  • front/src/components/ui/progress.tsx
  • front/src/components/ui/radio-group.tsx
  • front/src/components/ui/resizable.tsx
  • front/src/components/ui/scroll-area.tsx
  • front/src/components/ui/select.tsx
  • front/src/components/ui/separator.tsx
  • front/src/components/ui/sheet.tsx
  • front/src/components/ui/sidebar.tsx
  • front/src/components/ui/skeleton.tsx
  • front/src/components/ui/slider.tsx
  • front/src/components/ui/sonner.tsx
  • front/src/components/ui/switch.tsx
  • front/src/components/ui/table.tsx
  • front/src/components/ui/tabs.tsx
  • front/src/components/ui/textarea.tsx
  • front/src/components/ui/toggle-group.tsx
  • front/src/components/ui/toggle.tsx
  • front/src/components/ui/tooltip.tsx
  • front/src/features/auth/README.md
  • front/src/features/auth/auth.api.test.ts
  • front/src/features/auth/auth.api.ts
  • front/src/features/auth/route-guard.ts
  • front/src/features/auth/session.ts
  • front/src/features/dashboard/README.md
  • front/src/features/dashboard/dashboard.api.ts
  • front/src/features/gamification/badge-catalog.ts
  • front/src/features/gamification/gamification.api.ts
  • front/src/features/households/households.api.ts
  • front/src/features/insights/insights.api.ts
  • front/src/features/notifications/README.md
  • front/src/features/notifications/notifications.api.ts
  • front/src/features/notifications/push-subscription.test.ts
  • front/src/features/notifications/push-subscription.ts
  • front/src/features/pantry/README.md
  • front/src/features/pantry/UseNextList.tsx
  • front/src/features/pantry/add-item.schema.test.ts
  • front/src/features/pantry/add-item.schema.ts
  • front/src/features/pantry/pantry-view-state.ts
  • front/src/features/pantry/pantry.api.ts
  • front/src/features/receipts/README.md
  • front/src/features/receipts/receipts.api.ts
  • front/src/features/recipes/recipes.api.ts
  • front/src/features/recipes/recipes.types.ts
  • front/src/hooks/use-mobile.tsx
  • front/src/lib/api/example.functions.ts
  • front/src/lib/config.server.ts
  • front/src/lib/error-capture.ts
  • front/src/lib/error-page.ts
  • front/src/lib/lovable-error-reporting.ts
  • front/src/lib/mock-data.ts
  • front/src/lib/utils.ts
  • front/src/routeTree.gen.ts
  • front/src/router.tsx
  • front/src/routes/README.md
  • front/src/routes/__root.tsx
  • front/src/routes/achievements.test.tsx
  • front/src/routes/achievements.tsx
  • front/src/routes/add.manual.test.tsx
  • front/src/routes/add.manual.tsx
  • front/src/routes/add.tsx
  • front/src/routes/auth.tsx
  • front/src/routes/index.tsx
  • front/src/routes/insights.tsx
  • front/src/routes/item.$id.tsx
  • front/src/routes/notifications.tsx
  • front/src/routes/pantry.test.tsx
  • front/src/routes/pantry.tsx
  • front/src/routes/recipes.$mealId.tsx
  • front/src/routes/recipes.tsx
  • front/src/routes/settings.test.tsx
  • front/src/routes/settings.tsx
  • front/src/routes/sharing.tsx
  • front/src/server.ts
  • front/src/shared/README.md
  • front/src/shared/lib/analytics.test.ts
  • front/src/shared/lib/analytics.ts
  • front/src/start.ts
  • front/src/styles.css
  • front/src/test/RecipeCard.test.tsx
  • front/src/test/setup.ts
  • front/test-results/.last-run.json
  • front/test-results/add-manual-and-receipt-flo-39eca-editing-before-confirmation/error-context.md
  • front/test-results/add-manual-and-receipt-flo-a0608-nds-pricePaid-when-provided/error-context.md
  • front/tests/README.md
  • front/tests/e2e/add/add-item-journey.spec.ts
  • front/tests/e2e/add/manual-and-receipt-flow.ui.spec.ts
  • front/tests/e2e/dashboard/dashboard-summary-use-next.spec.ts
  • front/tests/e2e/expiration-confidence-flow.spec.ts
  • front/tests/e2e/expiration-confidence-flow.ui.spec.ts
  • front/tests/e2e/gamification/achievements.spec.ts
  • front/tests/e2e/insights/waste-events.spec.ts
  • front/tests/e2e/notifications/_helpers.ts
  • front/tests/e2e/notifications/boundary-cases.spec.ts
  • front/tests/e2e/notifications/expiring-items.spec.ts
  • front/tests/e2e/notifications/preferences.spec.ts
  • front/tests/e2e/pantry/consumed-wasted-history.spec.ts
  • front/tests/e2e/pantry/item-details-edit.spec.ts
  • front/tests/e2e/pantry/use-next-prioritization.spec.ts
  • front/tests/e2e/recipes/recipe-suggestions.spec.ts
  • front/tests/e2e/sharing/_helpers.ts
  • front/tests/e2e/sharing/household-invite-accept.spec.ts
  • front/tsconfig.json
  • front/vite.config.ts
  • front/vitest.config.ts
  • infra/docker/docker-compose.local.yml
  • infra/docker/docker-compose.prod.yml
  • infra/docker/prod.secrets.env.example
  • infra/terraform/envs/dev/main.tf
  • infra/terraform/envs/dev/variables.tf
  • infra/terraform/envs/prod/.terraform.lock.hcl
  • infra/terraform/envs/prod/main.tf
  • infra/terraform/envs/prod/outputs.tf
  • infra/terraform/envs/prod/terraform.tfvars.example
  • infra/terraform/envs/prod/variables.tf
  • prod.ps1
  • prod.sh
  • prompts.md
  • prompts/extendedMVP/prompts-EXT-001.md
  • prompts/extendedMVP/prompts-EXT-002.md
  • prompts/extendedMVP/prompts-EXT-003.md
  • prompts/extendedMVP/prompts-EXT-004.md
  • prompts/extendedMVP/prompts-EXT-005.md
  • prompts/extendedMVP/prompts-EXT-007.md
  • prompts/extendedMVP/prompts-EXT-008-functionality_removed.md
  • prompts/extendedMVP/prompts-EXT-009.md
  • prompts/extendedMVP/prompts-EXT-010.md
  • prompts/prompts-TKT-001.md
  • prompts/prompts-TKT-002.md
  • prompts/prompts-TKT-003.md
  • prompts/prompts-TKT-004.md
  • prompts/prompts-TKT-005.md
  • prompts/prompts-TKT-006.md
  • prompts/prompts-TKT-007.md
  • prompts/prompts-TKT-008.md
  • prompts/prompts-TKT-009.md
  • prompts/prompts-TKT-010.md
  • prompts/prompts-TKT-011.md
  • prompts/prompts-TKT-012.md
  • readme.md
  • skills-lock.json
  • specs/002-recipe-suggestions/checklists/requirements.md
  • specs/002-recipe-suggestions/contracts/api.md
  • specs/002-recipe-suggestions/data-model.md
  • specs/002-recipe-suggestions/plan.md
  • specs/002-recipe-suggestions/quickstart.md
  • specs/002-recipe-suggestions/research.md
  • specs/002-recipe-suggestions/spec.md
  • specs/002-recipe-suggestions/tasks.md
  • specs/003-observability-logging/checklists/requirements.md
  • specs/003-observability-logging/contracts/business-metrics.md
  • specs/003-observability-logging/contracts/log-record.md
  • specs/003-observability-logging/data-model.md
  • specs/003-observability-logging/plan.md
  • specs/003-observability-logging/quickstart.md
  • specs/003-observability-logging/research.md
  • specs/003-observability-logging/spec.md
  • specs/003-observability-logging/tasks.md
  • specs/004-gamification/checklists/requirements.md
  • specs/004-gamification/contracts/gamification-history.md
  • specs/004-gamification/contracts/gamification-summary.md
  • specs/004-gamification/data-model.md
  • specs/004-gamification/plan.md
  • specs/004-gamification/quickstart.md
  • specs/004-gamification/research.md
  • specs/004-gamification/spec.md
  • specs/004-gamification/tasks.md
  • specs/005-consumption-automation/checklists/requirements.md
  • specs/005-consumption-automation/contracts/auto-expiry-settings.openapi.yaml
  • specs/005-consumption-automation/contracts/pantry-expiry.openapi.yaml
  • specs/005-consumption-automation/data-model.md
  • specs/005-consumption-automation/plan.md
  • specs/005-consumption-automation/quickstart.md
  • specs/005-consumption-automation/research.md
  • specs/005-consumption-automation/spec.md
  • specs/005-consumption-automation/tasks.md
  • specs/006-expiry-learning/checklists/requirements.md
  • specs/006-expiry-learning/contracts/expiration-preferences-api.md
  • specs/006-expiry-learning/data-model.md
  • specs/006-expiry-learning/plan.md
  • specs/006-expiry-learning/quickstart.md
  • specs/006-expiry-learning/research.md
  • specs/006-expiry-learning/spec.md
  • specs/006-expiry-learning/tasks.md
  • tests/e2e/README.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants