feat: Fase 2a — shopping lists CRUD

DB: shopping_lists + shopping_items tables with full RLS, pg_cron jobs
(archive completed lists after 7 days, purge trash after 7 days).
item_frequency table with SECURITY DEFINER trigger that normalises and
upserts on every shopping_items INSERT.

Frontend: /lists overview (featured card + 2-col grid + trash toggle),
/lists/[id] detail (qty stepper, inline edit, swipe-to-reveal-delete,
drag & drop reorder via svelte-dnd-action, ItemSuggestions chips).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-12 22:25:31 +02:00
parent ce1bcfb7a6
commit 3af1276c15
11 changed files with 1609 additions and 12 deletions

View File

@@ -70,6 +70,23 @@
"invite_email_label": "Correo electrónico",
"invite_send": "Enviar invitación",
"lists_title": "Listas de la compra",
"lists_new_list": "Crear",
"lists_no_lists": "Sin listas",
"lists_create_first": "Crea tu primera lista de la compra",
"lists_trash": "Papelera",
"list_status_active": "Lista activa",
"list_status_completed": "Completada",
"list_status_archived": "Archivada",
"list_name_placeholder": "p. ej. Compra semanal",
"list_items_empty": "Lista vacía",
"list_items_empty_hint": "Añade tu primer producto abajo",
"list_reset": "Reiniciar lista",
"list_archive": "Archivar",
"list_delete": "Mover a papelera",
"list_actions": "Acciones de lista",
"list_item_placeholder": "Añadir producto…",
"list_qty_label": "Cant.",
"list_unit_label": "Unidad",
"list_add_item": "Añadir producto…",
"list_to_buy": "Por comprar",
"list_checked": "Marcado",