Roadmap MVP · Gestdok

Cronograma de subida a producción + desarrollos pendientes hasta Beta 2

Estimación total: ~16 semanas · ~4 meses
Estado actual: pre-V1 · cero clientes producción
2026-06-01 · click en cada tarea para detalle
🛠 Bloque A · Infra V1 (bloqueante) 🚀 Beta 1 · Auditoría analítica 📋 Beta 2 · Ciclo completo ⚖ Legal / compliance (paralelo) 🎯 Hito de lanzamiento
📱 Estás en móvil. Te muestro el timeline en vista apilada. Para verlo como cronograma completo, abre desde tablet u ordenador.
Bloque / Lane
T+1
T+2
T+3
T+4
T+5
T+6
T+7
T+8
T+9
T+10
T+11
T+12
T+13
T+14
T+15
T+16
🛠 Bloque A
Infra V1
Alembic
migración inicial
Storage S3
Hetzner Object Storage
JWT refresh
rotación + access/refresh
🚀 Beta 1
Analítica
Hosting Hetzner
CCX23 + Caddy + DNS
B10 Nóminas
TC2 + cuentas 640/642/4751
B08 · IRPF + SS + IS
Cédulas análogas a PC58
🎯 Onboarding 2-3 despachos amigos
→ Beta 1 LIVE
📋 Beta 2
Ciclo completo
Memoria cliente
Checklist PGC
Carta NIA-ES 580
manifestaciones cliente
Informe final auditoría
NIA-ES 700/705/706 · OnlyOffice
🎯 Beta 2 con ciclo completo
→ Beta 2 LIVE

🛠 Bloque A · Infra V1 (T+1 → T+4)

T+1 · 1-2 días
Alembic + migración inicial
Bloqueante. Sin esto, cambios de schema rompen producción.
T+2 → T+3 · 2-3 días
Storage local → S3 Hetzner
Documentos a salvo aunque caiga el VPS.
T+3 · 1 día
JWT con refresh tokens
Sesiones revocables y caducables.

🚀 Beta 1 · Auditoría analítica (T+5 → T+10)

T+5 · 2-3 días
Hosting Hetzner real
CCX23 + Caddy + DNS + backups probados.
T+6 · 3-5 días
B10 · Nóminas + asiento
TC2 + cuentas 640/642/4751/471/465.
T+7 → T+8 · 3-4 días c/u
B08 · IRPF + SS + IS
Cédulas análogas a PC58.
T+9 → T+10 · 🎯 Hito
Beta 1 LIVE · 2-3 despachos amigos
Lanzamiento Beta 1 con uso real.

📋 Beta 2 · Ciclo completo (T+11 → T+16)

T+11 · 5-7 días
Memoria del cliente (revisión)
Checklist 25 notas PGC.
T+12 · 5-7 días
Carta manifestaciones (NIA-ES 580)
Plantilla editable + firma cliente.
T+13 → T+14 · 2-3 semanas
Informe final auditoría
NIA-ES 700/705/706 · OnlyOffice + versionado.
T+15 → T+16 · 🎯 Hito
Beta 2 LIVE · ciclo completo
Producto vendible.

📑 Detalle de tareas

🛠 1.1 · Alembic + migración inicial

Semana T+1 · 1-2 días · BLOQUEANTE para todo

Pendiente

Sin Alembic, cualquier cambio de esquema en producción = pérdida de datos. Es lo primero que hay que hacer.

Pasos:
  • pip install alembic en requirements.txt
  • alembic init alembic en backend/
  • Configurar env.py con SQLAlchemy engine actual
  • Generar migración inicial: alembic revision --autogenerate -m "initial schema"
  • Crear runner multi-tenant alembic_multi.py que itera por despacho
Archivos afectados: backend/requirements.txt, backend/alembic/, backend/app/main.py (quitar create_all())

🛠 1.2 · Storage local → Hetzner Object Storage (S3)

Semana T+2 a T+3 · 2-3 días · BLOQUEANTE

Pendiente

Hoy los documentos viven en /uploads del VPS. Si el VPS muere, se pierden. Hay que migrar a S3-compatible.

Pasos:
  • Crear bucket en Hetzner Object Storage FSN1 (~5 €/mes 100 GB)
  • Crear adapter backend/app/services/storage.py con backends local (dev) y s3 (prod)
  • Usar boto3 o aiobotocore
  • Esquema de paths: s3://gestdok-docs/{tenant_id}/{uuid}.ext
  • Descargas con presigned URL (validez 15 min)
  • Backup off-site: bucket en segunda región NBG1
Archivos afectados: backend/app/services/storage.py (nuevo), backend/app/api/routes/documentos.py, backend/app/core/config.py

