En esta página 00-day-brief 0%

00-day-brief.md

00 — Day brief · 2026-09-01 · PLANCHA

Decisiones ALS-2 BRIEF

CampoValor
Fecha2026-09-01
NombrePLANCHA
ComplejidadNivel 1 (no L2 consecutivo tras CALDA)
SectorCreadores / copistería de barrio (Tetuán)
TipoQuiosco-wizard para dejar un original + cola PRENSISTA JWT
PlataformaWeb kiosk-first (pasos en el mostrador · lista en el portátil)
RegistroR-IN — wizard de tres teclas, no landing de imprenta
ShellS-WIZ — progreso 1/3, sin nav global
HomeH-WIZARD — el primer paso es la home
FlujoF-ONB — checklist de tiraje (formato → tintas → copias)
FoldFOLD-WIZARD (CRON §5.9)
Por qué no CALDANo S-MIN / H-FULL / F-KAN; no agua; no bleed de una sala
Por qué no FAROLNo S-RAIL / H-CHAT / F-BOOK
Por qué no TALÓNNo S-SIDE / H-TABLE / F-EDIT
Por qué no MANTANo S-BOTTOM / H-MAP / F-MKT
Por qué no PIÑÓNNo S-TOP / H-BENTO / F-CMP
Por qué no VistaPrintSe deja una plancha, no se sube un PDF a una web de marketing

Terna unicidad

R-IN · S-WIZ · H-WIZARD · F-ONB

0 códigos de shell/home/flujo iguales a N−1 (CALDA: R-CL · S-MIN · H-FULL · F-KAN).
≥2 distintos vs N−2 (FAROL: S-RAIL · H-CHAT · F-BOOK) y N−3 (TALÓN: S-SIDE · H-TABLE · F-EDIT).

S-WIZ, H-WIZARD y F-ONB no están en last 5.
R-IN no apila otro R-CL tras CALDA. Ventana 4: CALDA CL, FAROL HY, TALÓN IN, MANTA CL → hoy IN.

ZAGUÁN (S-WIZ + H-WIZARD + F-CMP, 08-18) queda fuera. Aquí F-ONB, no comparador. CANTERA (H-WIZARD + F-ONB, 08-11) usaba S-BOTTOM.

Fold (CRON §5.9)

  • Código: FOLD-WIZARD
  • Por qué no es hero+panel ni 2×2: CALDA es FOLD-BLEED; FAROL FOLD-CHAT. El recorte 16/10 es el paso 1 (formato) con una foto de prensa arriba, no cuatro baldosas (D-P1-12).

Ground (CRON §5.6)

  • Familia: G-FOG
  • Hex: #D5DCE3
  • Por qué: no sótano CALDA #0E1C1A, no blanco FAROL, no fósforo, no hueso, no grafito. Primer instinto imprenta = crema + tinta. Se elige sala de copistería fluorescente.

Mood visual (Paper)

  • Candidatos: bookish cream (primer instinto), signage, highlighter, foggy, chalky
  • Elegido: foggy — cristal del mostrador + tóner cian.
  • Paleta:
    • #D5DCE3 cristal (ground)
    • #1A2330 tinta (ink)
    • #EEF2F6 formica (card)
    • #0077C8 tóner (mark)
    • #5C6B7A mute
    • #C41E3A sello
  • Tipo: Syne titulares · Public Sans UI

Home foto-led (D-P1-09)

Sí, una banda. Foto de la prensa en el paso 1 (~40 % del fold). No 2×2. Cuota last 6 ya ≥3.

Alcance L1 must

  1. Wizard 1: formato A4 / A3 / fanzine
  2. Wizard 2: tintas 1 / 2 / CMYK
  3. Wizard 3: copias + nombre
  4. Success PLA-XXXX
  5. Login JWT PRENSISTA
  6. Mesa cola (no kanban)
  7. Empty / error / loading / mobile
  8. ≥12 UX + ≥10 UI

