VehicleService es un microservicio para la gestión de vehículos desarrollado en .NET 9 siguiendo los principios de Clean Architecture. Este servicio está diseñado para manejar el catálogo de vehículos, información técnica, disponibilidad y operaciones relacionadas con la flota vehicular.
El proyecto sigue los principios de Clean Architecture y está organizado en las siguientes capas:
📁 VehicleServiceEcoF/
├── 🌐 VehicleService.API/ # Capa de presentación (REST API endpoints)
├── 🧠 VehicleService.Application/ # Lógica de aplicación y casos de uso
├── 🎯 VehicleService.Domain/ # Entidades de dominio y reglas de negocio
├── 🔧 VehicleService.Infrastructure/ # Implementaciones técnicas
└── 💾 VehicleService.Persistence/ # Acceso a datos
- 🚗 Catálogo de Vehículos: Gestión completa de información vehicular
- 🔍 Búsqueda Avanzada: Filtros por marca, modelo, año, tipo, etc.
- 📊 Estados de Vehículos: Disponible, en mantenimiento, alquilado, etc.
- 🛠️ Historial de Mantenimiento: Registro de servicios y reparaciones
- 📝 Especificaciones Técnicas: Detalles completos de cada vehículo
- 🏷️ Categorización: Tipos de vehículo (sedán, SUV, camión, etc.)
- 🔄 API RESTful: Endpoints claros y documentados
- 📖 Documentación OpenAPI: Swagger integrado
GET /api/vehicles # Listar todos los vehículos
GET /api/vehicles/{id} # Obtener vehículo por ID
POST /api/vehicles # Crear nuevo vehículo
PUT /api/vehicles/{id} # Actualizar vehículo
DELETE /api/vehicles/{id} # Eliminar vehículo
GET /api/vehicles/search # Búsqueda con filtros
GET /api/vehicles/brands # Listar marcas disponibles
GET /api/vehicles/models # Listar modelos por marca
GET /api/vehicles/available # Vehículos disponibles
PUT /api/vehicles/{id}/status # Actualizar estado
GET /api/vehicles/maintenance # Vehículos en mantenimiento
-
Clona el repositorio
git clone https://github.com/Thetander/VehicleServiceEcoF.git cd VehicleServiceEcoF -
Restaura los paquetes NuGet
dotnet restore
-
Ejecuta el proyecto
dotnet run --project src/VehicleService.API
-
Accede a la documentación API
HTTP: http://localhost:5231 HTTPS: https://localhost:7081 OpenAPI: https://localhost:7081/openapi/v1.json
# Ejecutar todos los tests
dotnet test
# Con cobertura de código
dotnet test --collect:"XPlat Code Coverage"{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}- 5231: HTTP (desarrollo)
- 7081: HTTPS (desarrollo)
// Vehículo principal
public class Vehicle
{
public int Id { get; set; }
public string Make { get; set; } // Marca
public string Model { get; set; } // Modelo
public int Year { get; set; } // Año
public string VIN { get; set; } // Número de identificación
public VehicleType Type { get; set; } // Tipo de vehículo
public VehicleStatus Status { get; set; } // Estado actual
// ... más propiedades
}
// Tipos de vehículo
public enum VehicleType
{
Sedan,
SUV,
Truck,
Van,
Motorcycle,
Bus
}
// Estados del vehículo
public enum VehicleStatus
{
Available,
Rented,
Maintenance,
OutOfService
}- Estructura del proyecto Clean Architecture
- API básica con .NET 9
- Configuración inicial OpenAPI
- Implementar entidades de dominio
- Configurar Entity Framework
- Endpoints CRUD básicos
- Validaciones de negocio
- Sistema de búsqueda y filtros
- Gestión de estados
- Historial de mantenimiento
- Integración con AuthService
- Dockerización
- CI/CD Pipeline
- Monitoring y Logging
- Documentación completa
- OpenAPI/Swagger: Disponible en
/openapi/v1.json - Archivo HTTP: Incluido en
VehicleService.API.httppara testing - Arquitectura: Sigue Clean Architecture principles
- 🔐 Integración con AuthService para autenticación
- 🛡️ Autorización basada en roles
- ✅ Validación de entrada en todos los endpoints
- 🔍 Auditoría de operaciones críticas
- Unit Tests: Lógica de dominio y aplicación
- Integration Tests: APIs y base de datos
- Performance Tests: Carga y rendimiento
- Contract Tests: Interacción con otros servicios
- Fork el proyecto
- 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
- Seguir convenciones de C# y .NET
- Mantener cobertura de tests > 80%
- Documentar APIs con XML comments
- Seguir principios SOLID
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Thetander
- GitHub: @Thetander
- 🔐 AuthService: Autenticación y autorización
- 💰 EconomyService: Gestión financiera y precios
- 📊 ReportingService: Reportes y analíticas
Si tienes alguna pregunta o problema, por favor abre un issue en GitHub.
⭐ ¡No olvides darle una estrella al proyecto si te ha sido útil! ⭐