Aplicación web de gestión de tareas construida con Blazor y .NET, siguiendo los principios de SOA y Clean Architecture.
TaskCloud es una aplicación web diseñada para ayudar a individuos y equipos a organizar y gestionar sus tareas de manera eficiente. Construida con Blazor y .NET Core, esta aplicación sigue los principios de SOA y Clean Architecture para garantizar una arquitectura sólida y escalable.
Desarrollar una aplicación web robusta, escalable y mantenible para la gestión de tareas utilizando Blazor (.NET) como marco de interfaz e implementando principios de arquitectura orientada a servicios (SOA) en el backend. La aplicación se adherirá al patrón de arquitectura limpia para lograr una clara separación de preocupaciones y promover la capacidad de prueba.
Este objetivo enfatiza:
- Robustez: La aplicación debe ser capaz de manejar un gran volumen de usuarios y tareas.
- Escalabilidad: La arquitectura debe estar diseñada para adaptarse al crecimiento futuro.
- Mantenibilidad: El código debe estar bien estructurado y ser fácil de entender para futuros desarrolladores.
- Separación clara de preocupaciones: la aplicación debe dividirse en capas distintas (presentación, aplicación e infraestructura) para mejorar la capacidad de prueba y la reutilización.
Funcionalidades:
- Gestión de Tareas:
- Creación, edición y eliminación de tareas.
- Asignación de tareas a usuarios.
- Establecimiento de prioridades y fechas de vencimiento.
- Seguimiento del progreso de las tareas.
- Gestión de subtareas y dependencias.
- Gestión de Usuarios:
- Registro y autenticación de usuarios.
- Gestión de perfiles de usuario.
- Asignación de roles y permisos.
- Colaboración:
- Comentarios y discuciones en las tareas.
- Compartir tareas con otros usuarios.
- Integraciones:
- Integraciones con calendarios (Posteriormente)
- Integraciones con herramientas de comunicaciones (Slack, Teams.) (Posteriormente)
- Notificaciones:
- Notificaciones por correo electrónico, push o in-app sobre cambios en las tareas, vencimientos, etc.
- Informes y Analítica:
- Generación de informes sobre el progreso de los proyectos y la productividad de los usuarios (Posteriormente).
- Visualización de datos en gráficos y tablas (Posteriormente).
Tecnologías:
- Interfaz: Blazor (.NET)
- Backend: .NET 8 (C#)
- Base de datos: PostgreSQL
- Nube: GCP
- SOA: Implementación de servicios autónomos para autenticación, gestión de usuarios, tareas y notificaciones.
- Clean Architecture: Separación clara de las capas de presentación, aplicación y dominio.
- Contenedores: Docker
- Orquestación: Kubernetes (no se aplica para este ejemplo)
Arquitectura:
- SOA: Cada funcionalidad clave (autenticación, gestión de usuarios, tareas, notificaciones) será un servicio independiente.
- Clean Architecture: Separación clara de las capas:
- Presentación: Blazor components
- Aplicación: Lógica de negocio y casos de uso
- Dominio: Entidades y reglas de negocio
- Infraestructura: Acceso a datos, servicios externos
- Comunicación entre servicios: REST API
- Seguridad: Authenticación basada en tokens, autorización basada en roles, encriptación de datos sensibles.
Pruebas:
- Estrategias de Prueba: Unitarias, de integración, de extremo a extremo.
- Herramientas de Prueba: XUnit
Servicio de Autenticación:
- Flujo de autenticación (registro, inicio de sesión, recuperación de contraseña).
- Mecanismos de seguridad (encriptación, tokens).
- Integración con proveedores de identidad local.
Servicio de Gestión de Usuarios:
- Operaciones CRUD sobre usuarios (crear, leer, actualizar, eliminar).
- Gestión de roles y permisos.
Servicio de Gestión de Tareas:
- Ciclo de vida de una tarea (creación, asignación, finalización).
- Relaciones entre tareas (dependencias, prioridades)
- Integración con calendarios.
Servicio de Notificaciones:
- Tipos de notificaciones (correo electrónico, push, SMS).
- Canales de notificación.
- Configuración de preferencias de notificación por usuario.
Estado actual: [work in progress]