Microcopy duro

  • Dejar original ≠ enviar a imprenta online.
  • Plancha ≠ archivo.
  • Tiraje ≠ pedido de Amazon.
  • PLANCHA no es VistaPrint.

Supuestos

  • [COMPROBADO] Brief ALS-2 §8 y D-P1-12.
  • [SUPUESTO] Tetuán · Bravo Murillo. Atrezzo.
  • [HIPÓTESIS] El fanzine se deja en el mostrador, no se sube a una web.
  • [DECISIÓN] L1 wizard; no L3 SaaS de imprentas.

00-paper-reference.md

Paper reference · PLANCHA

URLhttps://app.paper.design/file/01M1DWEYCXBFH00N31Q8HN7XGP
File ID01M1DWEYCXBFH00N31Q8HN7XGP

UX-count: 12 UI-count: 12

UX process (prefijo UX- · mínimo 12)

IDNombreContenido
UX-00Process coverPLANCHA + prensa de Tetuán
UX-01StakeholdersNerea, vecina, taller, distrito
UX-02PersonasHugo Terán, Nerea Solís
UX-03JTBDdejar original ahora, no subir PDF
UX-04StoriesMust POST trabajos / GET mesa
UX-05Journeymostrador → formato → tintas → copias → código
UX-06Blueprintfrontstage wizard / backstage JWT
UX-07Site map / IAS-WIZ público/privado
UX-08Flujos409, 422, empty, loading
UX-09Datos + permisosUser, Session, Trabajo
UX-10Métricasoriginales en cola / turno
UX-11Research notesno entrevistas; no VistaPrint

UI producto (prefijo UI- · mínimo 10)

IDNombreFlujo
UI-01Wizard 1 formatoHome FOLD-WIZARD 16/10
UI-02Wizard 2 tintasPaso 2
UI-03Wizard 3 copiasPaso 3
UI-04SuccessPLA-XXXX
UI-05LoginPRENSISTA
UI-06Mesa colaLista JWT
UI-07EmptyNadie ha dejado original
UI-08ErrorLa cola no responde
UI-09LoadingPulso
UI-10Mobile wizard390
UI-11Tokens / DSG-FOG
UI-12Mobile success390

Regla: catalog crop = UI-01 wizard paso 1, nunca UX-00.

Layout canvas (origen 0,0)

  • §1 UX process · y=0 · UX-00…03 y=144
  • §2 IA y flujos · y=1124 · UX-04…07 y=1268 · UX-08…11 y=2248
  • §3 UI producto · y=3228 · UI-01…04 y=3372
  • §4 Estados · y=4352 · UI-05…08 y=4496 · UI-09 + mobile + tokens y=5476

Media

  • assets/hero.jpg prensa
  • assets/plancha.jpg
  • assets/fanzine.jpg
  • assets/a3.jpg

01-project-definition.md

01 — Definición de proyecto — PLANCHA

1. Identidad

CampoValor
NombrePLANCHA
SignificadoLa plancha de impresión: el original que se deja en el mostrador, no un archivo en la nube.
Eslogan«Dejar original ≠ enviar a imprenta online.»
Una fraseQuiosco-wizard de tres teclas para dejar un tiraje + cola PRENSISTA JWT.
Descripción ejecutivaCopistería de barrio en Tetuán. El vecino elige formato, tintas y copias en el mostrador. Nerea ve la cola y marca listo. No hay carrito, PDF ni VistaPrint.
SectorCreadores / copistería de barrio
TipoWeb L1 — H-WIZARD FOLD-WIZARD + S-WIZ + F-ONB + lista JWT
Plataforma principalWeb kiosk-first (pasos en el mostrador · lista en el portátil)
Plataformas secundariasMóvil del vecino si deja el original en casa y lo trae
Mercado demoEspaña · Madrid · Tetuán (una copistería, no una imprenta online)
Idiomaes-ES
Otros idiomasNinguno en L1
Fecha caso2026-09-01
TernaR-IN · S-WIZ · H-WIZARD · F-ONB
FoldFOLD-WIZARD

