Plataforma "Domicilio.Digital"

Job ID: 40269178

Budget: $30 – $250 USD

Usted debe indicar el costo y tiempo de desarrollo.
Debe leer lo presente y revisar la maqueta (midomicilio.digital/mailcow.html) antes de realizar consultas.

1. Objetivo del Proyecto
Desarrollar una plataforma SaaS denominada "Domicilio.Digital" para notificaciones legales, que integra un backend Python (Django/FastAPI) con una infraestructura de correo basada en WildDuck (Node.js + MongoDB) y Roundcube como webmail personalizable. El sistema debe ofrecer marca blanca paramétrica, gestión de identidad por RUT, e integración con Wasabi S3 para almacenamiento en frío. Se desplegará inicialmente en un VPS de OVHCloud (4 vCores, 8 GB RAM, 75 GB SSD) con capacidad objetivo de 1000 usuarios.

2. Arquitectura General
El backend Python orquesta toda la lógica de negocio: gestión de empresas, autenticación RUT con MFA, integración con Smartrecognition.best (verificación facial, se proporciona API), generación de PDFs de TyCs, y exposición de endpoints para Roundcube. Se comunica vía API REST con WildDuck para crear y gestionar buzones, dominios y cuotas. WildDuck proporciona el servicio IMAP/POP3 subyacente con almacenamiento en MongoDB. Roundcube actúa como webmail, extendido mediante plugins para interceptor legal y visibilidad de cuotas. Nginx gestiona el enrutamiento y auth_request. Los mensajes siguen políticas de ciclo de vida parametrizables por empresa, con migración automatizada a Wasabi S3 para datos inactivos.

3. Componentes Principales
• Backend Python: Gestión de empresas, RUT, facturación, integración con APIs externas, generación de PDFs, endpoints para Roundcube.
• WildDuck: Servidor de correo API-first (Node.js + MongoDB). Toda la gestión de buzones vía API REST.
• Roundcube: Webmail con temas dinámicos por empresa y plugins personalizados (interceptor legal, visor de cuota, acceso a Wasabi).
• Nginx: Reverse proxy, SSL, auth_request para control de acceso.
• MongoDB: Metadatos y estructura de buzones de WildDuck.
• PostgreSQL: Datos de negocio (empresas, RUT, planes, TyCs).
• Redis: Sesiones, rate limiting, colas.
• Wasabi S3: Almacenamiento en frío para mensajes inactivos.

4. Funcionalidades por Rol
Superusuario: Panel global con métricas de uso, gestión de empresas (activar/suspender/inhibir), baja automatizada con generación de copias de seguridad individuales enviadas por enlace seguro, control de RUT para facturación.
Administrador de Empresa: Informes de ocupación y usuarios activos, gestión de usuarios (importación CSV, activación/suspensión).
Usuario Final: Roundcube personalizado con imagen de su empresa, carpeta "Documentos Legales" de solo lectura (inmutable), carpeta "Archivo Histórico" con mensajes migrados a Wasabi.

5. Almacenamiento y Ciclo de Vida
Totalmente parametrizable por empresa mediante configuración en backend. Parámetros: días en almacenamiento activo (SSD/MongoDB), días en almacenamiento comprimido (con nivel de compresión configurable), activación de migración a Wasabi. Cada empresa puede tener políticas independientes (ej: todo directo a Wasabi, o 30 días activo + 60 comprimido + resto Wasabi). Scripts automatizados ejecutan las migraciones según la configuración.

6. Gestión de Cuotas
Cada usuario tiene cuota asignada según plan (ej: 1 GB, 10 GB, 50 GB), gestionada por backend Python y aplicada en WildDuck vía API. Visibilidad en Roundcube: si WildDuck soporta IMAP QUOTA, se usa la barra nativa. Si no, se desarrolla un plugin que consulta endpoint del backend (/api/user/quota) y muestra barra personalizada.

7. Seguridad y Flujo Legal
Interceptor legal: plugin de Roundcube que consulta al backend antes de cargar el webmail. Si el usuario no ha firmado los últimos TyCs, es redirigido a página de firma en backend. Autenticación por RUT con verificación facial opcional (Smartrecognition.best) y respaldo OTP. MFA (TOTP) obligatorio para superusuarios. Generación de PDFs de TyCs firmados, depositados automáticamente en carpeta inmutable "Documentos Legales".

8. Integraciones Externas
• Smartrecognition.best: API para verificación facial (gestionada por backend Python).
• Wasabi S3: Almacenamiento en frío vía API S3 estándar, con credenciales por entorno.
Queda fuera de alcance la migración de datos heredados y el desarrollo de APIs no especificadas.

9. Entorno de Despliegue
• Proveedor: OVHCloud VPS (4 vCores, 8 GB RAM, 75 GB SSD) con Ubuntu 22.04.
• Contenedores: Docker + Docker Compose para todos los componentes.
• Proxy: Nginx con SSL automático.
• Almacenamiento frío: Wasabi S3 (configuración de buckets y credenciales a definir

10. Entregables
• Repositorio Git con código fuente completo (backend Python, plugins Roundcube, scripts migración, configuraciones Docker).
• Documentación técnica de instalación paso a paso en OVHCloud.
• Configuración de Wasabi y políticas de respaldo.
• Demostración funcional con al menos dos empresas con marcas y políticas diferentes.

11. Criterios de Aceptación
• Creación de empresas con parámetros de almacenamiento independientes.
• Gestión de usuarios reflejada en WildDuck vía API.
• Roundcube muestra imagen corporativa por empresa.
• Interceptor legal bloquea acceso sin TyCs firmados.
• Cuotas visibles para el usuario.
• Mensajes migran a Wasabi según política configurada y son accesibles desde "Archivo Histórico".
• Prueba de carga simulada con 500 usuarios en el VPS.

Debe instalr todo y dejar todo funcionando
6.2 Tiering (Ciclo de Vida)
Scripts programados para optimización de almacenamiento:
• 0 - 7 días: Almacenamiento en SSD Local. Sin compresión (Hot Data).
• 7 - 30 días: Almacenamiento en SSD Local. Compresión Nivel 6.
• 30 - 90 días: Almacenamiento en SSD Local. Compresión Nivel 9.
• > 90 días: Offloading a Wasabi S3. El correo se mueve del disco local al bucket S3 (Cold Data).