CodeForge

Angular 21 de Cero a Experto / Proyecto final

Arquitectura del tablero: planear antes que codear

Teoría22 min20 XP

Llegaste al proyecto final: un TABLERO COLABORATIVO en tiempo real, donde varios usuarios organizan gastos por columnas (pendiente → aprobado → pagado) y ven los cambios de los demás al instante. Antes de escribir una línea, vas a DISEÑARLO —porque un buen plan evita reescribir—. Hoy aplicas el método de las cinco preguntas que aprendiste en JavaScript (SC-02) y reusaste en React, ahora para arquitecturar una app Angular completa.

Medir dos veces, cortar una

Las cinco preguntas

Clasificar el estado

El paso más importante en una app de tiempo real: distinguir de dónde viene cada dato.

El vocabulario de eventos

En tiempo real, defines un "idioma" de eventos con nombre —el protocolo entre clientes—:

eventos.ts
// eventos que EMITE el cliente (acciones del usuario)
'gasto:crear'   → { nombre, valor, categoria }
'gasto:mover'   → { id, aEstado }         // arrastrar a otra columna
'gasto:borrar'  → { id }

// eventos que RECIBE el cliente (del servidor, difundidos a todos)
'gasto:creado'Gasto                    // alguien creó uno (yo u otro)
'gasto:movido'  → { id, aEstado }
'gasto:borrado' → { id }
'presencia'     → { usuarios: string[] }   // quién está conectado ahora

Fíjate en el patrón: el cliente EMITE una intención (gasto:crear) y el servidor difunde el HECHO a todos (gasto:creado), incluido quien lo originó. Así todos convergen a la misma verdad —es lo que viste en el reto colaborativo del módulo 9—.

La estructura por features

Aplicando el módulo 8, el tablero se organiza así:

estructura.txt
features/
auth/
  login.component.ts          // el login-gate
  auth.store.ts               // usuario actual, token
  auth.guard.ts               // protege el tablero
tablero/
  tablero.component.ts        // la vista principal (columnas)
  columna.component.ts        // una columna
  tarjeta-gasto.component.ts  // una tarjeta
  tablero.store.ts            // estado compartido (gastos, presencia)
  socket.service.ts           // conexión de tiempo real
core/
interceptores, config
shared/
componentes reutilizables

En el tablero colaborativo, ¿dónde clasificarías 'qué gasto estás arrastrando ahora mismo'?

Mini-reto

Diseña el tablero en papel con las cinco preguntas: 1) lista sus vistas; 2) define la fuente de verdad (¿cuál es el estado mínimo?); 3) enumera las operaciones; 4) di qué se deriva con computed (columnas, totales); 5) lista los eventos locales y los del socket. Marca cada pieza de estado como local, compartida o derivada. Ese plano es tu guía para el proyecto.

Qué sigue

Tienes el plano. Ahora lo construyes: el proyecto capstone, un tablero colaborativo en tiempo real completo —login-gate, columnas, sincronización por socket, presencia y actualizaciones optimistas—, con el motor corriendo en vivo. La pieza que corona todo el curso.