[COMPROBADO] Brief ALS-2 §8 y D-P1-12. [SUPUESTO de local] Tetuán / Bravo Murillo / prensa son atrezzo.

Tras CALDA (L2 circuito) el día elige L1 wizard de copistería. [DECISIÓN]

2. Problema

[HIPÓTESIS] Quien hace un fanzine no quiere un configurador de VistaPrint. Deja el original en el mostrador y se va. La prensista apunta en un papel de tóner.

Deficiencias actuales: WhatsApp de la copi, papel en el mostrador, webs de imprenta online. Coste: cola invisible y originales que se pierden.

Oportunidad: tres teclas para dejar el tiraje, código PLA-XXXX, cola JWT.

3. Objetivos / no objetivos

TipoContenido
NegocioCola visible sin SaaS de imprenta
UsuarioDejar original en <30 s
ProductoWizard 3 pasos + mesa PRENSISTA
ExperienciaQuiosco, no landing de marketing
TécnicoAngular + Nest + Neon + JWT
No objetivosPagos, PDF upload, preview RIP, envíos, stock de papel, CRM
RestriccionesStack fijo. D-P1-12: no muro 2×2
DependenciasNeon, Paper, seed
RiesgosParecer VistaPrint o un ecommerce de copias

4. Métricas

North star: originales en cola / turno. Activación: POST /trabajos. Finalización: /ok/:code. Error: 422 / 409. Retención: Nerea abre /mesa cada mañana. Accesibilidad: contraste AA en fog + cian.

02-ux-research-strategy.md

02 — Investigación UX y estrategia — PLANCHA

[COMPROBADO] No hay entrevistas de campo en esta ejecución. Todo lo que sigue es supuesto, hipótesis o decisión.

Stakeholders

ActorInfluenciaInterésNecesidadRiesgo
Nerea Solís (prensista / owner)AltaAltaCola claraSi la UI parece un ERP, no la abre
Vecina / fanzineraMediaAltaDejar y marcharseSi pide cuenta, abandona
Taller (alquiler, luz)BajaMediaQue no se pare la prensaFuera de producto
Distrito / licencia de copisteríaBajaBajaNo es un trámiteNo convertir en sede electrónica

Personas

Hugo Terán — fanzinero

    1. Deja un grapado de 50. Móvil sucio de tinta. Poca paciencia con wizards de e-commerce.
  • Motivación: salir con un código y no discutir precios en inglés.
  • Frustración: «¿tienes cuenta?» en webs de imprenta.
  • Dispositivo: iPhone en el mostrador, a veces el kiosk de la copi.
  • Accesibilidad: contraste en sala fluorescente.
  • Cita: «Yo dejo el original. Vosotros apretáis el botón.»
  • Escenario: llega con un dummy grapado, elige fanzine / 2 tintas / 50, se va.

Nerea Solís — prensista

    1. Lleva la copi. Portátil en la trastienda. JWT, no PIN en un post-it.
  • Motivación: ver qué hay en cola sin el papel de tóner.
  • Frustración: pedidos de Amazon de 2 copias a color que no caben hoy.
  • Dispositivo: portátil 13”.
  • Cita: «Si no está en la cola, no está en la prensa.»
  • Escenario: entra, ve PLA-0101…0104, marca listo cuando sale el paquete.

JTBD

Cuando llega al mostrador con el dummy, quiere dejar formato + tintas + copias, para poder irse con un código sin abrir VistaPrint.

  • Funcional: registrar tiraje.
  • Emocional: no parecer amateur ante una web de imprenta.
  • Social: el fanzine es de barrio, no un catálogo.
  • Barrera: pedir cuenta / PDF / preview.
  • Alternativa: papel, WhatsApp, imprenta online.

