Yukidoke
Una plataforma de finanzas personales por hogar construida con Angular 22 y un monolito modular en .NET 10. La beta V1 actual se enfoca en privacidad financiera familiar, contabilidad de partida doble y reglas de negocio autoritativas en la API.
- CICLO DE VIDA
- Activo — beta V1 en progreso
- ACCESO AL CÓDIGO
- Repositorios privados; el código fuente no es públicamente inspeccionable.
- ACCESO A DEMO
- Sin demo pública; no se afirma preparación para producción con datos reales de hogares.
- Ambos repositorios de código son privados, por lo que revisores públicos no pueden inspeccionar commits, tests o ADRs directamente.
- No se afirma adopción, ingresos ni escala de producción para este proyecto.
ESTADO ACTUAL
Beta V1 — migración arquitectónica activa
Las capacidades implementadas y el trabajo pendiente se presentan por separado. No se afirma preparación para producción con datos financieros reales de hogares.
EL JEFE // PROBLEMA
Las finanzas familiares combinan obligaciones compartidas con información privada. El producto necesitaba modelar tarjetas, deudas e ingresos de varios miembros sin exponer registros privados ni duplicar cálculos financieros entre clientes.
LA ESTRATEGIA // ENFOQUE
Separé la presentación de la autoridad financiera: una SPA Angular 22 controla la interacción y el estado local por feature, mientras un monolito modular ASP.NET Core en .NET 10 controla permisos del hogar, reglas contables y modelos de lectura durables. PostgreSQL almacena los módulos, Keycloak emite la identidad y REST continúa siendo autoritativo cuando el tiempo real no está disponible.
EL SACRIFICIO // COMPENSACIONES
Elegí un monolito modular y una sola base PostgreSQL en lugar de servicios distribuidos para mantener comprensibles las transacciones, migraciones y operaciones de la V1. Los repositorios y el despliegue siguen privados mientras madura el modelo de hogares y los verticales pendientes, por lo que este portafolio documenta evidencia arquitectónica reproducible sin afirmar un lanzamiento público en producción.
VICTORIA // RESULTADO
La base V1 ya demuestra el stack Angular/.NET anunciado con alcance por hogar, un motor contable compartido, tarjetas, deudas, ingresos, clientes API tipados, concurrencia optimista y estado de notificaciones recuperable. Planning, notificaciones completas, el cutover al stack real y el despliegue público permanecen identificados como trabajo futuro.
IMPLEMENTADO // VERIFICADO EN LA DOCUMENTACIÓN DE LOS REPOSITORIOS
- SPA standalone en Angular 22 con rutas lazy, contexto del hogar, guards por capacidades y stores locales basados en signals.
- Integración Keycloak Authorization Code + PKCE, adjunto protegido de bearer tokens y autenticación mock limitada a loopback para desarrollo.
- Monolito modular .NET 10 con ASP.NET Core Minimal APIs, módulos Users, Households, Accounting, Cards, Debts e Incomes y documento OpenAPI de desarrollo.
- Persistencia PostgreSQL 16 con esquema por módulo, migraciones EF Core, concurrencia optimista y motor contable de partida doble.
- Clientes REST tipados, presentación de ProblemDetails, normalización de paginación y reconciliación de notificaciones con SignalR.
- Infraestructura de pruebas unitarias, integración, funcionales, navegador y accesibilidad documentada en ambos repositorios.
PLANIFICADO // NO PRESENTADO COMO ENTREGADO
- Mover cada cálculo y recomendación financiera legacy restante detrás de contratos autoritativos de la API.
- Reestructurar Planning para presupuestos, metas, suscripciones y seguimiento de activos sobre el modelo actual de hogares.
- Completar plantillas durables de notificaciones, localización, navegación de acciones y garantías del backend.
- Finalizar contratos financieros contra el stack real, enforcement de internacionalización y verificación de preparación productiva.
- Publicar un repositorio accesible para reclutadores o una demo pública reproducible después de verificar privacidad y cutover.
ARQUITECTURA // IMPLEMENTACIÓN ACTUAL
SPA Angular 22
Rutas · signal stores · clientes REST tipados
Minimal API .NET 10
Alcance por hogar · reglas · ProblemDetails
Keycloak
OIDC · Authorization Code + PKCE
Users · Households · Accounting
Cards · Debts · Incomes
PostgreSQL 16
Esquema por módulo · migraciones EF Core
Worker + Database Migrator
Procesos en segundo plano · autoridad de migración
DECISIONES DE SEGURIDAD
- El navegador es un cliente OIDC público y no contiene client secret; el inicio de sesión usa Authorization Code + PKCE.
- Keycloak controla identidad y roles globales, mientras la API y PostgreSQL controlan membresía, permisos y visibilidad por registro.
- Las rutas por hogar ocultan la existencia de recursos a quienes no son miembros y usan concurrencia optimista para escrituras en conflicto.
- La preparación productiva continúa bloqueada hasta verificar privacidad y cobertura de autorización contra el stack real de extremo a extremo.
DECISIONES DE PRUEBAS
- Angular usa specs Vitest colocados con el código y recorridos Playwright/Axe para comportamiento de navegador y accesibilidad.
- La API usa xUnit y NSubstitute para dominio/aplicación, con Testcontainers para rutas de integración con PostgreSQL y Keycloak reales.
- La documentación registra comandos locales de calidad, pero GitHub Actions deshabilitados u omitidos no se reportan como evidencia aprobada.
- La cobertura completa del frontend contra la API financiera real sigue planificada y no se contabiliza como implementada.
DECISIONES DE DESPLIEGUE
- El stack de desarrollo de la API es reproducible con Docker Compose para PostgreSQL, Keycloak, migrator, API y worker.
- El frontend configura endpoints de desarrollo, staging y producción; el desarrollo local puede usar json-server o la API .NET.
- El migrator es el único proceso autorizado para aplicar migraciones EF Core; la API y el worker permanecen como procesos de aplicación stateless.
- No se enlaza un despliegue público como listo para producción porque la verificación operativa y de privacidad está incompleta.
Beta V1 activa
Ingeniero de producto y full-stack
XP GANADA // APRENDIZAJES
- Mantener autenticación, autorización por hogar y visibilidad de registros financieros como límites separados.
- Usar estado durable recuperado por REST como fuente de verdad y tratar SignalR como una optimización incremental.
- Un monolito modular puede conservar límites de dominio y consistencia transaccional sin infraestructura distribuida prematura.
LIMITACIONES DE ACCESO Y EVIDENCIA
- Ambos repositorios de código son privados, por lo que revisores públicos no pueden inspeccionar directamente commits, pruebas o ADRs.
- No se presenta una demo en vivo accesible para reclutadores como lista para producción.
- El diagrama resume la implementación actual documentada; los módulos planificados se enumeran por separado.
- Los resultados son cualitativos y respaldados por los repositorios; aquí no se afirman métricas de adopción, ingresos, rendimiento o cobertura.
REPOSITORIOS FUENTE
- Yukidoke Web — cliente Angular
Repositorio privado; actualmente no hay acceso público.
- Yukidoke API — backend .NET
Repositorio privado; actualmente no hay acceso público.