Tutorial paso a paso

Desarrollar tu primera app con Frappe paso a paso

Una guía práctica de 8 pasos para construir y deployar tu primera app empresarial sobre Frappe Framework. Sin rodeos: instalación, DocTypes, hooks, permisos y producción.

Antes de empezar: requisitos

Conocimientos previos recomendados: Python intermedio, conceptos básicos de bases de datos relacionales, experiencia con CLI de Linux/macOS. Si vienes de Django, la curva es suave; si vienes solo de frontend, será más empinada.

Sistema operativo: Linux Ubuntu 22.04 (recomendado) o macOS. En Windows usa WSL 2 con Ubuntu, no Windows nativo.

Hardware mínimo para desarrollo: 8 GB RAM, 20 GB libres en disco, CPU moderno. Para producción 2-4 GB RAM bastan en arranque.

8 pasos

Tutorial paso a paso

De cero a app deployada en producción.

1

Instala Bench y prepara tu entorno

Bench es el CLI de Frappe. Instala dependencias (Python 3.10+, Node 18+, MariaDB, Redis, wkhtmltopdf), instala bench con pip y crea un nuevo bench: `bench init frappe-bench --frappe-branch version-15`. Esto prepara una carpeta con todo el setup técnico necesario.

2

Crea un sitio local y arranca

Dentro del bench, crea un sitio: `bench new-site mi-app.localhost`. Luego arranca con `bench start`. Tu Frappe corre en http://mi-app.localhost:8000. Login con Administrator y la contraseña que pusiste al crear el sitio.

3

Genera tu app vacía

Crea una app dentro del bench: `bench new-app mi_app`. Luego instálala en tu sitio: `bench --site mi-app.localhost install-app mi_app`. Ahora tu app vive en `frappe-bench/apps/mi_app/` y está enlazada al sitio.

4

Define tu primer DocType desde la UI

Ve a la UI de Frappe Desk → Customize → DocType → Add. Define el nombre (por ejemplo `Cliente Premium`), añade campos (nombre, NIF, email, teléfono, plan), define permisos por rol y guarda. Frappe genera automáticamente la tabla en MariaDB, el formulario, la lista y la API REST.

5

Añade lógica con hooks Python

En `apps/mi_app/mi_app/cliente_premium/cliente_premium.py` puedes añadir métodos como `validate()` (se ejecuta antes de guardar), `before_save()`, `on_update()`, `before_cancel()`. También puedes añadir métodos custom que llames vía API o desde JavaScript del cliente.

6

Personaliza el frontend con JavaScript

En `apps/mi_app/mi_app/cliente_premium/cliente_premium.js` añade comportamiento del lado cliente: validaciones interactivas, esconder/mostrar campos según condiciones, llamar al servidor con `frappe.call`. Es como jQuery + helpers de Frappe.

7

Instala tu app en producción

Para deployar a producción: configura un servidor (Ubuntu 22.04 recomendado, 4 GB RAM mínimo), instala bench production setup (`bench --setup-production`), genera tu sitio production y configura SSL (Let's Encrypt). Tiempo medio: 1-2 horas para alguien con experiencia Linux.

8

Versiona y mantiene tu app

Tu app es un repositorio Git. Versiona en GitHub/GitLab. Para actualizar producción: `bench update --pull --patch`. Para añadir nuevas features sin riesgo: usa branches en tu app y bench staging para probar antes de mergear a producción.

Errores típicos al empezar con Frappe

1. Instalar en Windows nativo. Genera problemas con paths y dependencias. Usa siempre Linux o WSL.

2. No leer la documentación oficial. La doc de Frappe es buena; los tutoriales sueltos en blogs pueden estar desactualizados.

3. Customizar el core. Modificar archivos de Frappe o ERPNext directamente rompe tu sistema al actualizar. Construye SIEMPRE en tu propia app, usando hooks y override en lugar de tocar el core.

4. Olvidarse de las migraciones. `bench migrate` después de actualizar es obligatorio; saltárselo deja tu base de datos desincronizada con el código.

5. Confundir Bench con Frappe. Bench es el CLI de gestión; Frappe es el framework. Comandos `bench` operan a nivel sitio/servidor; código Python `frappe.X` opera dentro del framework.

— FAQ

Preguntas frecuentes sobre desarrollar con Frappe

Las dudas reales del developer que empieza con Frappe.

Ver todas las preguntas
¿Cuánto tiempo tarda en desarrollar mi primera app Frappe?+
Para alguien con experiencia Python: 2-3 días para una app sencilla con 3-5 DocTypes y lógica de negocio simple. 1-2 semanas para algo más completo con permisos complejos, integraciones API y dashboard custom. La curva es suave si ya conoces ERP/CRM y Python; abrupta si vienes solo de frontend o de frameworks muy distintos.
¿Necesito instalar ERPNext para desarrollar con Frappe?+
No. Frappe Framework se puede instalar standalone (sin ERPNext) y construir apps sobre él directamente. Sin embargo, si tu app va a integrarse con datos de empresa (clientes, productos, facturas), tiene sentido instalar ERPNext también para tener esos datos maestros y construir tu app encima como módulo. ERPNext es opcional pero útil.
¿Puedo desarrollar Frappe en Windows?+
Soportado parcialmente: oficialmente Frappe está pensado para Linux y macOS. En Windows lo más práctico es usar WSL 2 (Windows Subsystem for Linux) con Ubuntu 22.04 dentro. Trabajar en Windows nativo (sin WSL) es teóricamente posible pero no recomendable: muchos paquetes Python tienen problemas con paths Windows y bench asume Linux paths.
¿Dónde despliego mi app Frappe en producción?+
Tres opciones populares: 1) Frappe Cloud (oficial, fácil, ≈ 10-50 €/mes según plan); 2) VPS propio (Hetzner, Contabo, OVH, DigitalOcean) — ≈ 10-30 €/mes con setup manual; 3) Docker / Kubernetes para entornos enterprise (más complejo pero escalable). Para empezar, Frappe Cloud o un VPS Hetzner son lo más recomendable.
¿Cómo hago tests en Frappe?+
Frappe incluye un framework de testing basado en `unittest`. Crea archivos `test_*.py` en tu app y usa la clase `FrappeTestCase`. `bench --site mi-app.localhost run-tests --app mi_app` ejecuta todos los tests. Los tests pueden crear DocTypes, ejecutar métodos, validar resultados. Para tests de UI, Frappe ha empezado a integrar Playwright en versiones recientes.
¿Puedo usar TypeScript en lugar de JavaScript?+
Frappe usa principalmente JavaScript ES6+ en el frontend Desk. TypeScript no es soporte nativo en el código del lado cliente del Desk. Sin embargo, las versiones más recientes están introduciendo Vue 3 con TypeScript en algunas partes (como Frappe Builder). Para tu app puedes usar TypeScript si lo compilas a JavaScript antes de servir, pero no es el flujo natural.
¿Dónde encuentro ayuda si me atasco?+
Tres recursos principales: 1) Documentación oficial frappeframework.com (en inglés, sólida pero no exhaustiva); 2) Discuss Frappe (foro oficial muy activo, https://discuss.frappe.io/); 3) GitHub issues del repo frappe/frappe (donde el equipo y la comunidad responden). Para casos urgentes en español: comunidades en Telegram, freelance Frappe en LinkedIn o partners profesionales como CodigoNext.
Empezar · Respuesta en 24h

¿Construyendo algo serio en Frappe?

Si necesitas equipo experto para tu app Frappe (extensión ERPNext o app standalone), tenemos años de experiencia y código abierto en producción.

Demo personalizada
Sin compromiso
Equipo en España