Stories (MoSCoW)

Must

  1. Como vecina, quiero elegir A4 / A3 / fanzine, para no hablar de «producto».
    • AC: paso 1 muestra 3 teclas; foto de prensa ≥40 % del fold.
  2. Como vecina, quiero elegir 1 tinta / 2 tintas / CMYK, para que Nerea sepa la plancha.
  3. Como vecina, quiero nombre + 10/20/50/200 copias y un código PLA-XXXX.
  4. Como prensista, quiero JWT y ver la cola, para marcar listo.

Should: empty, error, loading, mobile.

Could: histórico LISTO.

Won’t: pagos, upload, envío, cuenta de vecina.

Journey (Hugo)

FaseAcciónPensamientoEmociónTouchProblemaOportunidad
LlegaVe la prensa«Esto no es una web de copias»AlivioUI-01 fotoFoto-led una banda
FormatoPulsa Fanzine«Grapado, no libro»FirmePaso 1Confundir A5Copy duro
Tintas2 tintas«Cian + negro»OkPaso 2CMYK asustaCMYK es el tercero
Tiraje50 + nombre«¿Me van a pedir el PDF?»TensiónPaso 3Form e-commerceSolo nombre y copias
CódigoPLA-XXXX«Ya está»CierreSuccessPerder el códigoCódigo enorme
RecogeNerea marca listoMesaCola invisibleLista, no kanban

Blueprint

  • Visible: wizard 3 pasos, código, mesa.
  • Interno: Nest POST /trabajos, seed, JWT PRENSISTA, PATCH listo.
  • Soporte: Neon trabajos, bcrypt, sesiones.
  • Fallo: 422 si falta formato; 409 si tiraje absurdo; red → reintentar.

03-information-architecture.md

03 — Arquitectura de información — PLANCHA

Mapa

Público (sin cuenta)
  /                 wizard paso 1 (home)
    → paso 2 tintas
    → paso 3 copias
  /ok/:code         success PLA-XXXX
  /login            PRENSISTA

Privado JWT
  /mesa             cola EN_COLA
    PATCH /trabajos/:code/listo

Navegación principal: ninguna. S-WIZ = progreso Paso n / 3 + wordmark. Contextual: «Prensista» → login. Mesa: Salir.

Sin búsqueda, sin filtros, sin breadcrumbs. Taxonomía de formato (a4|a3|fanzine) y tintas (negra|duo|cmyk). Copias discretas: 10, 20, 50, 200.

Inventario

ContenidoOwnerEstadoPrioridadFrecuenciaVisibilidad
Foto prensaEstudioSeedMustRaraPaso 1
FormatosProductoFijoMustNuncaPaso 1
TintasProductoFijoMustNuncaPaso 2
TrabajosNereaVivoMustCada originalMesa
Copy duroUX writingFijoMustNuncaTodas

Permisos

RolMóduloVerCrearEditarEliminarAprobarExportar
AnónimaWizardPOST trabajonononono
AnónimaMesanononononono
PRENSISTAMesanoPATCH listonolisto = síno
PRENSISTAWizardnononono

04-user-flows.md

04 — Flujos de usuario — PLANCHA

Dejar original (must)

  • Entrada: / paso 1.
  • Previos: ninguno.
  • Pasos: formato → tintas → copias + nombre → POST /trabajos/ok/:code.
  • Decisiones: A4/A3/fanzine; negra/duo/cmyk; 10/20/50/200.
  • Resultado: código PLA-XXXX, status EN_COLA.
  • Alternativas: atrás a formato o tintas.
  • Errores: 422 nombre/formato; red → copy de sello.
  • Eventos: wizard_step, trabajo_created.

Login + mesa

  • Entrada: «Prensista» o /login.
  • Previos: seed Nerea.
  • Pasos: email + clave → JWT → /mesa → PATCH listo.
  • Errores: 401; 403 no PRENSISTA; sesión caducada → login.
  • Eventos: login_ok, trabajo_listo.

