Files
prosapp-migration/ARQUITECTURA.md
T
Lizandro GuarnizoandClaude Sonnet 4.6 6e4cc7436d feat: send FCM push notification on service status change + update docs
- services.module: import NotificationsModule
- services.service: inject NotificationsService, notify the other party
  (user or professional) when service status changes to accepted/denied/
  cancelled/active/completed
- ARQUITECTURA.md: updated to reflect current migration state (all migrated)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:49:27 -05:00

8.1 KiB

ProsApp — Arquitectura del Proyecto

📁 ~/Documents/GitHub/

Mapa de Componentes

┌──────────────────────────────────────────────────────────────────┐
│                        USUARIOS (Web)                           │
│                                                                │
│  ┌──────────────────────┐    ┌──────────────────────┐         │
│  │  prosapp_landing_page │    │  prosappweb           │         │
│  │  (también prosapp_2026)│    │  Flutter Web         │         │
│  │  HTML + Tailwind CDN  │    │  Provider + REST API  │         │
│  │  ✅ COMPLETO          │    │  ✅ MIGRADO           │         │
│  └──────────┬───────────┘    └──────────┬───────────┘         │
│             │                          │                       │
│  ┌──────────▼──────────────────────────▼───────────────────┐  │
│  │              prosapp-migration/admin                    │  │
│  │              Next.js 16 + shadcn + Tailwind             │  │
│  │              Panel administrador                        │  │
│  │              ✅ COMPLETO (95%)                          │  │
│  └──────────┬──────────────────────────────────────────────┘  │
└─────────────┼─────────────────────────────────────────────────┘
              │
              │ HTTP / JWT
              │
┌─────────────▼─────────────────────────────────────────────────┐
│              prosapp-migration/backend                        │
│              NestJS + Prisma + PostgreSQL                     │
│              ✅ COMPLETO — Deployado en Coolify               │
│                                                                │
│  Módulos: auth, users, professionals, services, professions,  │
│           locations, chat (Socket.IO), comments,              │
│           notifications (FCM), storage, settings              │
│                                                                │
│              ┌──────────────┐                                  │
│              │  PostgreSQL  │  (servidor Coolify)              │
│              └──────────────┘                                  │
└─────────────────────────────────────────────────────────────────┘
              │
              │ HTTP / JWT
              │
┌─────────────▼─────────────────────────────────────────────────┐
│                        USUARIOS (Mobile)                      │
│                                                                │
│  ┌──────────────────────────────────────────────────────┐     │
│  │                    prosappco                         │     │
│  │  Flutter iOS/Android                                │     │
│  │  Bloc + 8 repos packages — ✅ MIGRADO               │     │
│  │    • user_repository     • professional_repository  │     │
│  │    • chat_repository     • score_repository         │     │
│  │    • city_repository     • service_repository       │     │
│  │    • profession_repository • setting_repository     │     │
│  │  Push notifications via FCM + firebase_messaging    │     │
│  └──────────────────────────────────────────────────────┘     │
└─────────────────────────────────────────────────────────────────┘

Estado por Proyecto

Carpeta App Tech Estado
prosapp-migration/backend API Central NestJS + Prisma + PostgreSQL 100% — Deployado. Notificaciones FCM integradas en cambios de estado de servicio
prosapp-migration/admin Panel Admin Next.js 16 + shadcn 95% — Pendiente: test post-deploy
prosappweb App Web (Flutter) Flutter Web + Provider 95% — Migrado. Pendiente: testing manual
prosappco App Mobile (iOS/Android) Flutter + Bloc + 8 repos 95% — Migrado + FCM. Pendiente: testing manual
prosapp_landing_page Landing Page HTML + Tailwind CDN 100% — Estática, completa

Lo que está hecho

Backend

  • Auth: registro, login, JWT, perfil (/auth/*)
  • Users: CRUD, foto, FCM token (/users/*)
  • Professionals: perfil, horarios, aprobación (/professionals/*)
  • Services: crear, listar (por rol), calendario, estado (/services/*)
    • Validación de transiciones de estado
    • Notificación FCM automática al cambiar estado
  • Comments/Scores: crear, listar por usuario/profesional, reputación
  • Chat: Socket.IO + REST (/chat/*)
  • Storage: upload a S3/local (/storage/upload)
  • Settings: CRUD global
  • Professions + Locations: catálogos
  • Notifications: envío FCM vía POST /notifications/send

prosappweb (Flutter Web)

  • Auth migrada: login, registro, GET /auth/me
  • Todos los providers/models apuntan a REST API
  • Rutas correctas: /services/me, /services/professional, /services/professional/requests, /services/professional/calendar, /services/public-calendar/:id, /services/:id/status
  • DTOs correctos: snake_case, rate, range1_hour1, location_preference
  • Status en inglés en todos los archivos
  • Chat: GET /chat/my, POST /chat/start/:id
  • Horario: PATCH /professionals/me/schedules con formato array
  • Score: POST /comments con DTO correcto
  • user.proState (int) en lugar del antiguo user.state (string español)

prosappco (Flutter Mobile)

  • 8 packages: api_*_repository.dart implementados (Firebase eliminado)
  • firebase_messaging + firebase_core para push notifications
  • FCM token registrado en backend al hacer login (PATCH /users/me/fcm-token)
  • Notificaciones en foreground via flutter_local_notifications
  • Background handler registrado
  • Status conversion maps: int ↔ string
  • TimestampString en todas las entidades
  • Professional UUID vs user_id: fallback resuelto en backend y Flutter

Pendiente (Fase 3 — Testing)

# Tarea Quién
T1 Testear login/registro en prosappweb y prosappco Manual
T2 Testear flujo completo: crear → aceptar → iniciar → terminar → puntuar Manual
T3 Verificar notificaciones push llegan al dispositivo Manual
T4 Probar chat en tiempo real (Socket.IO) Manual
T5 Verificar WebSockets en producción Manual
T6 Probar CRUDs desde admin (Profesiones, Ciudades, Settings) Manual
T7 Verificar flujo aprobación/rechazo de profesionales desde admin Manual

Variables de Entorno Requeridas (Coolify)

DATABASE_URL=postgresql://...
JWT_SECRET=...
FCM_SERVER_KEY=...         # Firebase Cloud Messaging server key
STORAGE_PATH=...           # o S3 config si aplica