- Anderson Fabián García Nieto
- Daniel Eduardo Useche Pinilla
Que les sea de utilidad. El semillero siempre estará disponible para todo lo que deseen aprender, aportar y mejorar.
¡Saluditosss! 👋 (lo que me costó conseguir el emoji, Dios mio JAJAJA)
Este repositorio no es solo una API de recetas: es un mini-curso práctico para aprender, construyendo, cómo funciona una API REST — qué es un endpoint, cómo viaja una petición HTTP, cómo se estructura un backend en capas, y buenas prácticas de seguridad, pruebas y despliegue con Docker.
Está pensado para que hagas fork de este repositorio y lo desarrolles
tú mismo, nivel por nivel, con una API de Recetas (Recipe) como caso de
estudio: algunos endpoints ya están implementados como ejemplo guiado, y
otros son esqueletos (TODO) que tú completas — la dificultad sube
progresivamente, desde solo leer teoría hasta construir un recurso
completo desde cero.
Al terminar el curso vas a poder:
- Explicar qué es una API, un endpoint, y cómo funciona el protocolo HTTP (verbos, status codes, headers, JSON).
- Construir un CRUD completo con Spring Boot + MongoDB, respetando una arquitectura en capas (Controller → Service → Repository → DTO).
- Escribir pruebas unitarias con JUnit 5 y Mockito, y entender qué mide la cobertura de código.
- Aplicar prácticas básicas de seguridad: variables de entorno, validación de entrada, manejo centralizado de errores, CORS.
- Implementar paginación y rate limiting.
- Levantar el proyecto completo (API + base de datos + frontend de referencia) con Docker.
Si por algún motivo no saben usar Git, próximamente estaremos liberando otro minicurso.
# 1. Haz fork de este repositorio en GitHub, luego clónalo
git clone https://github.com/<tu-usuario>/API-de-Gestion-de-Recetas-DOSW-Company
cd API-de-Gestion-de-Recetas-DOSW-Company
# 2. Copia las variables de entorno de ejemplo
cp .env.example .env
# 3. Levanta todo (API + MongoDB + panel de avance) con Docker
docker compose up --buildLuego abre:
- Swagger UI (documentación interactiva de la API):
http://localhost:8080/swagger-ui.html - Panel de avance (frontend de referencia, ver qué endpoints ya
funcionan):
http://localhost:3000
Así se ven una vez levantados (capturas reales de este proyecto, con el nivel 1 ya resuelto como ejemplo guiado, de nada):
|
Panel de avance ( |
Swagger UI ( |
¿Prefieres correrlo sin Docker, o usar MongoDB Atlas en vez del Mongo local? Revisa la guía completa del nivel 1.
El curso está organizado en 10 niveles, de dificultad creciente. Empieza por el índice completo del curso — ahí está el detalle de cada uno, con teoría, pistas de implementación y referencias exactas a los archivos que debes tocar.
| # | Nivel | Dificultad |
|---|---|---|
| 0 | Teoría de APIs | 🟢 Solo lectura |
| 1 | Puesta en marcha y buenas prácticas | 🟢 Muy fácil |
| 2 | Tu primer endpoint | 🟢 Fácil |
| 3 | CRUD completo | 🟡 Media |
| 4 | Búsquedas y filtros | 🟡 Media |
| 5 | Pruebas unitarias propias | 🟡 Media |
| 6 | Seguridad básica | 🟠 Media-alta |
| 7 | Paginación | 🟠 Media-alta |
| 8 | Rate limiting | 🔴 Alta |
| 9 | Proyecto final: un recurso nuevo desde cero | 🔴 Alta |
Cada nivel tiene un workflow de GitHub Actions en
.github/workflows/ que corre automáticamente al
hacer push a cualquier rama de tu fork (y en cada Pull Request). No
necesitas configurar nada: solo entra a la pestaña Actions de tu
repositorio en GitHub y revisa qué workflows quedan en verde ✅.
Los workflows son acumulativos (el de nivel 4 vuelve a correr las pruebas
de los niveles 1-3) para detectar si algo que ya funcionaba se rompió con
cambios nuevos. Además, docker-build.yml valida que las imágenes de la
API y el frontend construyan sin errores.
src/main/java/.../controller/ Endpoints REST (capa Controller)
src/main/java/.../service/ Lógica de negocio (capa Service)
src/main/java/.../repository/ Acceso a datos con Spring Data (capa Repository)
src/main/java/.../model/ Entidades de persistencia (Recipe, Chef, ...)
src/main/java/.../dto/ Contratos públicos de la API (DTOs)
src/main/java/.../comment/ Paquete del proyecto final (nivel 9)
src/test/java/... Pruebas unitarias (algunas ya dadas, otras las escribes tú)
docs/curso/ El temario completo, un nivel por carpeta
docs/DOCKER.md Guía paso a paso de Docker
frontend/ Panel de avance (HTML/CSS/JS plano, sin build)
.github/workflows/ Un Action por nivel + validación de Docker
compose.yaml Orquesta API + MongoDB + frontend
¿Tengo que hacer los niveles en orden? Sí. Cada nivel asume que el anterior está implementado (los workflows también son acumulativos), y los niveles altos (paginación, rate limiting, proyecto final) reutilizan patrones de los niveles previos.
¿Puedo trabajar en una rama por nivel? Sí, y de hecho es una buena práctica: te deja ver en la pestaña Actions, por rama, exactamente en qué nivel vas. Los workflows corren en cualquier rama.
Un test falla y no entiendo por qué.
Lee el mensaje de error del workflow en la pestaña Actions — casi siempre
apunta directo al assert que falló. Revisa también los comentarios
TODO nivelN en el archivo correspondiente: traen pistas específicas.
Si todo falla, pregúntale a tu profe, a la IA y, si no, mándanos un correo. (No creo que respondamos, pero vale la pena intentarlo XD).
Espero no este haciendo esto a ultima hora, si es asi hay una version resuelta por ahí (JAJA NO, NO ES VERDAD)*
Este curso está construido sobre un proyecto real hecho para la materia
DOSW (Desarrollo y Operaciones de Software): una API de gestión de recetas
de un programa de cocina, con tres tipos de "chef" (Contestant, Judge,
Viewer). El diseño original (diagramas UML, capturas del Swagger
funcionando) está en docs/uml/ y docs/images/
como referencia histórica de cómo se ve la API una vez completamente
implementada, este API desarrollada por Anderson Fabian Garcia Nieto y posteriormente adaptada al curso por mi Daniel Eduardo Useche Pinilla, saludos jaja.