Estados

EstadoDóndeCopy
VacíoMesaNadie ha dejado original.
CargaMesaPulso de formica.
Error redMesa / wizardLa cola no responde / No se pudo dejar.
ValidaciónPaso 3Nombre, formato y tintas.
409APIEse tiraje no cabe hoy. PLANCHA no es VistaPrint.
401MesaRevisa el correo y la clave.
Success/okPLA-XXXX enorme.
OfflineNo L1

Acciones destructivas: ninguna (listo no borra; es estado). Sin undo en L1.

05-data-model.md

05 — Modelo de datos — PLANCHA

users 1──* sessions
users.role = PRENSISTA
trabajos (code PK lógico, author_name, format, inks, copies, status, created_at)
format = a4 | a3 | fanzine
inks = negra | duo | cmyk
status = EN_COLA | LISTO

Índices: trabajos.code unique.

Estados: EN_COLA (visible en mesa) / LISTO (sale de la cola). Sin borrado lógico en L1: el seed resetea extras del smoke.

No multiempresa. Nombre = quién dejó el original, no ficha fiscal. [DECISIÓN] retención: el seed borra códigos fuera de PLA-0101…0104 al arrancar.

Sensible: email prensista, password hash bcrypt $2b$12$…. Cifrado en tránsito TLS Neon. JWT plancha-local-jwt-2026-09-01 solo local.

Eventos de dominio: TrabajoDejado, TrabajoListo.

[users] 1──* [sessions]
[trabajos] independiente (anónima deja; prensista marca)

06-tech-stack.md

06 — Stack tecnológico — PLANCHA

CapaElecciónPor qué
FrontAngular 22 standalone + TailwindStack fijo del cron
BackNestJS 11Idem
DBNeon Postgres wandering-thunder-52384583Serverless, MCP del día
AuthJWT jose + bcrypt + tabla sessionsD-P1-05
Host localAPI :3032 · web :4212No choca con CALDA :3031
TiposSyne + Public Sans (Google Fonts)No reutiliza last 15

No Next, no Prisma en este slice (SQL tagged Neon). No IA: no aporta a dejar un original.

Justificación: kiosk + cola corta no necesita GraphQL ni object storage. El original es físico.

07-creative-direction.md

07 — Dirección creativa — PLANCHA

Mood candidates: bookish cream (primer instinto imprenta), signage, highlighter, foggy, chalky.

Elegido: foggy — cristal del mostrador + tóner cian. No es crema de papel (primer instinto) ni el sótano de CALDA.

Paleta G-FOG:

TokenHexObjeto
ground#D5DCE3Cristal fluorescente
ink#1A2330Tinta offset
card#EEF2F6Formica del mostrador
mark#0077C8Tóner cian
mute#5C6B7ASombra del cristal
sello#C41E3ASello de listo

Tipo: Syne display (títulos de copi, no editorial) · Public Sans UI.

Fold: FOLD-WIZARD. Una foto de prensa ~42 % del recorte 16/10. No 2×2 (D-P1-12). No hero+panel (D-P1-11).

Radius 0. Quiosco de tres teclas. El cian es el único momento de color intenso.

08-design-system.md

08 — Design system — PLANCHA

Tokens

--color-ground: #D5DCE3
--color-ink: #1A2330
--color-card: #EEF2F6
--color-mark: #0077C8
--color-mute: #5C6B7A
--color-sello: #C41E3A
--font-display: Syne
--font-sans: Public Sans
--radius-none: 0px

Mismos hex en Paper, Tailwind (ground/ink/card/mark/mute/sello) y styles.scss.

Componentes

