Skip to content

Andrea redesign 1: Step 4 Guanza handoff

Historical Step 4 record, including the separately authorized sample import. Do not replay its production import commands as part of a frontend release. See the redesign story and verified cutover for the final collection title and deployed status.

Date: 2026-09-24 (America/Bogota). Branch: jm/andrea-redesign-1.

Step 4 introduces the Guanza collection selector and the first collection browsing routes. This handoff records the catalog audit, the authorized one-time production sample import, and the local implementation contract. The storefront redesign itself was not deployed.

Catalog audit and authorized sample import

A read-only VPS audit on 2026-09-24 found the GUANZA collection with Medusa handle guanza and six published products, and Piezas Intervenidas with handle piezas-únicas and zero assigned products. The local database previously had zero collections. The collection definitions map the first identity to the public Orígenes route while preserving the Medusa identity; this is a presentation mapping, not a production relabeling.

Justin authorized four sample products in Piezas Intervenidas for review. The opt-in seed and media scripts ran successfully on the VPS. The four published Muestra products have one demo-only inventory unit each:

Handle Display name Provisional COP price
muestra-oso-azul Muestra · Oso azul 80,000
muestra-manos-corazon Muestra · Manos corazón 65,000
muestra-figura-multicolor Muestra · Figura multicolor 95,000
muestra-figura-rosa Muestra · Figura rosa 75,000

Product image thumbnails were checked, and all four Garage media URLs returned HTTP 200. The sample descriptions and metadata identify their provisional prices and availability as requiring Andrea's review. No broad catalog reset was run.

The backend Dockerfile, Compose configuration, seed/media scripts, and source assets are tracked in this repository. For this one-time import, the required container scripts/assets were staged transiently on the VPS; the storefront redesign and a rebuilt backend image were not deployed. A future opt-in import from the tracked source requires an explicitly reviewed production operation that builds and starts the matching Medusa image, then runs both scripts. From /opt/andreaweb/current, the commands are:

docker compose --env-file /opt/andreaweb/shared/production.env \
  -f compose.prod.yaml build medusa
docker compose --env-file /opt/andreaweb/shared/production.env \
  -f compose.prod.yaml up -d medusa
docker compose --env-file /opt/andreaweb/shared/production.env \
  -f compose.prod.yaml exec -T medusa \
  npx medusa exec ./src/scripts/seed-sample-piezas.js
docker compose --env-file /opt/andreaweb/shared/production.env \
  -f compose.prod.yaml exec -T medusa \
  npx medusa exec ./src/scripts/import-sample-piezas-media.js

These are opt-in maintenance commands, not part of a normal release. Removing the demo products later is a deliberate Medusa Admin action after Andrea's review; do not run a broad catalog reset or repurpose the sample handles.

Spanish is unprefixed and English begins with /en. Both use the Colombia Medusa region (co) and COP. Guanza is the store brand; the carousel contains the Orígenes and Piezas Intervenidas collections.

Destination Spanish English
Collection selector /guanza /en/guanza
Orígenes /guanza/origenes /en/guanza/origenes
Piezas Intervenidas /guanza/piezas /en/guanza/piezas
Product /guanza/productos/<handle> /en/guanza/productos/<handle>
Cart /guanza/carrito /en/guanza/carrito
Account, if exposed /guanza/cuenta /en/guanza/cuenta

Public links are generated through the storefront's localized publicLinks builder. The storefront route matcher owns each /guanza/... and /en/guanza/... path, while similarly prefixed unrelated paths remain outside its scope. Old country-prefixed commerce paths are transitional; Step 4 does not activate production redirects or change Nginx deployment configuration.

Content and asset provenance

The Orígenes selector uses conceptual hero artwork reused from the portfolio originals and optimized to WebP. The Piezas Intervenidas selector uses an optimized copy of Justin's supplied sample photo of the hands-and-heart sculpture. The four sample product images were optimized from his supplied JPEGs. The sample product content, recognizable-character/image rights, and collection copy still need Andrea's review and approval. Provisional prices and demo-only stock must not be presented as confirmed commercial information. Do not invent product descriptions, specifications, availability, or prices.

Boundaries and remaining work

The authorized sample products and their media were added to production; no broad catalog reset was run. The storefront redesign was not deployed. Step 4 adds public product-detail routes and fixes the title/gallery layout, but full localized commerce, cart/account continuity, and account readiness remain in Step 5. That step also owns route-preserving language switching and the remaining customer-facing translation. Andrea's review of sample content, image rights, and collection copy remains required before launch.

The backend build and storefront lint/build passed. The storefront test suite passed all 28 tests, including the new collection mapping and route checks. On the VPS, the seed created four sample records, a second run skipped all four existing handles, stored COP prices and thumbnails matched the definitions, and all four media URLs returned HTTP 200. Browser-level visual and cart journey testing remain for Step 6 before cutover.