Tienda MiCholo sigue el patrón Model-View-Controller (MVC) sobre ASP.NET Core 10. La aplicación separa claramente las responsabilidades en capas: los controladores orquestan la lógica de negocio, los modelos representan el dominio (productos, ventas, proveedores), y las vistas Razor generan el HTML final que recibe el navegador. La capa de datos utiliza Entity Framework Core 10 con un proveedor SQL Server, mientras que la autenticación y autorización se delegan a ASP.NET Core Identity.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/proyecto-dise-o/llms.txt
Use this file to discover all available pages before exploring further.
Capas del sistema
Controllers
Siete controladores gestionan todas las rutas de la aplicación. Cada uno extiende
Controller e inyecta AppDbContext o los servicios de Identity necesarios.AccountController— login, logout y acceso denegadoHomeController— página de inicio y erroresProductoController— CRUD de productos y listado paginadoProveedorController— gestión de proveedoresReporteController— reportes de ventas y stockUsuarioController— administración de usuarios (solo Admin)VentaController— registro y anulación de ventas
Models
Entidades de dominio y enumeraciones que EF Core mapea a tablas SQL Server.Entidades
Producto— artículo del inventarioProveedor— empresa suministradoraVenta— cabecera de una transacción de ventaDetalleVenta— línea de detalle de una ventaVentaItem— modelo temporal para el carrito en sesión
Models/Enums/)EstadoVenta—Activa|AnuladaTipoComprobante—BOLETA|FACTURA
ViewModels
Objetos de transferencia de datos entre controladores y vistas, con anotaciones de validación.
LoginViewModel— credenciales del formulario de accesoCrearUsuarioVM— datos para registrar un nuevo usuarioEditarUsuarioVM— datos para modificar un usuario existenteUsuarioVM— representación de usuario para vistas de listadoDashboardViewModel— métricas agregadas para el panel principal
Views
Vistas Razor (
.cshtml) organizadas por carpetas que corresponden a cada controlador: Account/, Home/, Producto/, Proveedor/, Reporte/, Usuario/, Venta/. La carpeta Shared/ aloja el layout principal y los parciales comunes.Data
AppDbContext— extiendeIdentityDbContext<IdentityUser>y expone losDbSetdel dominio. Configura relaciones y conversiones de enum enOnModelCreating.SeedData— siembra los rolesAdminyVendedor, crea las cuentas predeterminadas y carga productos desdeproductos.jsonal arrancar la aplicación.
Helpers
PaginatedList<T>— clase genérica que envuelveList<T>y exponePageIndex,TotalPages,HasPreviousPageyHasNextPage. Crea páginas de resultados de forma asíncrona a partir de cualquierIQueryable<T>usando EF Core.
Flujo de una petición
El siguiente diagrama muestra el ciclo de vida completo desde que el navegador realiza una petición HTTP hasta que recibe la respuesta HTML renderizada.El router recibe la petición
ASP.NET Core evalúa la ruta contra el patrón registrado en Si ningún segmento está presente, la ruta por defecto apunta a
Program.cs:Program.cs
Producto/Listar.Middleware de autenticación verifica la cookie
app.UseAuthentication() inspecciona la cookie de sesión. Si el usuario no está autenticado y el recurso requiere identificación, el middleware redirige automáticamente a /Account/Login.Autorización valida el rol
app.UseAuthorization() evalúa los atributos [Authorize] y [Authorize(Roles = "Admin")] del controlador o la acción. Un usuario autenticado pero sin el rol necesario es redirigido a /Account/AccessDenied.El controlador ejecuta la acción
La acción correspondiente es invocada. Habitualmente consulta
AppDbContext vía EF Core, aplica filtros o paginación con PaginatedList<T> y construye el ViewModel que pasará a la vista.Razor renderiza la vista
El motor Razor compila la vista
.cshtml con el modelo recibido y genera el HTML final. Los layouts de Shared/ envuelven el contenido con cabecera, barra de navegación y pie de página.Dependencias NuGet
Todos los paquetes apuntan a la versión 10.0.9, alineada con el target frameworknet10.0.
| Paquete | Versión | Uso |
|---|---|---|
Microsoft.AspNetCore.Identity.EntityFrameworkCore | 10.0.9 | Integración de ASP.NET Core Identity con EF Core; provee IdentityDbContext |
Microsoft.EntityFrameworkCore | 10.0.9 | ORM base; define DbContext, DbSet y la API fluent de configuración |
Microsoft.EntityFrameworkCore.SqlServer | 10.0.9 | Proveedor SQL Server; habilita UseSqlServer() en la configuración |
Microsoft.EntityFrameworkCore.Design | 10.0.9 | Herramientas en tiempo de diseño para generar migraciones (solo build) |
Microsoft.EntityFrameworkCore.Tools | 10.0.9 | CLI de dotnet-ef; necesario para migrations add y database update (solo build) |
Los paquetes
Microsoft.EntityFrameworkCore.Design y Microsoft.EntityFrameworkCore.Tools tienen <PrivateAssets>all</PrivateAssets>, por lo que no se incluyen en el artefacto publicado de la aplicación. Solo se usan durante el desarrollo.Namespace raíz
Todo el código de la aplicación vive bajo el namespace raízTiendaMiCholo, con los siguientes sub-namespaces:
| Sub-namespace | Contenido |
|---|---|
TiendaMiCholo.Controllers | Los siete controladores MVC |
TiendaMiCholo.Models | Entidades de dominio y VentaItem |
TiendaMiCholo.Models.Enums | EstadoVenta, TipoComprobante |
TiendaMiCholo.ViewModels | ViewModels de formularios y vistas |
TiendaMiCholo.Data | AppDbContext, SeedData |
TiendaMiCholo.Helpers | PaginatedList<T> |