PiezaUso
WordmarkPLANCHA en mark, Syne semibold
Step label11px uppercase tracking 0.16em mark
Tecla formatomin-h-24, card o mark invertida (fanzine)
Input / selectborder ink/15, focus mark, min-h-12
CTAmark, uppercase, texto card
Fila mesaformica, código mark, listo sello
Pulsoh-40 animate-pulse card

Estados: hover no es necesario en kiosk táctil; focus visible sí (borde mark). Disabled: opacity 60.

No sombras, no gradientes, no pills.

09-content-guide.md

09 — Guía de contenido — PLANCHA

Voz: mostrador de copistería. Frases cortas. Cero marketing de imprenta.

Duro (no negociable)

  • Dejar original ≠ enviar a imprenta online.
  • Plancha ≠ archivo.
  • Tiraje ≠ pedido de Amazon.
  • PLANCHA no es VistaPrint.

Microcopy

SitioCopy
H1 paso 1Qué dejas hoy
A4Folio. El de siempre.
A3Cartel. Cabe en la prensa.
FanzineGrapado. No es un libro.
Paso 2Con qué se imprime
1 tintaNegro. Barato y honesto.
2 tintasNegro + cian.
CMYKCuatro. Si hace falta.
Paso 3Nombre y copias
CTADejar original / Dejando…
SuccessOriginal dejado + PLA-XXXX
LoginPrensista. Cola de originales.
MesaCola de originales
EmptyNadie ha dejado original.
ErrorLa cola no responde

Prohibido: «pedido», «carrito», «sube tu PDF», «checkout», «imprenta online», « confeccionar».

Nombres de seed: Hugo Terán, Laila Mena, Óscar Prieto, Berta Quirós, Nerea Solís. No reutilizar Tomás/Inés/Nuria.

10-accessibility.md

10 — Accesibilidad — PLANCHA

Objetivo: WCAG 2.2 AA. No se declara conformidad legal.

CheckEvidencia
Contraste ink/ground#1A2330 sobre #D5DCE3 > 7:1
Contraste mute#5C6B7A sobre ground ~4.6:1 (texto ≥14px)
Mark sobre card#0077C8 sobre #EEF2F6 AA para UI grande
Texto sobre markcard #EEF2F6 sobre cian
Sello sobre card#C41E3A para acción, no para body
Focofocus:border-mark en inputs
Teclasbotones reales, no divs
Labelssr-only en nombre / email / clave
Hit targetmin-h-12 / min-h-24
Fotoalt «Prensa de la copistería de Tetuán»
Motionsolo pulse de carga; sin autoplay
Idiomalang="es"
Zoomlayout flex, no max-width rígido en el wizard
Tecladotab orden header → teclas → form

No depender del color solo: fanzine se lee por el label, no solo por el cian.

[HIPÓTESIS] El mostrador es fluorescente; el ground fog reduce el glare frente a un blanco puro.

11-privacy-security.md

11 — Privacidad y seguridad — PLANCHA

No se declara cumplimiento RGPD definitivo.

TemaDecisión
DatosNombre en el mostrador + email de Nerea
BaseInterés del taller (cola). [SUPUESTO]
MinimizaciónSin teléfono, sin PDF, sin dirección
AuthJWT + sessions; solo rol PRENSISTA entra a mesa
Secretos.env gitignored; bcrypt 12 rounds
CORSlocalhost 4212 + lista
Rate limitmódulo común heredado del skeleton
Retenciónseed resetea extras al arrancar; no histórico LISTO en L1
Derecho de borradono expuesto; L1 demo
Cookiesno; token en localStorage clave plancha.accessToken
Subida de archivosprohibida a propósito

Riesgos: kiosk compartido (el vecino no se loguea). Mesa sí requiere JWT. No dejar la sesión de Nerea en el mostrador.

12-analytics.md

12 — Plan analítico — PLANCHA

North star: originales EN_COLA / turno.

