TaskCloud

Aplicación web de gestión de tareas construida con Blazor y .NET, siguiendo los principios de SOA y Clean Architecture.

Stars
0
Committers
1

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.

Visión General de la Solución:

Objetivo:
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.
Alcance Específico
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
Descripción de los Servicios:
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]