00-day-brief.md
00 — Day brief · 2026-09-01 · PLANCHA
Decisiones ALS-2 BRIEF
| Campo | Valor |
|---|---|
| Fecha | 2026-09-01 |
| Nombre | PLANCHA |
| Complejidad | Nivel 1 (no L2 consecutivo tras CALDA) |
| Sector | Creadores / copistería de barrio (Tetuán) |
| Tipo | Quiosco-wizard para dejar un original + cola PRENSISTA JWT |
| Plataforma | Web kiosk-first (pasos en el mostrador · lista en el portátil) |
| Registro | R-IN — wizard de tres teclas, no landing de imprenta |
| Shell | S-WIZ — progreso 1/3, sin nav global |
| Home | H-WIZARD — el primer paso es la home |
| Flujo | F-ONB — checklist de tiraje (formato → tintas → copias) |
| Fold | FOLD-WIZARD (CRON §5.9) |
| Por qué no CALDA | No S-MIN / H-FULL / F-KAN; no agua; no bleed de una sala |
| Por qué no FAROL | No S-RAIL / H-CHAT / F-BOOK |
| Por qué no TALÓN | No S-SIDE / H-TABLE / F-EDIT |
| Por qué no MANTA | No S-BOTTOM / H-MAP / F-MKT |
| Por qué no PIÑÓN | No S-TOP / H-BENTO / F-CMP |
| Por qué no VistaPrint | Se 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:
#D5DCE3cristal (ground)#1A2330tinta (ink)#EEF2F6formica (card)#0077C8tóner (mark)#5C6B7Amute#C41E3Asello
- 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
- Wizard 1: formato A4 / A3 / fanzine
- Wizard 2: tintas 1 / 2 / CMYK
- Wizard 3: copias + nombre
- Success PLA-XXXX
- Login JWT PRENSISTA
- Mesa cola (no kanban)
- Empty / error / loading / mobile
- ≥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
| URL | https://app.paper.design/file/01M1DWEYCXBFH00N31Q8HN7XGP |
| File ID | 01M1DWEYCXBFH00N31Q8HN7XGP |
UX-count: 12 UI-count: 12
UX process (prefijo UX- · mínimo 12)
| ID | Nombre | Contenido |
|---|---|---|
| UX-00 | Process cover | PLANCHA + prensa de Tetuán |
| UX-01 | Stakeholders | Nerea, vecina, taller, distrito |
| UX-02 | Personas | Hugo Terán, Nerea Solís |
| UX-03 | JTBD | dejar original ahora, no subir PDF |
| UX-04 | Stories | Must POST trabajos / GET mesa |
| UX-05 | Journey | mostrador → formato → tintas → copias → código |
| UX-06 | Blueprint | frontstage wizard / backstage JWT |
| UX-07 | Site map / IA | S-WIZ público/privado |
| UX-08 | Flujos | 409, 422, empty, loading |
| UX-09 | Datos + permisos | User, Session, Trabajo |
| UX-10 | Métricas | originales en cola / turno |
| UX-11 | Research notes | no entrevistas; no VistaPrint |
UI producto (prefijo UI- · mínimo 10)
| ID | Nombre | Flujo |
|---|---|---|
| UI-01 | Wizard 1 formato | Home FOLD-WIZARD 16/10 |
| UI-02 | Wizard 2 tintas | Paso 2 |
| UI-03 | Wizard 3 copias | Paso 3 |
| UI-04 | Success | PLA-XXXX |
| UI-05 | Login | PRENSISTA |
| UI-06 | Mesa cola | Lista JWT |
| UI-07 | Empty | Nadie ha dejado original |
| UI-08 | Error | La cola no responde |
| UI-09 | Loading | Pulso |
| UI-10 | Mobile wizard | 390 |
| UI-11 | Tokens / DS | G-FOG |
| UI-12 | Mobile success | 390 |
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.jpgprensaassets/plancha.jpgassets/fanzine.jpgassets/a3.jpg
01-project-definition.md
01 — Definición de proyecto — PLANCHA
1. Identidad
| Campo | Valor |
|---|---|
| Nombre | PLANCHA |
| Significado | La 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 frase | Quiosco-wizard de tres teclas para dejar un tiraje + cola PRENSISTA JWT. |
| Descripción ejecutiva | Copisterí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. |
| Sector | Creadores / copistería de barrio |
| Tipo | Web L1 — H-WIZARD FOLD-WIZARD + S-WIZ + F-ONB + lista JWT |
| Plataforma principal | Web kiosk-first (pasos en el mostrador · lista en el portátil) |
| Plataformas secundarias | Móvil del vecino si deja el original en casa y lo trae |
| Mercado demo | España · Madrid · Tetuán (una copistería, no una imprenta online) |
| Idioma | es-ES |
| Otros idiomas | Ninguno en L1 |
| Fecha caso | 2026-09-01 |
| Terna | R-IN · S-WIZ · H-WIZARD · F-ONB |
| Fold | FOLD-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
| Tipo | Contenido |
|---|---|
| Negocio | Cola visible sin SaaS de imprenta |
| Usuario | Dejar original en <30 s |
| Producto | Wizard 3 pasos + mesa PRENSISTA |
| Experiencia | Quiosco, no landing de marketing |
| Técnico | Angular + Nest + Neon + JWT |
| No objetivos | Pagos, PDF upload, preview RIP, envíos, stock de papel, CRM |
| Restricciones | Stack fijo. D-P1-12: no muro 2×2 |
| Dependencias | Neon, Paper, seed |
| Riesgos | Parecer 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
| Actor | Influencia | Interés | Necesidad | Riesgo |
|---|---|---|---|---|
| Nerea Solís (prensista / owner) | Alta | Alta | Cola clara | Si la UI parece un ERP, no la abre |
| Vecina / fanzinera | Media | Alta | Dejar y marcharse | Si pide cuenta, abandona |
| Taller (alquiler, luz) | Baja | Media | Que no se pare la prensa | Fuera de producto |
| Distrito / licencia de copistería | Baja | Baja | No es un trámite | No convertir en sede electrónica |
Personas
Hugo Terán — fanzinero
-
- 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
-
- 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
- Como vecina, quiero elegir A4 / A3 / fanzine, para no hablar de «producto».
- AC: paso 1 muestra 3 teclas; foto de prensa ≥40 % del fold.
- Como vecina, quiero elegir 1 tinta / 2 tintas / CMYK, para que Nerea sepa la plancha.
- Como vecina, quiero nombre + 10/20/50/200 copias y un código PLA-XXXX.
- 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)
| Fase | Acción | Pensamiento | Emoción | Touch | Problema | Oportunidad |
|---|---|---|---|---|---|---|
| Llega | Ve la prensa | «Esto no es una web de copias» | Alivio | UI-01 foto | — | Foto-led una banda |
| Formato | Pulsa Fanzine | «Grapado, no libro» | Firme | Paso 1 | Confundir A5 | Copy duro |
| Tintas | 2 tintas | «Cian + negro» | Ok | Paso 2 | CMYK asusta | CMYK es el tercero |
| Tiraje | 50 + nombre | «¿Me van a pedir el PDF?» | Tensión | Paso 3 | Form e-commerce | Solo nombre y copias |
| Código | PLA-XXXX | «Ya está» | Cierre | Success | Perder el código | Código enorme |
| Recoge | Nerea marca listo | — | — | Mesa | Cola invisible | Lista, 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
| Contenido | Owner | Estado | Prioridad | Frecuencia | Visibilidad |
|---|---|---|---|---|---|
| Foto prensa | Estudio | Seed | Must | Rara | Paso 1 |
| Formatos | Producto | Fijo | Must | Nunca | Paso 1 |
| Tintas | Producto | Fijo | Must | Nunca | Paso 2 |
| Trabajos | Nerea | Vivo | Must | Cada original | Mesa |
| Copy duro | UX writing | Fijo | Must | Nunca | Todas |
Permisos
| Rol | Módulo | Ver | Crear | Editar | Eliminar | Aprobar | Exportar |
|---|---|---|---|---|---|---|---|
| Anónima | Wizard | sí | POST trabajo | no | no | no | no |
| Anónima | Mesa | no | no | no | no | no | no |
| PRENSISTA | Mesa | sí | no | PATCH listo | no | listo = sí | no |
| PRENSISTA | Wizard | sí | sí | no | no | no | no |
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
| Estado | Dónde | Copy |
|---|---|---|
| Vacío | Mesa | Nadie ha dejado original. |
| Carga | Mesa | Pulso de formica. |
| Error red | Mesa / wizard | La cola no responde / No se pudo dejar. |
| Validación | Paso 3 | Nombre, formato y tintas. |
| 409 | API | Ese tiraje no cabe hoy. PLANCHA no es VistaPrint. |
| 401 | Mesa | Revisa el correo y la clave. |
| Success | /ok | PLA-XXXX enorme. |
| Offline | No 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
| Capa | Elección | Por qué |
|---|---|---|
| Front | Angular 22 standalone + Tailwind | Stack fijo del cron |
| Back | NestJS 11 | Idem |
| DB | Neon Postgres wandering-thunder-52384583 | Serverless, MCP del día |
| Auth | JWT jose + bcrypt + tabla sessions | D-P1-05 |
| Host local | API :3032 · web :4212 | No choca con CALDA :3031 |
| Tipos | Syne + 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:
| Token | Hex | Objeto |
|---|---|---|
| ground | #D5DCE3 | Cristal fluorescente |
| ink | #1A2330 | Tinta offset |
| card | #EEF2F6 | Formica del mostrador |
| mark | #0077C8 | Tóner cian |
| mute | #5C6B7A | Sombra del cristal |
| sello | #C41E3A | Sello 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
| Pieza | Uso |
|---|---|
| Wordmark | PLANCHA en mark, Syne semibold |
| Step label | 11px uppercase tracking 0.16em mark |
| Tecla formato | min-h-24, card o mark invertida (fanzine) |
| Input / select | border ink/15, focus mark, min-h-12 |
| CTA | mark, uppercase, texto card |
| Fila mesa | formica, código mark, listo sello |
| Pulso | h-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
| Sitio | Copy |
|---|---|
| H1 paso 1 | Qué dejas hoy |
| A4 | Folio. El de siempre. |
| A3 | Cartel. Cabe en la prensa. |
| Fanzine | Grapado. No es un libro. |
| Paso 2 | Con qué se imprime |
| 1 tinta | Negro. Barato y honesto. |
| 2 tintas | Negro + cian. |
| CMYK | Cuatro. Si hace falta. |
| Paso 3 | Nombre y copias |
| CTA | Dejar original / Dejando… |
| Success | Original dejado + PLA-XXXX |
| Login | Prensista. Cola de originales. |
| Mesa | Cola de originales |
| Empty | Nadie ha dejado original. |
| Error | La 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.
| Check | Evidencia |
|---|---|
| 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 mark | card #EEF2F6 sobre cian |
| Sello sobre card | #C41E3A para acción, no para body |
| Foco | focus:border-mark en inputs |
| Teclas | botones reales, no divs |
| Labels | sr-only en nombre / email / clave |
| Hit target | min-h-12 / min-h-24 |
| Foto | alt «Prensa de la copistería de Tetuán» |
| Motion | solo pulse de carga; sin autoplay |
| Idioma | lang="es" |
| Zoom | layout flex, no max-width rígido en el wizard |
| Teclado | tab 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.
| Tema | Decisión |
|---|---|
| Datos | Nombre en el mostrador + email de Nerea |
| Base | Interés del taller (cola). [SUPUESTO] |
| Minimización | Sin teléfono, sin PDF, sin dirección |
| Auth | JWT + sessions; solo rol PRENSISTA entra a mesa |
| Secretos | .env gitignored; bcrypt 12 rounds |
| CORS | localhost 4212 + lista |
| Rate limit | módulo común heredado del skeleton |
| Retención | seed resetea extras al arrancar; no histórico LISTO en L1 |
| Derecho de borrado | no expuesto; L1 demo |
| Cookies | no; token en localStorage clave plancha.accessToken |
| Subida de archivos | prohibida 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.
| Evento | Dónde | Propósito |
|---|---|---|
wizard_step | 1/2/3 | Embudo |
format_picked | paso 1 | Mix A4/A3/fanzine |
inks_picked | paso 2 | Mix tinta |
trabajo_created | POST 201 | Activación |
trabajo_listo | PATCH | Throughput |
login_ok / login_fail | /login | Acceso mesa |
mesa_empty | /mesa | Turno muerto |
api_422 / api_409 | wizard | Fricció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)
- GET
/api/health→{ ok: true, service: "plancha-api" } - GET
/api/tienda→ Tetuán - POST
/api/trabajos{ name, format: fanzine, inks: duo, copies: 50 }→ 201 PLA-XXXX - POST
/api/auth/loginnerea@plancha.taller / password123 → token PRENSISTA - GET
/api/mesaBearer → incluye seed + smoke ng buildo serve :4212 OK- Home muestra «Qué dejas» y Fanzine (no frame negro)
Casos
| ID | Caso | Esperado |
|---|---|---|
| T01 | Wizard 3 pasos | Código en /ok |
| T02 | POST sin nombre | 422 |
| T03 | copies 13 | 422 |
| T04 | copies 500 | 409 o 422 |
| T05 | Mesa sin JWT | 401 |
| T06 | PATCH listo | sale de cola |
| T07 | PATCH listo otra vez | 409 |
| T08 | Empty | copy «Nadie ha dejado original» |
| T09 | Mobile 390 | teclas apiladas |
| T10 | Contraste | ink 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étodo | Ruta | Auth | Body / nota |
|---|---|---|---|
| GET | /api/health | no | plancha-api |
| GET | /api/tienda | no | place, shop |
| GET | /api/trabajos/:code | no | PLA-XXXX |
| POST | /api/trabajos | no | name, format, inks, copies → 201 |
| POST | /api/auth/login | no | email, password |
| GET | /api/mesa | JWT PRENSISTA | trabajos EN_COLA |
| PATCH | /api/trabajos/:code/listo | JWT | status 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.
| Ahora | No ahora |
|---|---|
| Tres teclas, cola, listo | Pagos |
| Foto de prensa en paso 1 | Upload PDF / RIP |
| JWT prensista | Cuenta de vecina |
| Empty / error / loading / mobile | Enví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.
| Ruta | Paper | Código |
|---|---|---|
/ paso 1 | UI-01 / UI-10 | PlazaPage |
| paso 2 | UI-02 | mismo |
| paso 3 | UI-03 | mismo |
/ok/:code | UI-04 / UI-12 | OkPage |
/login | UI-05 | LoginPage |
/mesa | UI-06 / 07 / 08 / 09 | MesaPage |
| Tokens | UI-11 | Tailwind + 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).
| Check | OK |
|---|---|
| Distinto de CALDA/FAROL/TALÓN/MANTA/PIÑÓN | sí |
| L1 no consecutivo L2 | sí (CALDA era L2) |
| Flujos must completos | wizard 3 + success + mesa |
| Empty / carga / error | sí |
| Contenido realista | Hugo, Laila, Óscar, Berta, Nerea |
| Identidad propia | fog + cian + Syne |
| Componentes reutilizables | tecla, fila, CTA |
| Responsive diseñado | columna vs fila |
| WCAG 2.2 AA objetivo | contraste + labels |
| Modelo de datos | trabajos + sessions |
| Stack justificado | cron + kiosk |
| Privacidad | nombre mínimo, JWT mesa |
| Métricas | cola / turno |
| Handoff | README + contrato |
| Paper hi-fi real | 12 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
| Pieza | Path |
|---|---|
| Dominio | apps/api/src/domain.ts |
| Schema + seed | apps/api/src/database/database.service.ts |
| Trabajos | apps/api/src/pases/* |
| Mesa JWT | apps/api/src/mesa/mesa.controller.ts |
| Wizard | apps/web/src/app/pages/plaza/ |
| Success | apps/web/src/app/pages/ok/ |
| Login | apps/web/src/app/pages/login/ |
| Cola | apps/web/src/app/pages/mesa/ |
| Tokens | apps/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.