EventoDóndePropósito
wizard_step1/2/3Embudo
format_pickedpaso 1Mix A4/A3/fanzine
inks_pickedpaso 2Mix tinta
trabajo_createdPOST 201Activación
trabajo_listoPATCHThroughput
login_ok / login_fail/loginAcceso mesa
mesa_empty/mesaTurno muerto
api_422 / api_409wizardFricción

Sin analytics vendor en L1. Contar en logs Nest basta para el slice.

CSAT no se pide en el mostrador. CES: número de teclas hasta el código (objetivo 3 + submit).

13-qa-test-plan.md

13 — Plan de prueba — PLANCHA

Smoke (bloquea cierre)

  1. GET /api/health{ ok: true, service: "plancha-api" }
  2. GET /api/tienda → Tetuán
  3. POST /api/trabajos { name, format: fanzine, inks: duo, copies: 50 } → 201 PLA-XXXX
  4. POST /api/auth/login nerea@plancha.taller / password123 → token PRENSISTA
  5. GET /api/mesa Bearer → incluye seed + smoke
  6. ng build o serve :4212 OK
  7. Home muestra «Qué dejas» y Fanzine (no frame negro)

Casos

IDCasoEsperado
T01Wizard 3 pasosCódigo en /ok
T02POST sin nombre422
T03copies 13422
T04copies 500409 o 422
T05Mesa sin JWT401
T06PATCH listosale de cola
T07PATCH listo otra vez409
T08Emptycopy «Nadie ha dejado original»
T09Mobile 390teclas apiladas
T10Contrasteink sobre fog AA

Hipótesis a invalidar: «el vecino quiere subir un PDF». Si en research real lo pide, no es este producto.

14-dev-handoff.md

14 — Handoff desarrollo — PLANCHA

Repo: Criscode2022/plancha-app
Paper: https://app.paper.design/file/01M1DWEYCXBFH00N31Q8HN7XGP
Neon: wandering-thunder-52384583

Arranque

apps/api/.env  DATABASE_URL JWT_SECRET PORT=3032
npm --prefix apps/api run start:dev
npm --prefix apps/web run start:dev   # :4212, proxy /api → 3032

Contrato

MétodoRutaAuthBody / nota
GET/api/healthnoplancha-api
GET/api/tiendanoplace, shop
GET/api/trabajos/:codenoPLA-XXXX
POST/api/trabajosnoname, format, inks, copies → 201
POST/api/auth/loginnoemail, password
GET/api/mesaJWT PRENSISTAtrabajos EN_COLA
PATCH/api/trabajos/:code/listoJWTstatus LISTO

Tokens Tailwind = Paper. No redondear. Foto /assets/hero.jpg solo en paso 1.

Seed: PLA-0101…0104. Demo nerea@plancha.taller / password123.

15-roadmap.md

15 — Roadmap — PLANCHA

L1 cerrado hoy: wizard + código + mesa JWT.

AhoraNo ahora
Tres teclas, cola, listoPagos
Foto de prensa en paso 1Upload PDF / RIP
JWT prensistaCuenta de vecina
Empty / error / loading / mobileEnvío a domicilio
Histórico LISTO
Multi-taller SaaS

Investigación real pendiente (no bloquea el slice): observar un mostrador de copistería en Tetuán. [HIPÓTESIS] el fanzine se deja físico.

Mañana del cron no continúa PLANCHA; el briefing N+1 es diversidad, no features a medias.

16-interaction-specs.md

16 — Especificación de interacción — PLANCHA

Wizard

  • Paso 1: click/tap en tecla avanza. No hay «siguiente» genérico.
  • Paso 2/3: «← Formato» / «← Tintas» no resetea la elección, solo el paso.
  • Submit: pending deshabilita el botón (Dejando…).
  • Success: estado de navegación lleva nombre/formato; F5 en /ok enseña solo el código.

Mesa

  • Carga: pulso. Error: reintentar. Empty: una frase.
  • Marcar listo: busy por código. 409 si ya LISTO.
  • Salir: revoca sesión y vuelve a /.

