Saltar a contenido

Curso Fitz de 0 a experto

Curso pedagógico narrativo en español. Te lleva desde la instalación hasta una app real con Postgres + ORM + Docker.

Este curso es complementario a la guía. La guía es referencia feature-por-feature; el curso es narrativo, con un proyecto que crece capítulo a capítulo.

Guía Curso
Estilo referencia narrativo
Audiencia ya empezaste con Fitz desde cero
Código ejemplos aislados un proyecto que crece
Mejor para "¿cómo se hace X?" "¿cómo aprendo Fitz?"

Los dos se complementan. El curso te enseña cómo usar las cosas en contexto; la guía te muestra el detalle exhaustivo de cada feature. Cuando un capítulo del curso introduce algo nuevo, te linkea al cap correspondiente de la guía para que tengas la referencia a mano.

Antes de empezar

Pre-requisito único: sabés programar (Python / JavaScript / TypeScript / Go / Rust / Java / cualquiera) pero nunca tocaste Fitz.

No es necesario saber Rust, Vue, FastAPI, ni nada específico — el curso explica cada concepto que aparece.

Editor requerido: VSCode. El curso muestra el LSP (autocomplete, hover, errores subrayados) desde el capítulo 3. Otros editores funcionan también pero el material asume VSCode para los screenshots ASCII.

Estado del curso

Módulo Caps Estado
M1 — Setup y primer programa 6 ✅ cerrado (C1-C6)
M2 — Tipos y funciones 7 ✅ cerrado (C1-C7)
M3 — Módulos y organización 5 ✅ cerrado (C1-C5)
M4 — HTTP first-class 5 ✅ cerrado (C1-C5)
M5 — Async, auth, real-time 4 ✅ cerrado (C1-C4)
M6 — Capstone Postgres + ORM nativo 6 ✅ cerrado (C1-C6)
M7 — Interop Python 3 ✅ cerrado (C1-C3)
M8 — Producción y deployment 5 ✅ cerrado (C1-C5)

Total: 8 módulos, 41 capítulos. Cada módulo es unidad releasable independiente — no hace falta esperar que esté todo para empezar. M7 (Interop Python) se sumó después de cerrar el plan original M1-M7 para cubrir el ecosistema Python como puente; el M8 anterior (Producción y deployment) se renumeró.

M1 — Setup y primer programa

Requisito explícito: VSCode + extensión Fitz instalada.

Entregable del módulo: tenés Fitz funcionando en tu máquina, con la extensión VSCode activa y un proyecto skeleton del que podés escribir, correr, formatear, debugear, y compilar a binario standalone para distribuir (fitz build).

M2 — Tipos y funciones

Requisito explícito: M1 completo.

Entregable del módulo: podés modelar tu dominio con tipos custom, escribir fns que procesan colecciones, manejar errores con Result+match+?, y testear todo con fitz test. Es el toolkit base del lenguaje.

M3 — Módulos y organización

Requisito explícito: M2 completo.

Entregable del módulo: podés partir tu proyecto en módulos, exponer una lib, consumir deps externas (path o git), y organizar proyectos serios (monorepo, layered architecture, shared libs).

M4 — HTTP first-class

Requisito explícito: M3 completo.

Entregable del módulo: podés escribir una API completa production-ready en Fitz — handlers tipados, validación automática del input, errores ricos con status code correcto, middleware reusable, CORS configurado y docs autogenerados. Sin ningún pip install, npm install, ni pom.xml.

M5 — Async, auth, real-time

Requisito explícito: M4 completo.

Entregable del módulo: tenés todas las features modernas de producción integradas en el lenguaje. Concurrencia real con N workers tokio multi-thread, login + JWT + Argon2id sin dependencias externas, canales WebSocket tipados con AsyncAPI 3.0 auto-generado y heartbeat built-in, tareas programadas con tz IANA + retry con backoff + persistencia opcional sobre Postgres — todo built-in. Sin Celery, sin Redis para infra básica, sin passport.js, sin socket.io. Un binario standalone deployable.

M6 — Capstone Postgres + ORM nativo

Requisito explícito: M5 completo.

Entregable del módulo: una app real production-ready que integra TODO lo del curso — auth con JWT + Argon2id, ORM con relations sobre Postgres, WebSocket para notificaciones, cron jobs con persistencia, OpenAPI + AsyncAPI auto, todo en un binario standalone de ~30 MB con su docker-compose.yml. Sin pip install, sin npm install, sin requirements.txt, sin package.json — deploy = un binario.

M7 — Interop Python

Requisitos explícitos: M6 cerrado (vas a comparar contra el ORM nativo en el cap C3), Python 3.10+ instalado, y un binario fitz compilado con cargo build --release --features python (el default standalone sigue sin libpython).

Entregable del módulo: un servicio HTTP Fitz que combina handlers tipados nativos con calls a pandas para análisis de datos y SQLAlchemy para acceso a DB legacy — el puente al ecosistema Python sin renunciar a la identidad de Fitz (HTTP nativo, tipos, deployment standalone). Cierra el círculo con M6: matriz de decisión honesta para elegir ORM nativo Fitz vs SQLAlchemy según el contexto.

M8 — Producción y deployment

Requisito explícito: M6 cerrado (tenés una app real para deployar) o M7 cerrado (si tu app usa interop Python — el cap M8.C5 te muestra cómo distribuir esos casos sin Python instalado en destino).

Entregable del módulo: tu app de M6 (puramente Fitz) o M7 (con interop Python) corriendo en producción real con fitz docker init + monitoring (logs + spans + métricas) + K8s rolling deploys + healthchecks + SIGTERM drain. Para apps con interop, el cap C5 agrega fitz build --bundle-python --bundle-pip para empaquetar CPython + tus paquetes pip adentro del binario — deploy = un solo archivo, sin Python instalado en el destino. 12-factor compliance por default sin instalar nada extra.

Cómo está pensado el curso

  • Un proyecto que crece: arrancás con un "hola mundo" y al final del M6 tenés una app CRUD completa con Postgres + auth + Docker.
  • Cada capítulo es corto (5-15 min de lectura) y tiene su entregable commiteable en examples/curso/.
  • Validación al final de cada cap: comandos exactos para confirmar que lo que hiciste funciona.
  • Cross-link a la guía cuando el cap introduce algo nuevo.

Si querés saltar a algo específico

  • Ya sabés Fitz, querés referencia: andá a guide.md.
  • Querés ver código real de proyectos: boilerplates (9 boilerplates Dockerizados, desde CLI tools hasta apps fullstack con Postgres).
  • Querés el detalle de ORM y DB: DB y ORM.