Backend Developer Jr route: learn for free from scratch in 6 weeks
De cero a resolver tickets sencillos de backend en un equipo real, con Node.js, TypeScript, Express y PostgreSQL. With free videos in Spanish, plain-words explanations, hands-on challenges, quizzes and review by a teacher.
- Level: Beginner
- 6 weeks
- 61 challenges
- 27 free videos
- 48 questions
- Certificate at the end
Route content is in Spanish.
Week-by-week syllabus
Week 1 · JavaScript/TypeScript esencial + Git
JavaScript y TypeScript son los idiomas con los que le das órdenes a la computadora; TypeScript añade etiquetas a cada caja ("aquí solo van números") y te avisa del error antes de ejecutar, como un corrector ortográfico. Git es el cuaderno de versiones de tu proyecto: cada commit es una foto, y las ramas son borradores paralelos que luego fusionas.
Mini ejemplo: 0.1 + 0.2 da 0.30000000000000004; por eso S/ 10.50 se guarda como 1050 céntimos.
Error típico: guardar dinero como decimal (float) y descubrir diferencias de centavos al sumar.
Week 1 topics
const/let, tipos primitivos,undefinedvsnull,?.y??- Funciones flecha, parámetros por defecto, destructuring y spread
- Arrays:
map,filter,find,reduce,sort,some,every - Por qué el dinero no se guarda como
numberdecimal (0.1 + 0.2): trabajar en céntimos - Promesas,
async/await,try/catch,Promise.all - TypeScript: tipos,
interface/type, uniones literales ('ABONO' | 'CARGO'), genéricos básicos,strict: true - Módulos (
import/export),package.json, correr TypeScript contsx - Git:
clone,branch,commit,push,pull, Pull Request, resolver un conflicto simple
Cursos: "TypeScript: Tu completa guía y manual de mano" + "GIT+GitHub" (Fernando Herrera) + videos gratis de JavaScript de MoureDev.
Recommended free videos
10 challenges · 8-question quiz
Week 2 · Node.js, HTTP, REST y Express
Un servidor es la cocina de un restaurante: recibe pedidos, los prepara y responde. HTTP es cómo se hacen los pedidos (el método es el verbo: GET pedir, POST crear, PUT/PATCH cambiar, DELETE borrar) y los códigos de estado son el aviso de la cocina: 200 "listo", 201 "creado", 404 "no existe", 500 "se me quemó la cocina". REST es el menú: recursos en plural (/pedidos). Express arma todo con middlewares, una cadena de estaciones por donde pasa cada pedido.
Mini ejemplo: app.get('/pedidos/:id', (req, res) => res.json({ id: req.params.id })).
Error típico: olvidar app.use(express.json()) y encontrarte con req.body en undefined.
Week 2 topics
- Qué es Node.js, el event loop a nivel conceptual,
npm,package.jsony scripts (dev,build,start) - HTTP: métodos, rutas, headers, cuerpo JSON y códigos de estado (200, 201, 204, 400, 404, 500)
- REST: recursos, sustantivos en plural, métodos idempotentes, filtros y paginación con query params
- Express:
app,Router,req.params,req.query,req.body,res.status().json() - Middlewares: qué son, orden de ejecución,
next(),express.json() - Probar la API con Bruno/Postman y
curl
Cursos: "NodeJS: De cero a experto" (Fernando Herrera), secciones de fundamentos de Node, TypeScript en Node y REST server con Express + clases 1 y 2 del curso gratuito de midudev.
10 challenges · 8-question quiz
Week 3 · Validación, manejo de errores y arquitectura en capas
Validar es ser el portero de la discoteca: nadie entra sin que revises su DNI, y no te fías de lo que dice el celular del cliente. Manejar errores es que, si la cocina se quema, el mesero avise con amabilidad "hoy no hay ceviche" en vez de salir corriendo. Las capas son las áreas del restaurante: el mesero (route/controller) toma el pedido, el cocinero (service) aplica las reglas y el almacén (repository) guarda y busca.
Mini ejemplo: Zod revisa { monto: z.number().positive() } antes de que el pedido llegue al service.
Error típico: poner reglas de negocio y consultas a la base dentro del controller; luego nadie sabe dónde arreglar nada.
Week 3 topics
- Nunca confiar en el cliente: validar
body,paramsyquerycon Zod (safeParse, mensajes,z.infer) - Diferencia entre error de validación (400), no encontrado (404), conflicto (409) y regla de negocio (422)
- Clases de error propias (
AppError,NotFoundError,BusinessError) y un middleware de errores centralizado - Errores en funciones
async(Express 5 los captura; en Express 4 hace falta un wrapper) - Arquitectura en capas: routes → controllers → services → repositories
- Inyección de dependencias por constructor, interfaces de repositorio
- Formato de error consistente en toda la API
Cursos: "NodeJS: De cero a experto" (Fernando Herrera), secciones de arquitectura limpia, DTOs, patrón repositorio y manejo de errores + clases 3 y 4 del curso gratuito de midudev.
Recommended free videos
10 challenges · 8-question quiz
Week 4 · Base de datos con PostgreSQL y Prisma
Una base de datos es una biblioteca muy ordenada: cada tabla es un estante, cada fila una ficha, la llave primaria es el número de ficha y la llave foránea es la nota "este libro pertenece al socio 12". PostgreSQL es la biblioteca; Prisma te deja pedir libros en TypeScript sin escribir SQL a mano. Una transacción es "todo o nada": si el pago descuenta de una cuenta pero falla al abonar a la otra, se deshace todo.
Mini ejemplo: prisma.movimiento.findMany({ where: { cuentaId: 1 }, take: 20 }).
Error típico: consultar dentro de un bucle (N+1): 1 consulta para la lista y 1 por cada ítem; usa include o un JOIN.
Week 4 topics
- Modelo relacional: tablas, llave primaria, llave foránea,
UNIQUE, índices - SQL esencial:
SELECT,WHERE,ORDER BY,LIMIT,JOIN,LEFT JOIN,GROUP BY,SUM,COUNT - Tipos para dinero:
NUMERIC(12,2)/Decimal, nuncaFLOAT - PostgreSQL en un contenedor de Docker (un solo comando) y cliente DBeaver
- Prisma:
schema.prisma, modelos, enums, relaciones,migrate dev, Prisma Client,seed, Prisma Studio - Consultas con Prisma:
findMany,where,include,select,orderBy,skip/take,count - Transacciones (
$transaction) y el problema N+1
Cursos: "SQL de cero: Tu guía práctica con PostgreSQL" (primeras secciones) + sección de PostgreSQL con Prisma de "NodeJS: De cero a experto" (Fernando Herrera).
10 challenges · 8-question quiz
Week 5 · Autenticación JWT, seguridad básica, variables de entorno y Docker
Autenticación es mostrar tu DNI para probar quién eres; autorización es lo que ese DNI te deja hacer (entrar a la zona VIP o no). El JWT es la pulsera del evento: te la ponen una vez y la enseñas en cada puerta sin volver a la entrada. La contraseña nunca se guarda: se guarda su "huella" (hash con bcrypt), como guardar la huella digital y no el dedo. Las variables de entorno son la caja fuerte aparte del código, y Docker es el contenedor sellado que funciona igual en cualquier cocina.
Mini ejemplo: GET /cuentas/5 con el token de Ana debe responder 403 si la cuenta 5 es de Luis.
Error típico: subir el archivo .env a Git con la clave de la base; quien lo vea puede entrar a todo.
Week 5 topics
- Contraseñas: hash con bcrypt (nunca cifrado reversible ni texto plano)
- JWT: estructura (header, payload, firma), expiración, middleware
requireAuth - Autenticación vs autorización; roles (
CLIENTE,ADMIN); acceso solo a recursos propios - OWASP básico: control de acceso roto (IDOR), inyección SQL, exposición de datos sensibles, fuerza bruta
helmet, CORS con lista blanca, rate limiting, límite de tamaño del body- Variables de entorno:
.env,.env.example, validarlas al arrancar, no subir secretos a Git - Docker: imagen, contenedor, volumen,
Dockerfilemulti-stage,docker composecon API + PostgreSQL
Cursos: sección de autenticación con JWT de "NodeJS: De cero a experto" + secciones básicas de "Docker - Guía práctica de uso para desarrolladores" (Fernando Herrera).
10 challenges · 8-question quiz
Week 6 · Testing, logs y simulación de trabajo real
Un test es el inspector de calidad de una fábrica de pan: revisa cada lote igual, siempre, antes de que salga. Los logs son el diario de a bordo del servidor: si algo falla a las 3 a. m., ahí está lo que pasó. Leer un stack trace es seguir las huellas hasta la línea culpable. Y trabajar en equipo es dejar la cocina limpia: PRs pequeños y claros.
Mini ejemplo: un test de service prueba "saldo insuficiente lanza error" con un repositorio falso, sin base de datos real.
Error típico: loguear datos sensibles (contraseñas, tokens, DNI); con pino se ocultan con redact.
Week 6 topics
- Tests unitarios con Vitest (o Jest, si el equipo lo usa):
describe,it,expect, Arrange / Act / Assert - Probar services con repositorios fake y
vi.fn()para mocks y spies - Tests de integración con Supertest contra la app real y una base de pruebas en Docker
- Cobertura: qué mide y qué no
- Logs estructurados con pino: niveles,
requestId, ocultar datos sensibles - Leer un stack trace de Node/TypeScript y un error de Prisma; debugger de VS Code
- Buenas prácticas de PR, cómo recibir y responder un code review
Cursos: sección de testing de "NodeJS: De cero a experto" (Fernando Herrera): pruebas unitarias, mocks, spies y pruebas de integración.
11 challenges · 8-question quiz
Portfolio projects
Cuando buscas tu primer trabajo, casi nadie te pide un título: te piden ver código. Tener proyectos propios en GitHub demuestra que sabes construir cosas de verdad y le da a la empresa algo concreto de qué hablar contigo en la entrevista.
1. API de tu torneo de videojuegos
- Qué construyes: una API para organizar un torneo (de FIFA, Valorant o el juego que te guste): registrar equipos y jugadores, crear partidas, cargar resultados y consultar la tabla de posiciones.
- Qué practicas: endpoints REST, validación de datos, manejo de errores, base de datos con tablas relacionadas y tests (semanas 2 a 6)
- Súbele el nivel: genera las llaves de eliminación directa automáticamente según los resultados.
2. API de playlists
- Qué construyes: una API tipo Spotify donde cada usuario se registra, inicia sesión, crea playlists y agrega o quita canciones; solo el dueño puede editar sus playlists.
- Qué practicas: JavaScript y TypeScript, arquitectura en capas, PostgreSQL con Prisma, autenticación con JWT y variables de entorno (semanas 1 a 5)
- Súbele el nivel: empaqueta todo con Docker para que cualquiera lo levante con un solo comando.
3. Bot de Discord con API propia
- Qué construyes: un bot para tu servidor de Discord que responde comandos (por ejemplo, anotar puntos de un juego o guardar recordatorios) y que guarda y lee esos datos a través de una API hecha por ti.
- Qué practicas: pedidos HTTP entre dos programas, base de datos, variables de entorno para guardar el token del bot y logs para saber qué pasa (semanas 2 a 6)
- Súbele el nivel: agrega un ranking semanal que el bot publique solo cada domingo.
Backend Developer Jr glossary in plain words
| Palabra | Qué significa |
|---|---|
| Servidor | Un programa que espera pedidos y los responde, como la cocina de un restaurante que prepara lo que piden las mesas. |
| API | El conjunto de pedidos que un programa acepta y cómo hacerlos, como el menú de un restaurante. |
| Endpoint | Una dirección concreta de la API para un pedido específico, como un plato puntual del menú (por ejemplo /usuarios). |
| HTTP | El idioma que usan el navegador y el servidor para pedirse y enviarse cosas, como las reglas para hacer un pedido en la caja. |
| Código de estado | Un número que resume cómo salió un pedido, como un semáforo: 200 es "todo bien" y 404 es "no encontrado". |
| JSON | Un formato de texto para ordenar datos en pares nombre-valor, como una ficha con "nombre: Ana, edad: 15". |
| Base de datos | Un lugar donde los datos se guardan de forma permanente y ordenada, como una biblioteca con fichas para cada libro. |
| SQL | El idioma para pedirle cosas a una base de datos, como pedirle a la bibliotecaria "dame todos los libros de terror". |
| ORM | Un traductor que te deja hablar con la base de datos usando JavaScript en lugar de SQL; en esta ruta es Prisma. |
| Middleware | Un paso intermedio que revisa cada pedido antes de que llegue a su destino, como el guardia en la puerta de un edificio. |
| Validación | Revisar que los datos recibidos sean correctos antes de usarlos, como comprobar que un formulario no tenga el correo vacío. |
| Autenticación | Comprobar quién es el usuario, como mostrar tu identificación al entrar a un lugar. |
| Token (JWT) | Un pase digital que demuestra que ya iniciaste sesión, como la pulsera de un concierto que te deja entrar y salir. |
| Variable de entorno | Un dato secreto o de configuración guardado fuera del código, como la clave del wifi anotada aparte y no pegada en la puerta. |
| Docker | Una herramienta que empaqueta tu app con todo lo que necesita, como una lonchera que lleva la comida y los cubiertos juntos. |
| Git | Un sistema que guarda cada versión de tu código, como los puntos de guardado de un videojuego. |
| Test | Un pequeño programa que revisa automáticamente que tu código funcione, como un control de calidad en una fábrica. |
| Log | Un mensaje que el servidor anota sobre lo que va pasando, como el diario de a bordo de un barco. |
Ready to start?
Free, no card and no prior experience. Sign in with Google or without an account.
Start Backend Developer Jr for free