Motion

  • 150–200 ms implícito del navegador. Sin transiciones de página.
  • Loading = animate-pulse. Sin skeleton de 4 tiles (D-P1-12).

Responsive

  • Desktop: teclas en fila. Mobile: columna. Foto 38vh móvil / 42vh sm+.
  • Mesa: fila que envuelve (código, nombre, meta, acción).

17-prototype-map.md

17 — Mapa de prototipo — PLANCHA

Paper no expone prototipo clicable vía MCP. El prototipo vivo es Angular.

RutaPaperCódigo
/ paso 1UI-01 / UI-10PlazaPage
paso 2UI-02mismo
paso 3UI-03mismo
/ok/:codeUI-04 / UI-12OkPage
/loginUI-05LoginPage
/mesaUI-06 / 07 / 08 / 09MesaPage
TokensUI-11Tailwind + styles.scss

Deep links: /ok/PLA-0101 muestra código; detalle de ticket solo si viene del wizard.

18-completeness-audit.md

18 — Auditoría — PLANCHA

UX-count 12. UI-count 12. Terna distinta de last 5. Fold WIZARD. Ground G-FOG. Foto-led sí (una prensa, no 2×2).

CheckOK
Distinto de CALDA/FAROL/TALÓN/MANTA/PIÑÓN
L1 no consecutivo L2sí (CALDA era L2)
Flujos must completoswizard 3 + success + mesa
Empty / carga / error
Contenido realistaHugo, Laila, Óscar, Berta, Nerea
Identidad propiafog + cian + Syne
Componentes reutilizablestecla, fila, CTA
Responsive diseñadocolumna vs fila
WCAG 2.2 AA objetivocontraste + labels
Modelo de datostrabajos + sessions
Stack justificadocron + kiosk
Privacidadnombre mínimo, JWT mesa
Métricascola / turno
HandoffREADME + contrato
Paper hi-fi real12 UX + 12 UI, layout 0,0

SCORE (ALS-2) media ~4.9. Cierre: GET health + POST /trabajos 201 PLA-0105, JWT PRENSISTA Nerea, ng build OK, Paper gate UX=12 UI=12, thumb 1440×900 avgRGB~(157,168,174) dark%~2. API/web :3032/:4212 apagados tras captura (D-P1-06).

19-backlog-completo.md

19 — Backlog — PLANCHA

Must (hecho)

  • Wizard formato / tintas / copias
  • POST trabajos 201 PLA-XXXX
  • Success
  • Login JWT PRENSISTA
  • Mesa cola + PATCH listo
  • Empty / error / loading / mobile
  • Paper ≥12 UX + ≥10 UI
  • Foto-led una banda (D-P1-09 / D-P1-12)

Should (hecho en el slice)

  • Copy duro anti-VistaPrint
  • Seed 4 originales
  • Logout mesa

Could (fuera de L1)

  • Histórico LISTO
  • Recibo imprimible
  • Segundo idioma

Won’t

  • Upload PDF
  • Pagos
  • Cuenta de vecina
  • SaaS multi-taller

20-implementation.md

20 — Implementación — PLANCHA

App: /Users/cristian/orca/plancha-app

PiezaPath
Dominioapps/api/src/domain.ts
Schema + seedapps/api/src/database/database.service.ts
Trabajosapps/api/src/pases/*
Mesa JWTapps/api/src/mesa/mesa.controller.ts
Wizardapps/web/src/app/pages/plaza/
Successapps/web/src/app/pages/ok/
Loginapps/web/src/app/pages/login/
Colaapps/web/src/app/pages/mesa/
Tokensapps/web/tailwind.config.js

Puerto API 3032. Web 4212. Health plancha-api.

Leftover del clon CALDA (dejar/salas/BANERO) eliminado del grafo de rutas. requirePrensista es el guard vivo; aliases de roles viejos delegan.