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 declarativo). Está pensado específicamente para construir aplicaciones empresariales con muchos modelos de datos, permisos por rol, reportes complejos y workflows. Es el framework sobre el que está construido ERPNext, y el que usa Frappe Technologies para Frappe Cloud, su plataforma SaaS multi-tenant.
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.
****`python
# 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 específicamente para aplicaciones empresariales modulares. ERPNext es una aplicación construida con Frappe que cubre un ERP completo. Igual que Django sirve para construir cualquier web pero el blog que construyas con Django no es Django, ERPNext es una app de Frappe, pero Frappe sirve para construir muchas otras aplicaciones (gestores documentales, CRMs verticales, 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 |
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.
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
- **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
- **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.
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](/contacto) y lo evaluamos.