diff --git a/backlog/features.json b/backlog/features.json
index 2fa8c9d..b3a4d6c 100644
--- a/backlog/features.json
+++ b/backlog/features.json
@@ -3381,6 +3381,39 @@
"close": true
},
"completed_at": "2026-08-19T15:36:09Z"
+ },
+ {
+ "id": "F-069",
+ "type": "feature",
+ "title": "Shipping method descriptions editable in admin",
+ "problem": "Shipping method names (Estandar / Express 24h) and prices live in the backend but the descriptions shown in the storefront checkout (Entrega 3-5 dias laborables / Entrega al dia siguiente) are hardcoded in the frontend",
+ "goal": "Make flow better",
+ "scope_in": [
+ "Admins can edit the description shown on the storefront checkout for each shipping method"
+ ],
+ "scope_out": [
+ "No redesign"
+ ],
+ "priority": "low",
+ "risk": "low",
+ "description": "Problem: Shipping method names (Estandar / Express 24h) and prices live in the backend but the descriptions shown in the storefront checkout (Entrega 3-5 dias laborables / Entrega al dia siguiente) are hardcoded in the frontend. Goal: Make flow better. Scope IN: Admins can edit the description shown on the storefront checkout for each shipping method. Scope OUT: No redesign. Type: feature. Priority: low. Risk: low.",
+ "acceptance": [
+ "high",
+ "Shipping methods table has a description column",
+ "Admin can edit description from /shipping",
+ "Storefront /checkout fetches methods and shows the description under each one",
+ "Public endpoint returns methods with description",
+ "verify.sh is green"
+ ],
+ "status": "done",
+ "created_at": "2026-08-19",
+ "gates": {
+ "reviewer": true,
+ "security": true,
+ "qa": true,
+ "close": true
+ },
+ "completed_at": "2026-08-19T16:09:23Z"
}
]
}
diff --git a/project/apps/admin/src/app/(dashboard)/shipping/page.tsx b/project/apps/admin/src/app/(dashboard)/shipping/page.tsx
index b61ca37..2427e2b 100644
--- a/project/apps/admin/src/app/(dashboard)/shipping/page.tsx
+++ b/project/apps/admin/src/app/(dashboard)/shipping/page.tsx
@@ -76,7 +76,12 @@ function MethodRow({ method, onEdit, onDelete }: { method: ShippingMethod; onEdi
const fmt = (cents: number) => `€${(cents / 100).toFixed(2)}`;
return (
- | setName(e.target.value)} required placeholder="Nombre método"
- className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-[#2D6A4F] outline-none" /> |
+
+ setName(e.target.value)} required placeholder="Nombre método"
+ className="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-[#2D6A4F] outline-none" />
+ setDescription(e.target.value)} placeholder="Descripción para el checkout"
+ className="w-full px-3 py-2 mt-1.5 border border-gray-300 rounded-lg text-xs focus:ring-2 focus:ring-[#2D6A4F] outline-none" />
+ |
|