🛠 1.3 · JWT con refresh tokens + rotación

Semana T+3 · 1 día · Bloqueante seguridad

Pendiente

Hoy los JWT no caducan. Si filtras un token, es permanente. Hay que separar access (15 min) y refresh (7 días) con tabla en BD.

  • Access token corto: 15 min, sin BD lookup, firma JWT
  • Refresh token largo: 7 días, en tabla refresh_tokens
  • Endpoint /auth/refresh que rota el refresh y devuelve nuevo access
  • Endpoint /auth/logout que invalida el refresh
  • Frontend: interceptor en apiFetch que renueva al primer 401
Archivos afectados: backend/app/core/auth.py, backend/app/api/routes/auth.py, backend/app/models/models.py (+RefreshToken), frontend/app.js (apiFetch)

🚀 2.1 · Hosting Hetzner real (no cloudflared)

Semana T+5 · 2-3 días

Crítico V1

Reemplazar el túnel cloudflared (que cae si apagas tu PC) por hosting profesional.

  • Contratar Hetzner Cloud CCX23 (~30 €/mes, 4 vCPU dedicadas, 16 GB)
  • Hardening Ubuntu 24.04: SSH por clave, UFW, fail2ban, auto-upgrades
  • Instalar Docker + docker-compose
  • Caddy como reverse proxy con Let's Encrypt automático
  • DNS Cloudflare apuntando a la IP
  • Wildcard DNS para subdominios futuros (*.gestdok.com)
  • Cron diario pg_dump | age encrypt → ambas regiones
  • Test de restore probado en VPS virgen antes de considerar listo
Coste: ~50 €/mes V1 todo incluido

🚀 2.2 · B10 Personal — Nóminas + asiento

Semana T+6 · 3-5 días · Patrón PC58

Feature beta 1

Cargar TC2/RNT del cliente y cruzar con cuentas 640 (sueldos), 642 (SS empresa), 4751 (IRPF a ingresar), 471 (créditos SS), 465 (remuneraciones pendientes).

  • Modelo NominaRegistro en models.py (análogo a LibroIvaFactura)
  • Extractor backend/app/services/extractores/personal/nominas.py
  • Reconoce: TC2, RNT/RLC, nominaSEPA, Excel resumen
  • Endpoints PC511: /cargar-nomina, /nomina, /generar
  • Conciliación 640/642/4751/471 con saldos diario por mes
  • Modal frontend análogo a libro IVA
  • Granularidad mensual (no trimestral)
Archivos: models.py (+modelo), extractores/personal/nominas.py (nuevo), papeles_generados.py (+endpoints), app.js (+modal)

🚀 2.3 · B08 · IRPF + SS + IS (cédulas)

Semana T+7 a T+8 · 3-4 días por cédula · Patrón PC58

Feature beta 1

Completar el ciclo B08 (Administraciones Públicas) con las cédulas que faltan tras PC58 IVA:

  • PC59 IRPF: modelo 111 (retenciones trabajo) + 190 (resumen anual). Cuentas 4751, 4759
  • PC511 SS: ya incluido en B10 nóminas
  • PC512 IS: modelo 200/202/220 (Impuesto Sociedades). Cuentas 4752, 473, 4709, 6300
  • Mismo patrón PC58: extractor + endpoints + modal + cédula + conciliación
  • Reutilizar _calcular_conciliacion_iva renombrado a genérico
Estimación realista: 3 cédulas × 3 días = ~10 días.
Si va más rápido (patrón conocido): ~6 días.

🎯 2.4 · Onboarding 2-3 despachos amigos · Beta 1 LIVE

Semana T+9 a T+10 · Hito Beta 1

🚀 Lanzamiento Beta 1

Hito principal del MVP. La beta arranca con uso real.

Checklist pre-onboarding:
  • Hosting Hetzner estable + backups probados
  • Sentry + UptimeRobot configurados con alerta a tu email/Telegram
  • Acuerdo beta firmado (sin garantías comerciales)
  • Tutorial PDF o vídeo de 15 min
  • Canal de soporte (WhatsApp grupo + email)
Sesión 1 con cada despacho (~2 h):
  • Alta despacho + usuarios
  • Importar primer encargo real
  • Carga del diario contable
  • Generar Balance, PyG, Materialidad, PC58 con datos reales
  • Soporte intensivo primera semana
Lo que cubre Beta 1: Toda la analítica + IVA + IRPF + SS + IS + Nóminas + Materialidad + Carta 260 + Ajustes + Comparativo histórico.
Lo que NO cubre todavía: Informe final, Memoria, Carta manifestaciones, Circularización. El auditor sigue haciendo eso en Word/Excel.

📋 3.1 · Memoria del cliente — papel de revisión

Semana T+11 · 5-7 días

