Plantilla de Backend para la App CRM
REST API — Guía de Esquema, API y AI
Un esquema de backend de REST API CRM listo para producción y un Kit de Inicio en Back4app: Contacto, Empresa, Negocio, Actividad, etapas del pipeline, diagrama ER, diccionario de datos, esquema JSON, playground de API, y un prompt de Agente de AI con un clic para desplegar en minutos.
Puntos Clave
En esta página obtienes un esquema de CRM listo para producción, un prompt de AI con un clic, y código REST API paso a paso — para que puedas lanzar una app CRM sin construir el backend.
- Despliega en minutos — Pega el aviso del Agente de IA y obtén una aplicación en funcionamiento con contactos, empresas, ofertas y pipeline.
- Seguro por defecto — ACLs y acceso basado en roles para que los usuarios vean solo sus ofertas y datos asignados.
- REST API-SDK nativo — Objetos tipados, async/await, fijación offline y Live Queries para actualizaciones de pipeline.
- REST + GraphQL — Ambas APIs generadas automáticamente; filtra ofertas por etapa, lista actividades por relacionado con.
- Cinco clases — _Usuario (incorporado), Empresa, Contacto, Oferta (pipeline), Actividad (tareas/eventos).
¿Qué es la plantilla Backend CRM de REST API?
Un backend CRM primero REST en Back4app: GET/POST/PUT/DELETE estándar en /classes/Contact, /classes/Deal, y endpoints relacionados. Utiliza X-Parse-Session-Token para autenticación y where/order para consultas de pipeline. Integra desde cualquier stack — móvil, web, o del lado del servidor — con códigos de estado claros y cargas útiles JSON. No se requiere GraphQL ni SDK.
Mejor para:
Descripción general
Un REST API para CRM: GET /classes/Deal, POST /classes/Contact, PUT /classes/Deal/:id, y así sucesivamente. Back4app genera estos endpoints a partir del esquema; envías X-Parse-Session-Token para autenticación y usas where y order para consultas de pipeline y listas.
Descripción general
Características principales del CRM
Backend de CRM REST API: endpoints para Contacto, Empresa, Negocio y Actividad con encabezados de autenticación y códigos de estado. Gestión de pipeline y ACLs listos para usar.
Gestión de contactos
Almacena y gestiona contactos con nombre, correo electrónico, teléfono, empresa y notas. Ideal para aplicaciones REST API.
Gestión de empresas
Rastrea empresas con nombre, sitio web, industria y dirección. Enlaces a contactos y ofertas.
Tubería de ofertas
Tubería de ventas con etapas, monto, fecha de cierre esperada y asignación. Construido para backends de REST API.
Seguimiento de actividades
Registra llamadas, correos electrónicos, reuniones y notas vinculadas a contactos y negocios. Funciona con el SDK de REST API.
Usuario y permisos
Modelo de usuario integrado y punteros para propiedad y asignación. ACLs listos para usar para REST API.
Diagrama ER
Diagrama de entidad-relación para el modelo de datos de la aplicación CRM REST API.
Ver fuente del diagrama
erDiagram
_User {
String objectId PK
String username
String email
String password
Date createdAt
Date updatedAt
}
Company {
String objectId PK
String name
String website
String industry
String address
String notes
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Contact {
String objectId PK
String name
String email
String phone
Pointer company FK
String notes
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Deal {
String objectId PK
String title
Number amount
String stage
Pointer contact FK
Pointer company FK
Date expectedCloseDate
String notes
Pointer assignedTo FK
Date createdAt
Date updatedAt
}
Activity {
String objectId PK
String type
String subject
String description
Date dueDate
Date completedAt
Pointer relatedTo FK
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Company ||--o{ Contact : "has"
Company ||--o{ Deal : "has"
Contact ||--o{ Deal : "has"
_User ||--o{ Deal : "assignedTo"
_User ||--o{ Activity : "createdBy"
Contact ||--o{ Activity : "relatedTo"
Deal ||--o{ Activity : "relatedTo"
_User ||--o{ Company : "createdBy"
_User ||--o{ Contact : "createdBy"
Flujo de integración
Secuencia de Auth-to-CRUD: cómo tu aplicación REST API se comunica con Back4app — iniciar sesión, luego consultar contactos y negocios, actualizar el pipeline.
Ver fuente del diagrama
sequenceDiagram
participant User
participant Client as REST Client
participant Back4app as Back4app Cloud
User->>Client: Login
Client->>Back4app: POST /login (username, password)
Back4app-->>Client: sessionToken
Client-->>User: Logged in
User->>Client: Load deals and contacts
Client->>Back4app: GET /classes/Deal?where={"stage":"qualified"}
Back4app-->>Client: results
Client-->>User: Show pipeline
User->>Client: Create deal or contact
Client->>Back4app: POST /classes/Deal (X-Parse-Session-Token)
Back4app-->>Client: objectId, createdAt
Client-->>User: Updated listDiccionario de datos
Referencia completa de campos para cada clase en el esquema.
Contact
| Campo | Tipo | Descripción | Requerido |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | automático |
| name | String | Full name of the contact | |
| String | Email address | — | |
| phone | String | Phone number | — |
| company | Pointer<Company> | Company this contact belongs to | — |
| notes | String | Free-form notes | — |
| createdBy | Pointer<_User> | User who created this contact | — |
| createdAt | Date | Auto-generated creation timestamp | automático |
| updatedAt | Date | Auto-generated last-update timestamp | automático |
Company
| Campo | Tipo | Descripción | Requerido |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | automático |
| name | String | Company name | |
| website | String | Company website URL | — |
| industry | String | Industry or sector | — |
| address | String | Physical or mailing address | — |
| notes | String | Free-form notes | — |
| createdBy | Pointer<_User> | User who created this company | — |
| createdAt | Date | Auto-generated creation timestamp | automático |
| updatedAt | Date | Auto-generated last-update timestamp | automático |
Deal
| Campo | Tipo | Descripción | Requerido |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | automático |
| title | String | Deal title or name | |
| amount | Number | Deal value or amount | — |
| stage | String | Pipeline stage (e.g. lead, qualified, proposal, won, lost) | — |
| contact | Pointer<Contact> | Primary contact for this deal | — |
| company | Pointer<Company> | Company associated with this deal | — |
| expectedCloseDate | Date | Expected close date | — |
| notes | String | Free-form notes | — |
| assignedTo | Pointer<_User> | User assigned to this deal | — |
| createdAt | Date | Auto-generated creation timestamp | automático |
| updatedAt | Date | Auto-generated last-update timestamp | automático |
Activity
| Campo | Tipo | Descripción | Requerido |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | automático |
| type | String | Activity type (call, email, meeting, note) | — |
| subject | String | Subject or title | — |
| description | String | Description or body | — |
| dueDate | Date | Due date | — |
| completedAt | Date | When the activity was completed | — |
| relatedTo | Pointer | Pointer to Contact or Deal | — |
| createdBy | Pointer<_User> | User who created this activity | — |
| createdAt | Date | Auto-generated creation timestamp | automático |
| updatedAt | Date | Auto-generated last-update timestamp | automático |
_User
| Campo | Tipo | Descripción | Requerido |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | automático |
| username | String | Login username | |
| String | Email address | ||
| password | String | Hashed password (write-only) | |
| createdAt | Date | Auto-generated creation timestamp | automático |
| updatedAt | Date | Auto-generated last-update timestamp | automático |
Esquema (JSON)
Definición de esquema JSON en bruto — copia y usa en tu aplicación Back4app o importa a través de la API.
{
"classes": [
{
"className": "Contact",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"name": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": false
},
"phone": {
"type": "String",
"required": false
},
"company": {
"type": "Pointer",
"targetClass": "Company",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Company",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"name": {
"type": "String",
"required": true
},
"website": {
"type": "String",
"required": false
},
"industry": {
"type": "String",
"required": false
},
"address": {
"type": "String",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Deal",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"title": {
"type": "String",
"required": true
},
"amount": {
"type": "Number",
"required": false
},
"stage": {
"type": "String",
"required": false
},
"contact": {
"type": "Pointer",
"targetClass": "Contact",
"required": false
},
"company": {
"type": "Pointer",
"targetClass": "Company",
"required": false
},
"expectedCloseDate": {
"type": "Date",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"assignedTo": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Activity",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"type": {
"type": "String",
"required": false
},
"subject": {
"type": "String",
"required": false
},
"description": {
"type": "String",
"required": false
},
"dueDate": {
"type": "Date",
"required": false
},
"completedAt": {
"type": "Date",
"required": false
},
"relatedTo": {
"type": "Pointer",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "_User",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}Construir con el Agente de IA
Utiliza el Agente de IA de Back4app para construir una aplicación CRM real a partir de esta plantilla: creará el frontend, el backend (este esquema, autenticación y APIs) y lo desplegará — sin configuración manual. El aviso a continuación describe esta pila CRM para que el Agente pueda generar una aplicación lista para producción de una sola vez.
Crea una aplicación CRM en Back4app con este esquema y comportamiento exactos. Esquema: 1. _Usuario (usar Back4app incorporado): nombre de usuario (String, requerido), correo electrónico (String, requerido), contraseña (String, requerido); objectId, createdAt, updatedAt (sistema). 2. Empresa: nombre (String, requerido), sitio web (String), industria (String), dirección (String), notas (String), creadoPor (Puntero a _Usuario); objectId, createdAt, updatedAt (sistema). 3. Contacto: nombre (String, requerido), correo electrónico (String), teléfono (String), empresa (Puntero a Empresa), notas (String), creadoPor (Puntero a _Usuario); objectId, createdAt, updatedAt (sistema). 4. Negocio: título (String, requerido), monto (Número), etapa (String; por ejemplo, cliente potencial, calificado, propuesta, negociación, ganado, perdido), contacto (Puntero a Contacto), empresa (Puntero a Empresa), fechaEsperadaCierre (Fecha), notas (String), asignadoA (Puntero a _Usuario); objectId, createdAt, updatedAt (sistema). 5. Actividad: tipo (String; por ejemplo, llamada, correo electrónico, reunión, nota), asunto (String), descripción (String), fechaVencimiento (Fecha), completadoEn (Fecha), relacionadoCon (Puntero a Contacto o Negocio), creadoPor (Puntero a _Usuario); objectId, createdAt, updatedAt (sistema). Seguridad: - Establecer ACLs para que solo los usuarios autenticados puedan acceder a los datos; usar reglas basadas en roles o basadas en propietarios donde sea apropiado (por ejemplo, asignadoA, creadoPor). - Usar Permisos a Nivel de Clase para que solo los usuarios autenticados puedan crear/leer/actualizar/eliminar estas clases. Autenticación: - Registro (nombre de usuario, correo electrónico, contraseña) e inicio de sesión; soporte para cerrar sesión/sesión. Comportamiento: - CRUD completo para Empresa, Contacto, Negocio y Actividad. - Listar negocios con filtro por etapa y ordenar por fechaEsperadaCierre o updatedAt (vista de pipeline). - Listar actividades por relacionadoCon (Contacto o Negocio). - Opcional: Live Queries en tiempo real para Negocio y Actividad para actualizaciones de panel/pipeline. - Opcional: fijación fuera de línea para móvil (Contactos, Negocios, Actividades). Entregar: - Crear la aplicación Back4app con el esquema anterior, ACLs y cualquier Código en la Nube necesario. - Generar el frontend y conectarlo a este backend; desplegar para que la aplicación sea ejecutable de extremo a extremo.
No se requiere tarjeta de crédito
API Playground
Prueba los endpoints REST y GraphQL para el esquema CRM. Respuestas de los datos de ejemplo anteriores — no se necesita cuenta de Back4app.
Encabezados
{
"X-Parse-Application-Id": "YOUR_APP_ID",
"X-Parse-REST-API-Key": "YOUR_REST_API_KEY"
}Usando este backend con REST API
Conéctate a tu backend de Back4app utilizando solicitudes HTTP estándar.
Obtén tus credenciales de API
Después de crear tu aplicación en Back4app, encuentra tu ID de Aplicación y REST API Clave en Configuración de la App → Seguridad y Claves. Todas las solicitudes requieren estos encabezados.
# Required headers for every request
X-Parse-Application-Id: YOUR_APP_ID
X-Parse-REST-API-Key: YOUR_REST_API_KEYCrear un contacto
curl -X POST \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Jane Doe","email":"[email protected]","phone":"+1234567890"}' \
https://parseapi.back4app.com/classes/ContactListar contactos o negocios
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
https://parseapi.back4app.com/classes/ContactActualizar un negocio
curl -X PUT \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"done":true}' \
https://parseapi.back4app.com/classes/Deal/OBJECT_IDEliminar un negocio
curl -X DELETE \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
https://parseapi.back4app.com/classes/Deal/OBJECT_IDPreguntas Frecuentes
Preguntas comunes sobre la plantilla del backend de la aplicación CRM.
¿Listo para construir tu aplicación CRM?
Comienza tu proyecto REST API en minutos. No se requiere tarjeta de crédito.