Repositorio del Grupo 1 del curso de .NET: aplicación web con C#, ASP.NET Core MVC, Razor y Entity Framework Core, desarrollada en equipo con Git y GitHub.
Aplicación web para gestionar un ropero solidario con ropa donada, destinada a personas que necesitan vestimenta adecuada para entrevistas de trabajo y no disponen de recursos para adquirirla.
- Catálogo de prendas (trajes, americanas, vestidos, camisas, zapatos, etc.) con fotos, tallas y disponibilidad.
- Búsqueda y filtros por categoría, talla y tipo de prenda.
- Registro e inicio de sesión de usuarios.
- Reserva de una o varias prendas para una entrevista de trabajo.
- Gestión de préstamos y devoluciones, con fechas previstas.
- Historial de reservas y préstamos de cada usuario.
- Gestión del inventario: añadir, editar y retirar prendas donadas.
- Panel de administración para gestionar usuarios, reservas y préstamos.
La idea es desarrollar una aplicación sencilla pero funcional, con dos roles (usuarios y administradores), que permita trabajar con C#, ASP.NET Core MVC, Razor y Entity Framework Core.
Ya viene en el esqueleto: registro e inicio de sesión, los roles User y Admin, la administración de usuarios y la subida de imágenes (ImageStorage, reutilizable para las fotos de las prendas). Todo el dominio del ropero (catálogo de prendas, reservas, préstamos y devoluciones, inventario y panel de administración) está por construir.
Punto de partida común de todos los grupos: solo la entidad ApplicationUser (usuario) y la infraestructura para que todo arranque a la primera. Las entidades del dominio, sus relaciones, servicios, controladores y vistas las construye el equipo.
| Área | Contenido |
|---|---|
| Usuarios | ApplicationUser (ASP.NET Core Identity) con nombre visible, avatar, fecha de alta y estado activo; roles Admin y User. |
| Cuenta | Registro, login por usuario o email, logout y página de acceso denegado. |
| Perfil | Consulta y edición del perfil, avatar y cambio de contraseña. |
| Administración | Panel /Users (solo Admin): alta, edición, activación y borrado de usuarios. |
| Datos | Entity Framework Core + SQLite (App_Data/g1.db), migración inicial de Identity y datos demo al arrancar. |
| Imágenes | ImageStorage para guardar imágenes subidas; hoy solo avatares (añadid vuestras carpetas en ImageFolder). |
| Interfaz | Razor + Bootstrap 5 en local, con tema claro/oscuro. |
| Calidad y despliegue | Proyecto de tests xUnit, GitHub Actions (compilar y testear) y Dockerfile. |
- SDK de .NET 10.
global.jsonacepta cualquier SDK de la versión 10.0. - Visual Studio Code y C# Dev Kit. Es el IDE estándar del curso en Windows, macOS y Linux.
- Git. Docker es opcional y solo se usa al explicar despliegue.
No instales ASP.NET, C#, SQLite ni Entity Framework por separado: los aporta el SDK o se restauran como dependencias del proyecto.
Instala .NET 10 SDK, Visual Studio Code y C# Dev Kit una sola vez en el ordenador.
winget install --id Microsoft.DotNet.SDK.10 --exact
winget install --id Microsoft.VisualStudioCode --exact
winget install --id Git.Git --exactCierra y abre una terminal nueva; después instala la extensión:
code --install-extension ms-dotnettools.csdevkitbrew install dotnet
brew install --cask visual-studio-code
brew install git
code --install-extension ms-dotnettools.csdevkitSi no utilizas Homebrew, instala el SDK de .NET 10 con el instalador oficial de macOS y añade C# Dev Kit desde el panel Extensions de VS Code.
sudo apt-get update
sudo apt-get install -y dotnet-sdk-10.0 git
sudo snap install code --classic
code --install-extension ms-dotnettools.csdevkitPara otra distribución Linux, sigue el instalador oficial de .NET para Linux y, una vez instalado VS Code, ejecuta el último comando.
Comprueba la instalación desde esta carpeta:
dotnet --versionDebe mostrar una versión que empiece por 10.0.
Si el comando code no se reconoce, abre VS Code e instala C# Dev Kit desde
Extensions.
Clona el repositorio y abre su carpeta (no una carpeta superior) en VS Code. C# Dev Kit carga automáticamente G1AspNet.sln.
git clone https://github.com/certidevs/g1_aspnet.git
cd g1_aspnet
code .
dotnet restore G1AspNet.sln
dotnet tool restore
dotnet run --project G1AspNet.csproj --launch-profile httpAbre http://localhost:5107. El primer arranque crea App_Data/g1.db, aplica la migración de Identity y añade los usuarios demo:
admin/Admin123!user/User123!
Todo el grupo tiene permiso de escritura en este repositorio. Para no pisaros el trabajo:
-
Una rama por tarea, partiendo de
mainactualizado:git switch main git pull git switch -c feature/nombre-corto
-
Commits pequeños y con mensaje claro (
feat: ...,fix: ...,docs: ...). -
Subid la rama y abrid una Pull Request hacia
main(git push -u origin feature/nombre-corto). Que la revise al menos otra persona del equipo antes de fusionarla y que el check de GitHub Actions esté en verde. -
No hagáis
pushdirecto amainnigit push --force. -
Antes de abrir la PR, y cada vez que
mainavance, actualizad vuestra rama:git pull --rebase origin main. -
Repartid el trabajo con Issues (una persona por issue) y, si queréis, un tablero de Projects.
Las migraciones (Data/Migrations) son lo que más choca al trabajar en paralelo, sobre todo ApplicationDbContextModelSnapshot.cs:
- Avisad al equipo antes de crear una migración y fusionad su PR cuanto antes.
- Si al actualizar con
mainhay conflicto enData/Migrations, no lo resolváis a mano: descartad vuestros cambios en esa carpeta, integradmain, borrad vuestra base local (App_Data/*.db) y volved a crear la migración condotnet ef migrations add. - Nunca editéis ni borréis migraciones que ya estén en
main.
Todos se ejecutan desde la raíz de este repositorio.
# Restaurar dependencias NuGet y herramientas locales tras clonar o actualizar
dotnet restore G1AspNet.sln
dotnet tool restore
# Ejecutar la aplicación
dotnet run --project G1AspNet.csproj --launch-profile http
# Ejecutar con recarga al guardar archivos
dotnet watch --project G1AspNet.csproj run --launch-profile http
# Compilar y ejecutar los tests
dotnet build G1AspNet.sln
dotnet test G1AspNet.slndotnet-ef está fijado en .config/dotnet-tools.json, por lo que dotnet tool restore lo deja disponible sin instalar nada de forma global.
# Después de cambiar una entidad: crear y aplicar una migración
dotnet ef migrations add NombreDescriptivo
dotnet ef database update
# Corregir la última migración solo antes de aplicarla a la base de datos
dotnet ef migrations removeLas migraciones se aplican también al arrancar la aplicación. El comando database update se incluye para conocer el flujo explícito.
GitHub Actions ejecuta restauración, compilación Release y tests en cada push a main y en cada pull request hacia main.
Docker es opcional:
docker build -t g1_aspnet:local .
docker run --rm -p 10000:10000 g1_aspnet:localEl contenedor queda disponible en http://localhost:10000.
En VS Code, selecciona el perfil http y pulsa F5 para depurar. Las tareas G1: compilar y G1: ejecutar tests están disponibles en Terminal → Run Task. En Windows, Visual Studio 2026 también abre G1AspNet.sln; consulta la guía de IDEs.