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 porque comparten muchas ideas; si vienes solo de frontend, será más empinada al principio, aunque se aprende rápido con el tutorial.

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, sin saltarte ningún paso intermedio: instalación del bench, creación de la app, definición de doctypes, lógica de negocio en Python, interfaz de usuario y despliegue final en un servidor real de producción, con backups incluidos.

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

Son los mismos cinco tropiezos que vemos repetirse en casi todos los proyectos que empiezan con Frappe, tanto en desarrolladores que vienen de Django como en los que llegan desde el frontend puro. Ninguno es grave si lo detectas a tiempo, pero todos cuestan horas si los descubres tarde.

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: qué diferencia real hay con Django, cuánto tiempo tarda en dominarse el framework y si de verdad hace falta tocar el core alguna vez o basta con hooks y overrides bien diseñados.

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.

Sigue investigando

Si quieres profundizar antes de escribir la primera línea de código: qué es Frappe Framework, en qué se diferencia de Django, cómo contratar desarrollo si prefieres no hacerlo tú mismo y qué apps del ecosistema ya existen y evitan reinventar la rueda.

Empezar · Respuesta en 24h

¿Construyendo algo serio en Frappe?

Si necesitas equipo experto para tu app Frappe, ya sea una extensión de ERPNext o una aplicación standalone completa, tenemos años de experiencia implantando y desarrollando sobre el framework, con código abierto en producción real y soporte técnico detrás siempre.

Demo personalizada
Sin compromiso
Equipo en España