Feature beta 2

Papel donde el auditor revisa que la memoria entregada por el cliente cumple PGC + concuerda con Balance/PyG.

  • Checklist 25 notas PGC (Nota 1 Actividad, Nota 5 Inmovilizado, Nota 7 Instrumentos financieros, etc.)
  • Cada nota: estado (cumple / no cumple / parcial) + comentario auditor
  • Subir PDF de memoria del cliente como input
  • Cruce automático: importes en notas vs Balance/PyG (alerta si difieren > materialidad)
  • Render como papel formal NIA-ES 700

📋 3.2 · Carta manifestaciones NIA-ES 580

Semana T+12 · 5-7 días

Feature beta 2

Documento legal firmado por la dirección del cliente al cierre del trabajo. Confirma responsabilidades sobre estados financieros, fraude, partes vinculadas, etc.

  • Plantilla editable por despacho
  • Variables del cliente auto-rellenadas (NIF, razón social, ejercicio)
  • Apartados condicionales (si hay fraude detectado, si hay PV)
  • Envío para firma cliente (email con link → firma simple)
  • Archivo en el papel de la auditoría

📋 3.3 · Informe final auditoría — NIA-ES 700/705/706

Semana T+13 a T+14 · 2-3 semanas · La pieza más compleja

Feature beta 2

El documento más importante: la opinión firmada del auditor. Reutiliza OnlyOffice que ya tienes integrado.

  • Modelo InformeAuditoria: tipo_opinion (limpia/calificada/denegada/adversa), fecha_emision, plantilla_base_id, contenido_html, estado_version, firma_socio_id
  • 5 plantillas master (una por tipo de opinión), editables por despacho
  • Editor con secciones: cabecera + alcance + opinión + fundamento + otros asuntos + párrafos énfasis + firma
  • Variables dinámicas: {{cliente.nombre}}, {{materialidad.final}}, {{fecha_emision}}
  • Versionado: borrador → enviar a socio → socio revisa/comenta → aprobado → firma → archivado (inmutable)
  • OnlyOffice para edición DOCX libre del socio
  • Exportación PDF al firmar con encabezado + logo despacho
  • Trazabilidad NIA-ES 230 reforzada (quién, cuándo, qué cambió)
Estimación honesta: 2-3 semanas. Es la pieza más compleja del MVP por el versionado + edición + firma.

🎯 3.4 · Onboarding Beta 2 — ciclo completo LIVE

Semana T+15 a T+16 · Hito Beta 2

🚀 Lanzamiento Beta 2

Los despachos de Beta 1 estrenan el ciclo completo. Pueden cerrar una auditoría desde inicio hasta informe firmado sin salir de Gestdok.

Lo que la Beta 2 añade respecto a Beta 1:
  • Generar el informe final completo
  • Revisión memoria del cliente con checklist PGC
  • Carta manifestaciones para firmar
  • Trazabilidad legal completa (cierre 5 años NIA-ES 230)
Estado tras Beta 2: Producto vendible. Ya puedes ofrecerlo a despachos de pago con DPA completo + DPO + asesoría legal.

💰 Inversión hasta Beta 2 lanzada

Asesoría legal (DPA + 5 docs)2.500-3.500 € único
Hetzner Cloud + Storage V1~50 €/mes
Dominio gestdok.com~12 €/año
Sentry + UptimeRobot0 € (tier free)
DPO externalizado (desde T+10)150 €/mes
Total 4 meses MVP~3.500-4.500 €

⏱ Esfuerzo de desarrollo

Bloque A Infra (T+1 → T+4)~4 semanas
Beta 1 features (T+5 → T+8)~4 semanas
🎯 Beta 1 LIVE~T+10
Beta 2 features (T+11 → T+14)~4 semanas
🎯 Beta 2 LIVE~T+16
Total para tener producto vendible~4 meses

⚠ Hitos críticos del cronograma

🚧
Cuello de botella legal (T+1 a T+4): sin DPA + política privacidad, no puedes firmar con despacho beta. El abogado tarda 3 semanas. Empezar HOY el contacto.
Dependencia GPU (si quieres resúmenes IA en Beta): Hetzner tarda 1-2 días en aprovisionar GEX44. Pedirla 1 semana antes de necesitarla.
📋
Informe final es la pieza más compleja: 2-3 semanas reales. Si surge algún bloqueante en OnlyOffice editor (versionado, conflictos), puede ir a 4 semanas. Bufer prudente en el cronograma.
Lo bueno: El 80% del backend de auditoría ya está hecho (matriz riesgos, diario, balance/pyg, materialidad, PC58 IVA, carta 260, ajustes, comparativo histórico). Los desarrollos pendientes son piezas concretas con patrón conocido.