Qué es Frappe Framework
Frappe Framework es un framework full-stack open source escrito en Python (backend, ORM, jobs, REST API) y JavaScript (frontend con su propio motor de UI). Está pensado para aplicaciones empresariales con muchos modelos de datos, permisos por rol, reportes complejos y workflows. Es el framework sobre el que está construido ERPNext.
Lo que diferencia a Frappe de un framework web genérico (Django, Rails, Laravel) es que se ocupa del 80 % del plumbing que toda aplicación empresarial necesita: gestión de usuarios y roles, permisos por DocType y por campo, formularios CRUD, vistas de lista, filtros, reportes, integración con email, jobs en background, websockets, traducciones, tema configurable, API REST automática, sistema de archivos y muchas otras piezas. Tú, como desarrollador, te concentras en lo que hace única a tu aplicación: la lógica de negocio.
El concepto clave: el DocType
Frappe define cada entidad mediante un DocType: un metaobjeto que describe los campos, las validaciones, los permisos, las vistas y los reportes. A partir del DocType, Frappe genera automáticamente la tabla en MariaDB, el formulario, la lista, la API REST, la búsqueda y el sistema de permisos.
Tu controlador en Python solo añade la lógica que no es declarativa: validaciones complejas, hooks de eventos (validate, on_submit, before_save), métodos personalizados, etc.
# Ejemplo de controlador Python para un DocType "Suscripcion"
class Suscripcion(Document):
def validate(self):
if self.fecha_fin and self.fecha_fin < self.fecha_inicio:
frappe.throw("La fecha fin no puede ser anterior a la fecha inicio")
def on_submit(self):
self.crear_factura_recurrente()¿Frappe es lo mismo que ERPNext?
No. Frappe Framework es el framework genérico, similar en concepto a Django o Rails, pero pensado para aplicaciones empresariales modulares. ERPNext es una aplicación construida con Frappe que cubre un ERP completo. ERPNext es una app de Frappe, pero Frappe sirve también para construir gestores documentales, CRMs verticales o plataformas SaaS internas.
Stack técnico
| Pieza | Tecnología |
|---|---|
| Backend | Python 3.10+ |
| Base de datos | MariaDB 10.6+ (también PostgreSQL experimental) |
| Cache / Queue | Redis (cache, queue, socket pub/sub) |
| Frontend | JavaScript vanilla + sistema de UI propio (Frappe Form, ListView, Report Builder) |
| Background jobs | RQ (Redis Queue) |
| WebSockets | Socket.IO sobre Redis |
| API | REST automática + RPC para llamadas tipadas |
| Deploy | Bench CLI (basado en Honcho/Procfile) o contenedores Docker |
El frontend es la pieza que más está evolucionando. El motor clásico de formularios y listados convive con interfaces nuevas escritas en Vue y TypeScript, que son la base de los productos más recientes de Frappe Technologies. Para el desarrollo de negocio del día a día sigues trabajando con el motor declarativo, así que el cambio apenas te afecta.
Frappe vs Django: cuándo usar uno u otro
Django es un framework web genérico: ideal para blogs, e-commerce, sitios complejos, APIs y aplicaciones web a medida. Frappe está pensado específicamente para aplicaciones empresariales modulares con CRUD intensivo: ERPs, CRMs, gestores documentales, plataformas internas con muchos doctypes y permisos.
- Django: si tu proyecto se parece más a "una web con datos".
- Frappe: si se parece más a "una aplicación empresarial con muchas tablas, permisos por rol, reportes y workflows".
La curva de aprendizaje de Frappe es algo más alta que Django, pero el time-to-market en aplicaciones empresariales es muy inferior.
Cuándo elegir Frappe y cuándo buscar otra cosa
La decisión depende del tipo de proyecto, no de gustos personales: Frappe encaja de forma natural en aplicaciones de gestión con muchas fichas, roles y flujos internos, y se queda corto en productos de consumo masivo, tiendas con tráfico anónimo o interfaces muy cuidadas de cara al público.
Frappe encaja bien si...
- Estás construyendo una aplicación de gestión: un ERP, un CRM, un sistema de tickets o cualquier herramienta interna con muchas fichas y muchos roles.
- Necesitas formularios, listados, filtros y permisos funcionando en días y no en meses.
- Quieres ampliar ERPNext con módulos propios sin perder la capacidad de actualizar el núcleo.
- Trabajas cómodo con Python y MariaDB y prefieres declarar el modelo de datos antes que escribir el mismo CRUD por enésima vez.
Es mejor que mires otro framework si...
- Vas a lanzar un producto de consumo masivo: una red social, un marketplace público o un medio digital.
- Tu prioridad es una tienda online que escale por catálogo y por tráfico anónimo.
- Buscas una interfaz de última generación con renderizado en servidor y una experiencia muy cuidada de cara al público.
- Trabajas en un sector con stacks muy asentados, como banca, videojuegos o modelos de IA, donde salirte de la norma te cuesta más de lo que te aporta.
Casos donde tiene sentido usar Frappe
1. Para extender ERPNext
Una app Frappe puede engancharse a ERPNext sin tocar su código: añadir DocTypes específicos de tu sector, sobreescribir validaciones, crear reportes a medida, integrar con sistemas externos. La extensión queda en su propio repositorio Git y sobrevive a las actualizaciones de ERPNext.
2. Para construir tu aplicación empresarial propia
Si tienes que construir una aplicación de gestión interna, un CRM vertical, un gestor documental o una plataforma B2B, Frappe te ahorra escribir el plumbing (auth, permisos, formularios, reportes, API) y te deja concentrarte en la lógica única de tu negocio.
3. Para crear una aplicación SaaS multi-tenant
Frappe Cloud está construido sobre Frappe Framework. La arquitectura multi-site permite atender a miles de empresas con una sola base de código. Si quieres lanzar un SaaS empresarial vertical, Frappe es una de las bases técnicas más maduras para hacerlo en open source.
Capacidades clave que Frappe te da de fábrica
De fábrica, sin escribir una línea de más, Frappe te da un modelo de datos declarativo por DocType, controladores Python con ORM propia, un sistema de apps versionadas con Git, hooks para extender ERPNext sin tocar el core, despliegue con Bench y permisos granulares de nivel enterprise.
- Modelo de datos por DocType: define campos, validaciones, permisos y vistas sin escribir SQL ni HTML para el CRUD básico.
- Python en backend: controladores, scheduled jobs y APIs custom con la ORM de Frappe sobre MariaDB.
- App como unidad de despliegue: una app Frappe es un repo Python con sus DocTypes, controladores, reportes y assets. Se versiona con Git y se despliega con Bench.
- Hooks para extender ERPNext: sin tocar el core puedes engancharte a eventos (on_submit, validate, before_insert), añadir botones, sobreescribir vistas o sustituir métodos. Permite personalizar sin perder upgradeability.
- Deploy con Bench: el CLI gestiona instalaciones, sites, apps, migraciones, backups y producción.
- Permisos granulares: roles, permisos por DocType, por campo, por workflow. Nivel enterprise sin programar.
Errores comunes al empezar con Frappe
Casi todos los proyectos Frappe que se complican caen en los mismos cuatro fallos: forzar desarrollo a medida donde bastaba con configuración estándar, escribir SQL crudo con interpolación de strings, hacer monkey-patching del núcleo en vez de usar hooks oficiales, y elegir mal entre Frappe Cloud y autoalojarse.
- Querer hacer todo a medida cuando se podía resolver con configuración estándar de ERPNext (Custom Fields, Workflows, Notifications, Reports). Antes de tocar código, evalúa si llega.
- Escribir SQL crudo con interpolación de strings (frappe.db.sql con f-strings) en lugar de usar la ORM o filtros estructurados. Es la primera causa de inyección SQL en apps Frappe custom.
- Monkey-patchear métodos del core en lugar de usar hooks oficiales. Tu app deja de ser upgradeable.
- No usar Frappe Cloud para aplicaciones SaaS cuando es la opción más eficiente, o usarla cuando lo correcto era auto-hospedar.
Otras aplicaciones construidas sobre Frappe
ERPNext es el producto más conocido del ecosistema, pero no es el único. Frappe Technologies mantiene sobre la misma base Frappe HR para la gestión de personas, Frappe CRM para el ciclo comercial, Frappe Helpdesk para el soporte a clientes, Frappe LMS para formación y Frappe Drive para documentos.
Si estás decidiendo entre alguna de estas aplicaciones y el módulo equivalente de ERPNext, tenemos comparativas dedicadas: Frappe HR frente al módulo de recursos humanos de ERPNext, Frappe CRM frente al CRM de ERPNext y Frappe Drive como alternativa a Google Drive.
Qué curva de aprendizaje tiene Frappe
Si ya programas en Python, ser productivo con personalizaciones (campos nuevos, validaciones, hooks) te llevará entre dos y cuatro semanas. Construir aplicaciones completas con criterio propio es cuestión de dos o tres meses. Lo que más cuesta no es la sintaxis, sino cambiar el chip: describir el modelo de datos y dejar que el framework genere el resto.
La documentación oficial está en inglés, es correcta y no siempre exhaustiva, así que buena parte del conocimiento práctico vive en el foro Discuss de Frappe, en los repositorios de GitHub y en las comunidades hispanohablantes. Si prefieres un recorrido guiado, en cómo desarrollar tu primera app Frappe paso a paso tienes el camino completo, y en Frappe frente a Django encontrarás la comparativa técnica en detalle.
¿Merece la pena aprender Frappe hoy?
Depende de dónde quieras trabajar. Si te dedicas al software de gestión, la respuesta es que sí: cada vez más pymes y despachos adoptan ERPNext y necesitan a alguien que sepa extenderlo, y el ecosistema tiene tamaño justo para que existan oportunidades sin estar saturado. Si tu día a día son webs públicas, tu tiempo rinde más en otro framework.
Para una empresa el cálculo es parecido. Si ya usas ERPNext o vas a implantarlo, contar con alguien que domine Frappe (en tu equipo o en el socio que te acompaña) convierte cualquier requisito raro en un desarrollo acotado en lugar de en un bloqueo. Es justo lo que hacemos en los proyectos de implantación de ERPNext y en el desarrollo a medida sobre Frappe.
Conclusión
Frappe Framework es una de las bases técnicas open source más maduras para construir aplicaciones empresariales en Python. Si tu proyecto encaja con el perfil "muchos modelos de datos, permisos complejos, reportes, workflows", Frappe te ahorra meses de plumbing. Si solo necesitas una web pública con un par de formularios, Django es probablemente más apropiado.
En CodigoNext desarrollamos sobre Frappe desde 2014. Si tienes un proyecto en mente o quieres extender tu ERPNext con una app a medida, contáctanos y lo evaluamos.