https://github.com/william-ro/clean-architecture-template
Basic template for .NET applications following Clean Architecture principles, with modular structure and Nix-powered development environment.
https://github.com/william-ro/clean-architecture-template
clean-architecture dev-shell dotnet nix webapp
Last synced: about 2 months ago
JSON representation
Basic template for .NET applications following Clean Architecture principles, with modular structure and Nix-powered development environment.
- Host: GitHub
- URL: https://github.com/william-ro/clean-architecture-template
- Owner: William-Ro
- License: mit
- Created: 2025-03-26T20:38:03.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-27T17:47:02.000Z (about 1 year ago)
- Last Synced: 2025-03-27T18:38:44.787Z (about 1 year ago)
- Topics: clean-architecture, dev-shell, dotnet, nix, webapp
- Language: C#
- Homepage:
- Size: 26.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.es.md
- License: LICENSE
Awesome Lists containing this project
README
# Plantilla de Arquitectura Limpia - .NET
Este repositorio proporciona una plantilla básica para iniciar un proyecto en **.NET 8** siguiendo los principios de **Arquitectura Limpia**. Es ideal para quienes buscan una estructura modular, escalable y bien organizada desde el principio.
[🇬🇧 Read in English](README.md)
## 📌 Características
- **Estructura basada en Arquitectura Limpia**
- **Separación por capas** para mantener el código modular y fácil de mantener:
- `Dominio`: Entidades y lógica de negocio.
- `Aplicación`: Casos de uso y reglas de negocio.
- `Infraestructura`: Implementaciones externas como bases de datos y servicios.
- `Presentación`: API Web con ASP.NET Core.
- **Incluye un `flake.nix`** para un entorno de desarrollo reproducible con Nix.
- **Fácil de extender y adaptar a diferentes proyectos.**
## 🚀 Cómo usar esta plantilla
### 📥 Clonar el repositorio
La forma más sencilla de comenzar es clonando este repositorio:
```sh
git clone https://github.com/William-Ro/Clean-Architecture-Template.NET
cd Clean-Architecture-Template.NET
```
Luego, puedes modificarlo según tus necesidades.
### 🔨 Crear un nuevo proyecto desde cero (alternativa a clonar el repositorio)
Si prefieres configurar el proyecto manualmente, sigue estos pasos:
```sh
mkdir MiNuevoProyecto
cd MiNuevoProyecto
mkdir src
dotnet new sln -n MiNuevoProyecto
cd src
dotnet new classlib -n Aplicacion
dotnet new classlib -n Dominio
dotnet new classlib -n Infraestructura
dotnet new webapi -n Presentacion --use-controllers
cd ..
dotnet sln add ./src/Aplicacion ./src/Dominio ./src/Infraestructura ./src/Presentacion
cd src
dotnet add Aplicacion reference Dominio
dotnet add Infraestructura reference Aplicacion
dotnet add Presentacion reference Aplicacion
dotnet add Presentacion reference Infraestructura
```
Esto generará una estructura idéntica a la del repositorio.
## 📂 Estructura del Proyecto
```
MiNuevoProyecto/
│── src/
│ ├── Aplicacion/ # Casos de uso y lógica de aplicación
│ ├── Dominio/ # Entidades y lógica de dominio
│ ├── Infraestructura/ # Persistencia, servicios externos, etc.
│ ├── Presentacion/ # API Web con ASP.NET Core
│── .gitignore
│── LICENSE
│── README.md
│── flake.nix # Configuración de DevShell con Nix
```
## 🛠️ Entorno de Desarrollo con Nix
Este proyecto incluye un **`flake.nix`** para gestionar las dependencias de desarrollo de forma reproducible.
### 📦 Requisitos
- Tener [Nix](https://nixos.org/download.html) instalado en tu sistema.
### 🔧 Activar el entorno de desarrollo
Ejecuta el siguiente comando:
```sh
nix develop
```
Esto instalará automáticamente:
- **.NET SDK 8**
- **Entity Framework (`dotnet-ef`)**
- **JetBrains Rider** (si está descomentado en `flake.nix` y `allowUnfree = true` está habilitado)
## 🏁 Ejecutar la API
Para ejecutar el servidor local, usa:
```sh
cd src/Presentacion
DOTNET_ENVIRONMENT=Development dotnet run
```
Por defecto, la API estará disponible en: **`http://localhost:5000/swagger/index.html`**
## 🏗️ Compilar y Publicar
Para compilar el proyecto:
```sh
dotnet build
```
Para publicar la aplicación:
```sh
dotnet publish -c Release -o ./publish
```
## 📜 Licencia
Este proyecto está bajo la licencia **MIT**. Puedes modificarlo y usarlo libremente en tus proyectos.
## 🤝 Contribuciones
Si tienes mejoras o sugerencias, ¡siéntete libre de **hacer un fork** y enviar un **pull request**! 😃