Sistema de Gestión de Tareas Recurrentes y de Calendario
S_Blazor_TDApp es una aplicación web moderna desarrollada con Blazor WebAssembly y .NET 10 para la gestión integral de tareas recurrentes y calendarios. El sistema permite administrar diferentes tipos de tareas (calendario y recurrentes) con autenticación JWT, autorización por roles y seguimiento de procesos.
- Características Principales
- Capturas de Pantalla
- Arquitectura del Sistema
- Tecnologías Utilizadas
- Requisitos del Sistema
- Instalación y Configuración
- Estructura del Proyecto
- Contribución
- Licencia
-
🔐 Inicio de sesión con control de roles
Soporte para roles de Super Administrador, Administrador, Supervisor y Empleado, con autorización personalizada por vista o menú. Incluye sección de credenciales de prueba con acceso rápido por rol directo desde el login. -
📊 Reportes de procesos y gestión de tareas
Visualización y seguimiento de tareas recurrentes y calendario de actividades. -
⚙️ Configuración de disponibilidad de tareas
Permite definir la disponibilidad específica para cada tarea dentro del sistema. -
👥 Gestión de usuarios y roles
Administración de usuarios, con asignación automática de roles por defecto y generación de código. Incluye gestión dinámica de permisos de acceso por menú para cada rol. -
🧾 Validaciones en formularios
Validaciones completas en los campos donde el usuario ingresa información para mantener integridad de datos. -
🔁 Asignación de días a tareas recurrentes
Posibilidad de definir en qué días específicos deben ejecutarse las tareas repetitivas. -
🚫 Control de tareas deshabilitadas
Las tareas deshabilitadas no se mostrarán en los menús de procesos ni en disponibilidad. -
🛑 Control de acceso de usuarios inactivos
Usuarios marcados como inactivos o deshabilitados no podrán iniciar sesión en el sistema. -
🔒 Autorización por rol
Si un usuario no está autorizado, no podrá acceder a ciertas páginas o menús según su rol asignado. -
🔍 Búsqueda y filtrado por fecha
Permite buscar y filtrar tareas registradas mediante fechas específicas. -
📄 Paginación de datos
Implementación de paginación para mejorar la navegación entre grandes volúmenes de registros. -
🛡️ Restricción de escalada de roles
Los Supervisores no pueden asignar roles de Administrador o Super Administrador a otros usuarios. Validación aplicada en backend y frontend. -
🔑 Cambio de contraseña seguro
El perfil de usuario incluye confirmación de nueva contraseña para evitar errores tipográficos al actualizar credenciales. -
📋 Historial de procesos registrados
Registro con búsqueda por fecha y nombre, con indicador del usuario que realizó cada proceso.
Pantalla de inicio de sesión con validación de credenciales
Panel principal con navegación por roles
Administración de tareas recurrentes con configuración de días
Vista de disponibilidad para gestionar en que dias estaran las tareas
Vista de calendario para programación de tareas
Panel de administración de usuarios
Panel de administración de Roles y Permisos para cada usuario
El proyecto sigue una arquitectura de aplicación distribuida con separación clara de responsabilidades:
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Blazor Client │ │ ASP.NET Server │ │ SQL Server DB │
│ (WebAssembly) │◄──►│ (.NET 10 API) │◄──►│ (Entity Framework)│
│ │ │ │ │ │
│ • UI Components │ │ • Controllers │ │ • Entidades │
│ • Services │ │ • Business Logic │ │ • Tablas y Restrics.│
│ • Authentication │ │ • Data Access │ │ • Relaciones │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
- Cliente Blazor WebAssembly: Interfaz de usuario reactiva que se ejecuta en el navegador
- Servidor API: Backend con controladores RESTful y lógica de negocio
- Base de Datos: SQL Server con Entity Framework Core para persistencia
- Proyecto Compartido: DTOs y modelos compartidos entre cliente y servidor
- 🔷 Blazor WebAssembly - Framework SPA que permite usar C# en el frontend
- 🔐 Microsoft.AspNetCore.Components.Authorization - Sistema de autenticación y autorización
- 💾 Blazored.SessionStorage - Gestión del almacenamiento de sesión del navegador
- 🌟 CurrieTechnologies.Razor.SweetAlert2 - Alertas y notificaciones modernas
- 🛠 ASP.NET Core (.NET 10) - Framework web moderno y multiplataforma
- 🗃 Entity Framework Core - ORM para SQL Server con contexto
DbTdappContext - 🧭 AutoMapper - Mapeo automático entre entidades y DTOs
- 📘 Swagger/OpenAPI - Documentación interactiva de la API
- ⏱ Background Services - Servicios en segundo plano para tareas programadas
- 💽 SQL Server - Sistema de gestión de base de datos relacional
- 📊 Entity Framework Core - Mapeo ORM para acceso a datos y relaciones
- 🔍 Visual Studio 2022 - IDE recomendado para desarrollo
- 🌐 CORS - Configuración para solicitudes cross-origin
- 🔄 Hot Reload - Desarrollo ágil con recarga en caliente
- .NET 10 SDK - Framework de desarrollo
- Visual Studio 2022 (17.14 o superior) - IDE recomendado
- SQL Server (Express, Developer o superior) - Base de datos
- Git - Control de versiones
- C# (según SDK instalado con .NET 10) - Lenguaje de programación
- Nullable reference types habilitado
- Implicit usings habilitado
git clone https://github.com/xfiberex/S_Blazor_TDApp.git
cd S_Blazor_TDAppEjecuta el script SQL ubicado en Consultas BD TDApp/001.CREACIÓN DE BD Y TABLAS.sql para:
- Recrear la base de datos
DB_TDApp - Crear todas las tablas necesarias
- Insertar datos iniciales (roles, menús, días disponibles y usuario semilla)
Por seguridad, las cadenas de conexión y la clave JWT no deben guardarse en appsettings.json. Utiliza User Secrets en desarrollo:
- Abre una terminal en la carpeta
S_Blazor_TDApp.Server. - Inicializa los secretos:
dotnet user-secrets init - Configura la cadena de conexión:
dotnet user-secrets set "ConnectionStrings:cadenaSQLPrimary" "Server=TU_SERVIDOR;Database=DB_TDApp;Trusted_Connection=True;TrustServerCertificate=True;"
- Configura la clave JWT (debe tener al menos 32 caracteres):
dotnet user-secrets set "Jwt:Key" "TU_CLAVE_SECRETA_MUY_SEGURA_DE_AL_MENOS_32_CARACTERES"
En producción, utiliza variables de entorno o un servicio de Vault seguro (como Azure Key Vault).
Verifica en S_Blazor_TDApp.Client/Program.cs que HttpClient apunte a la URL del servidor:
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7219/") });- Abre
S_Blazor_TDApp.slnen Visual Studio 2022 - Configura múltiples proyectos de inicio:
- Click derecho en la solución → "Set Startup Projects"
- Selecciona "Multiple startup projects"
- Configura en este orden:
S_Blazor_TDApp.Server→ StartS_Blazor_TDApp.Client→ Start
- Presiona
F5o click en "Start"
# Terminal 1 - Servidor API
cd S_Blazor_TDApp.Server
dotnet run
# Terminal 2 - Cliente Blazor
cd S_Blazor_TDApp.Client
dotnet run- Cliente Blazor:
https://localhost:7041(Puerto por defecto) - API Swagger:
https://localhost:7219/swagger(Documentación de la API)
S_Blazor_TDApp/
├── 📁 S_Blazor_TDApp.Client/ # Frontend Blazor WebAssembly
│ ├── 📁 Pages/ # Páginas y componentes de la UI
│ ├── 📁 Services/ # Servicios para consumir APIs
│ ├── 📁 Layout/ # Layouts y navegación
│ └── 📁 Extensions/ # Extensiones y utilidades
├── 📁 S_Blazor_TDApp.Server/ # Backend API REST
│ ├── 📁 Controllers/ # Controladores de la API
│ ├── 📁 DBContext/ # Contexto de Entity Framework
│ ├── 📁 Entities/ # Modelos de datos
│ └── 📁 Utilities/ # Servicios y utilidades
├── 📁 S_Blazor_TDApp.Shared/ # DTOs y modelos compartidos
├── 📁 S_Blazor_TDApp.Password/ # Utilidad de encriptación
└── 📁 Consultas BD TDApp/ # Scripts de base de datos
¿Quieres contribuir al proyecto? ¡Excelente! Sigue estos pasos:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
- 📋 Mostrar tareas de calendario en el historial de procesos
- 🔧 Submenús para tareas recurrentes y de calendario
Este proyecto está licenciado bajo los términos de la Licencia MIT.
MIT License - Puedes usar, modificar y distribuir el código libremente,
manteniendo el aviso de copyright original.
⭐ Si te gusta este proyecto, no olvides darle una estrella en GitHub ⭐
Desarrollado con ❤️ usando Blazor WebAssembly y .NET 10