Skip to content

syntaxiscorp/cursoia-seigi

Repository files navigation

🚀 DevSecOpsDemo API

API RESTful minimalista construida con .NET 10 que demuestra las mejores prácticas de desarrollo, seguridad y operaciones (DevSecOps).

CI/CD Pipeline CodeQL .NET xUnit Swagger License

📋 Características

  • Minimal API con .NET 10
  • Documentación OpenAPI/Swagger interactiva
  • Pruebas de Integración con WebApplicationFactory
  • Clean Architecture y SOLID principles
  • Type-Safe con records y nullable reference types
  • Cobertura de pruebas ~90%

🏗️ Arquitectura

DevSecOpsDemo/
├── DevSecOpsDemo.Api/          # API principal
│   ├── Models/                 # DTOs y modelos de datos
│   └── Program.cs             # Configuración y endpoints
│
├── DevSecOpsDemo.Tests/        # Pruebas de integración
│   ├── Endpoints/             # Tests por endpoint
│   └── Infrastructure/        # Utilidades de testing
│
├── ARQUITECTURA.md            # Documentación técnica completa
└── DevSecOpsDemo.sln          # Solución Visual Studio

🚀 Quick Start

Requisitos Previos

  • .NET 10 SDK
  • Editor de código (Visual Studio, VS Code, Rider)

Instalación y Ejecución

# Clonar el repositorio
git clone https://github.com/syntaxiscorp/cursoia-seigi.git
cd cursoia-seigi

# Restaurar dependencias
dotnet restore

# Ejecutar la API
dotnet run --project DevSecOpsDemo.Api

# La API estará disponible en: http://localhost:5003

Ejecutar Pruebas

# Ejecutar todas las pruebas
dotnet test

# Ejecutar con cobertura
dotnet test /p:CollectCoverage=true

📚 Documentación

Swagger UI (Recomendado)

Accede a la documentación interactiva en: http://localhost:5003/swagger

Especificación OpenAPI

JSON Schema: http://localhost:5003/swagger/v1/swagger.json

Documentación Técnica

Lee la Documentación de Arquitectura para detalles completos sobre patrones, pruebas y mejores prácticas.

🌐 Endpoints

Método Ruta Descripción
GET /api/health Health check del servicio
POST /api/suma Suma de dos números enteros

Ejemplo: Health Check

curl http://localhost:5003/api/health

Respuesta:

{
  "status": "ok"
}

Ejemplo: Suma

curl -X POST http://localhost:5003/api/suma \
  -H "Content-Type: application/json" \
  -d '{"a": 5, "b": 3}'

Respuesta:

{
  "resultado": 8
}

🧪 Testing

El proyecto incluye 14 pruebas de integración que cubren:

  • ✅ Códigos de estado HTTP correctos
  • ✅ Validación de respuestas JSON
  • ✅ Manejo de errores (body nulo, JSON inválido)
  • ✅ Content-Type headers
  • ✅ Casos edge (overflow, números negativos)

Cobertura: ~90%

🛠️ Tecnologías

  • Framework: .NET 10
  • API: ASP.NET Core Minimal APIs
  • Documentación: Swashbuckle.AspNetCore (Swagger/OpenAPI)
  • Testing: xUnit + WebApplicationFactory
  • Cobertura: coverlet.collector

📦 Stack Técnico

Capa Tecnología
Presentation Minimal API Endpoints
Business Logic C# Records & Methods
Data Models Immutable Records
Testing xUnit + Integration Tests
API Docs OpenAPI 3.0 / Swagger UI

🔒 Seguridad

Warning

Esta API es para propósitos demostrativos y no incluye autenticación ni autorización en su versión actual.

Para producción, se recomienda implementar:

  • Autenticación JWT
  • Rate Limiting
  • CORS policies
  • HTTPS obligatorio
  • Validación de inputs

📈 Roadmap

  • Autenticación y autorización
  • Persistencia con Entity Framework Core
  • Dockerización
  • CI/CD con GitHub Actions
  • Deploy a Kubernetes
  • Monitoreo con Application Insights
  • Más operaciones matemáticas

🤝 Contribución

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📄 Licencia

Este proyecto es de código abierto para propósitos educativos.

👤 Autor

DevSecOps Team
Email: team@devsecops.demo

🌟 Agradecimientos

  • Comunidad .NET
  • Documentación de Microsoft
  • xUnit contributors

Si te ha gustado este proyecto, dale una estrella en GitHub!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published