CRM App Backend-Vorlage
Android — Schema, API & KI-Leitfaden
Ein produktionsbereites Android CRM Backend-Schema und Starter-Kit auf Back4app: Kontakt, Unternehmen, Deal, Aktivität, Pipeline-Stufen, ER-Diagramm, Datenwörterbuch, JSON-Schema, API-Spielplatz und ein One-Click KI-Agent Prompt zur Bereitstellung in Minuten.
Wichtige Erkenntnisse
Auf dieser Seite erhalten Sie ein produktionsbereites CRM-Schema, einen One-Click KI-Prompt und Schritt-für-Schritt Android Code — damit Sie eine CRM-App ohne Backend-Erstellung bereitstellen können.
- In Minuten bereitstellen — Fügen Sie die AI-Agentenaufforderung ein und erhalten Sie eine laufende App mit Kontakten, Unternehmen, Angeboten und Pipeline.
- Standardmäßig sicher — ACLs und rollenbasierter Zugriff, damit Benutzer nur ihre zugewiesenen Angebote und Daten sehen.
- Android-native SDK — Typisierte Objekte, async/await, Offline-Pinning und Live Queries für Pipeline-Updates.
- REST + GraphQL — Beide APIs werden automatisch generiert; Angebote nach Phase filtern, Aktivitäten nach relatedTo auflisten.
- Fünf Klassen — _User (integriert), Unternehmen, Kontakt, Angebot (Pipeline), Aktivität (Aufgaben/Ereignisse).
Was ist die Android CRM App Backend-Vorlage?
Produktionsbereites CRM-Backend für Android (Kotlin) auf Back4app. Das Parse Android SDK bietet typisierte Modelle für Kontakt und Deal, coroutine-freundliche APIs und lokale Speicherung für Offline-Pipeline und Kontakte. Erstellen Sie feldbereite CRM-Apps mit Live Queries für Echtzeit-Updates und keinen benutzerdefinierten Servercode.
Am besten für:
Übersicht
Android CRM-Apps benötigen typisierte Modelle, Offline-Unterstützung und Echtzeit-Pipeline-Updates. Das Parse Android SDK auf Back4app bietet Kotlin-freundliche APIs, lokale Speicherung für Deal und Kontakt sowie Live Queries, damit die Pipeline ohne Abfragen synchron bleibt.
Das Schema (_User, Company, Contact, Deal, Activity) ist auf allen Plattformen gleich. In Kotlin verwenden Sie ParseQuery.getQuery(ParseObject::class.java, "Deal").whereEqualTo("stage", "qualified") und optionale Speicherung; das SDK kümmert sich um JSON und Synchronisation.
Kern-CRM-Funktionen
Android CRM-Backend mit Kotlin und dem Parse SDK: Kontaktmanagement, Deal-Pipeline, Offline-Pinning und eingebaute ACLs für zugewiesene Deals und Kontakte.
Kontaktverwaltung
Speichern und Verwalten von Kontakten mit Name, E-Mail, Telefon, Unternehmen und Notizen. Ideal für Android-Apps.
Unternehmensverwaltung
Verfolgen Sie Unternehmen mit Namen, Website, Branche und Adresse. Verknüpft mit Kontakten und Geschäften.
Deal-Pipeline
Verkaufspipeline mit Phasen, Betrag, voraussichtlichem Abschlussdatum und Zuweisung. Entwickelt für Android Backends.
Aktivitätsverfolgung
Protokollieren Sie Anrufe, E-Mails, Besprechungen und Notizen, die mit Kontakten und Geschäften verknüpft sind. Funktioniert mit Android SDK.
Benutzer & Berechtigungen
Integriertes Benutzermodell und Verweise für Eigentum und Zuweisung. ACLs sofort einsatzbereit für Android.
Warum Ihr Android CRM-Backend mit Back4app erstellen?
Back4app bietet Android-Apps ein typisiertes SDK und Offline-Unterstützung, damit Sie ein einsatzbereites CRM erstellen können.
- •Kotlin und Koroutinen: Verwenden Sie das Parse Android SDK mit Suspend-Funktionen und Koroutinen; typensichere Modelle für Kontakt, Deal, Aktivität.
- •Offline und Synchronisierung: Pin Kontakt, Deal und Aktivität im lokalen Datenspeicher; Abfragen lokal im Offline-Modus und Synchronisierung, wenn Sie wieder online sind.
- •Live Queries: Abonnieren Sie Änderungen an Deals und Aktivitäten für Echtzeit-Pipeline-Updates ohne Abfragen.
Ideal für Android-Entwickler, die CRM- oder Verkaufs-Apps mit Kotlin und modernen asynchronen Mustern erstellen.
Kernvorteile
Ein produktionsbereiter CRM-Backend, damit Sie schneller liefern und sich auf Ihre App konzentrieren können.
Schneller liefern, kein Backend-Code
REST- und GraphQL APIs und ein einsatzbereites Schema — verbinden Sie Ihre App und legen Sie los.
Standardmäßig sicher
ACLs und Klassenberechtigungen; einschränken nach assignedTo und createdBy.
Echtzeit-Pipeline
Live Queries über WebSockets für sofortige Deal- und Aktivitätsupdates.
Integrierte Authentifizierung
Benutzerregistrierung, Anmeldung und Sitzungsverwaltung sofort einsatzbereit.
Offline-Funktionalität
Lokales Pinnen hält Kontakte und Deals offline verfügbar und synchronisiert, wenn Sie sich wieder verbinden.
In Minuten bereitstellen
Verwenden Sie den KI-Agenten, um Ihre CRM-App aus dieser Vorlage zu erstellen und bereitzustellen.
Bereit, es auszuprobieren?
Lassen Sie den Back4app KI-Agenten Ihr CRM-App-Backend erstellen, das Android-Frontend verbinden und bereitstellen — alles aus einem einzigen Prompt.
Kostenlos starten — 50 KI-Agenten-Prompts/Monat, keine Kreditkarte erforderlich
Technologischer Stack
Alles, was diese CRM-App-Vorlage auf einen Blick antreibt.
ER-Diagramm
Entität-Beziehungsdiagramm für das Android CRM-App-Datenmodell.
CRM-Schema: _Benutzer, Unternehmen, Kontakt, Deal, Aktivität mit Zeigern für Unternehmen, Kontakt, Deal, zugewiesen an, verwandt mit, erstellt von.
Diagrammquelle anzeigen
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"
Integrationsfluss
Auth-to-CRUD-Sequenz: wie Ihre Android App mit Back4app kommuniziert — anmelden, dann Kontakte und Deals abfragen, Pipeline aktualisieren.
Diagrammquelle anzeigen
sequenceDiagram
participant User
participant App as Android App
participant Back4app as Back4app Cloud
User->>App: Login
App->>Back4app: ParseUser.logInInBackground(username, password)
Back4app-->>App: Session token
App-->>User: Logged in
User->>App: Load contacts and deals
App->>Back4app: ParseQuery<ParseObject>.findInBackground()
Back4app-->>App: List of Deal / Contact
App-->>User: Show pipeline
User->>App: Create deal or contact
App->>Back4app: deal.saveInBackground() or contact.saveInBackground()
Back4app-->>App: Deal (objectId)
App-->>User: Updated listDatenwörterbuch
Vollständige Feldreferenz für jede Klasse im Schema.
| Feld | Typ | Beschreibung | Erforderlich |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | auto |
| 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 | auto |
| updatedAt | Date | Auto-generated last-update timestamp | auto |
9 Felder in Contact
Sicherheit & Berechtigungen
Wie Eigentum, ACLs und Klassenberechtigungen Daten in diesem CRM-Schema schützen.
Zeilenebene ACLs
Verwenden Sie ACLs und Zeiger (assignedTo, createdBy), damit Benutzer nur ihre zugewiesenen Deals und verwandte Daten sehen und bearbeiten können.
Klassenberechtigungen
CLPs beschränken, welche Rollen oder Benutzer Objekte auf Klassenebene erstellen, lesen, aktualisieren oder löschen können.
Zeigerbasiertes Eigentum
Deal.assignedTo und Activity.createdBy verlinken zu _User; Cloud Code kann Sichtbarkeit und Bearbeitungen nach Rolle durchsetzen.
Schema (JSON)
Roh-JSON-Schemaspezifikation — kopieren und in Ihrer Back4app-App verwenden oder über die API importieren.
{
"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
}
}
}
]
}Mit AI-Agent erstellen
Verwenden Sie den Back4app AI-Agent, um eine echte CRM-App aus dieser Vorlage zu erstellen: Er wird das Frontend, das Backend (dieses Schema, Authentifizierung und APIs) erstellen und bereitstellen – keine manuelle Einrichtung. Der folgende Prompt beschreibt diesen CRM-Stack, damit der Agent eine produktionsbereite App auf einmal generieren kann.
Erstellen Sie eine CRM-App auf Back4app mit diesem genauen Schema und Verhalten. Schema: 1. _User (verwenden Sie Back4app integrierte): Benutzername (String, erforderlich), E-Mail (String, erforderlich), Passwort (String, erforderlich); objectId, createdAt, updatedAt (System). 2. Unternehmen: Name (String, erforderlich), Website (String), Branche (String), Adresse (String), Notizen (String), erstelltVon (Pointer zu _User); objectId, createdAt, updatedAt (System). 3. Kontakt: Name (String, erforderlich), E-Mail (String), Telefon (String), Unternehmen (Pointer zu Unternehmen), Notizen (String), erstelltVon (Pointer zu _User); objectId, createdAt, updatedAt (System). 4. Deal: Titel (String, erforderlich), Betrag (Zahl), Phase (String; z.B. Lead, qualifiziert, Angebot, Verhandlung, gewonnen, verloren), Kontakt (Pointer zu Kontakt), Unternehmen (Pointer zu Unternehmen), erwartetes Abschlussdatum (Datum), Notizen (String), zugewiesenAn (Pointer zu _User); objectId, createdAt, updatedAt (System). 5. Aktivität: Typ (String; z.B. Anruf, E-Mail, Meeting, Notiz), Betreff (String), Beschreibung (String), Fälligkeitsdatum (Datum), abgeschlossenAm (Datum), bezogenAuf (Pointer zu Kontakt oder Deal), erstelltVon (Pointer zu _User); objectId, createdAt, updatedAt (System). Sicherheit: - Setzen Sie ACLs, damit nur authentifizierte Benutzer auf Daten zugreifen können; verwenden Sie rollenbasierte oder besitzerbasierte Regeln, wo es angebracht ist (z.B. zugewiesenAn, erstelltVon). - Verwenden Sie Klassenebenenberechtigungen, damit nur authentifizierte Benutzer diese Klassen erstellen/lesen/aktualisieren/löschen können. Authentifizierung: - Anmeldung (Benutzername, E-Mail, Passwort) und Login; Unterstützung für Abmeldung/Sitzung. Verhalten: - Vollständiges CRUD für Unternehmen, Kontakt, Deal und Aktivität. - Listen Sie Deals mit Filter nach Phase und sortieren Sie nach erwartetesAbschlussdatum oder updatedAt (Pipeline-Ansicht). - Listen Sie Aktivitäten nach bezogenAuf (Kontakt oder Deal). - Optional: Echtzeit Live Queries für Deal und Aktivität für Dashboard/Pipeline-Updates. - Optional: Offline-Pinning für mobile (Kontakte, Deals, Aktivitäten). Liefern: - Erstellen Sie die Back4app-App mit dem obigen Schema, ACLs und allen benötigten Cloud-Code. - Generieren Sie das Frontend und verbinden Sie es mit diesem Backend; bereitstellen, damit die App end-to-end lauffähig ist.
Drücken Sie die Schaltfläche unten, um den Agenten mit dem vorab ausgefüllten Prompt dieser Vorlage zu öffnen.
API-Spielplatz
Versuchen Sie die REST- und GraphQL-Endpunkte für das CRM-Schema. Antworten aus den obigen Beispieldaten — kein Back4app-Konto erforderlich.
Verwendet dasselbe CRM-Schema (Kontakt, Unternehmen, Deal, Aktivität) wie diese Vorlage.
Schritt-für-Schritt Android Integration
Verbinden Sie sich von einer Android App mit Ihrem Back4app Backend über das Back4app Android SDK.
Schritt 1: Installieren Sie das Back4app Android SDK
Fügen Sie das Back4app SDK für Ihren Stack hinzu (z.B. npm, pubspec oder Paketmanager).
Kotlin// build.gradle.kts (app) dependencies { implementation("com.github.parse-community.Parse-SDK-Android:parse:4.1.0") }Schritt 2: Initialisieren Sie Back4app in Ihrer App
Initialisieren Sie das Back4app SDK beim Start der App mit Ihrer App-ID und Server-URL.
Kotlin// Application class or Activity Parse.initialize( Parse.Configuration.Builder(context) .applicationId("YOUR_APP_ID") .clientKey("YOUR_CLIENT_KEY") .server("https://parseapi.back4app.com/") .build() );Schritt 3: Kontakte und Geschäfte abfragen
Verwenden Sie das SDK, um Kontakt- und Geschäftsobjekte abzurufen; filtern Sie Geschäfte nach Phase für die Pipeline.
Kotlinsuspend fun getDeals(stage: String = "qualified"): List<ParseObject> = withContext(Dispatchers.IO) { val query = ParseQuery.getQuery<ParseObject>("Deal") query.whereEqualTo("stage", stage) query.orderByAscending("expectedCloseDate") query.find() } suspend fun getContacts(): List<ParseObject> = withContext(Dispatchers.IO) { ParseQuery.getQuery<ParseObject>("Contact").find() }Schritt 4: Erstellen Sie einen Kontakt oder ein Geschäft
Erstellen Sie einen neuen Kontakt oder ein Geschäft mit den erforderlichen Feldern und Hinweisen (Unternehmen, Kontakt, zugewiesen an), und speichern Sie dann.
Kotlinsuspend fun createDeal(title: String, stage: String = "lead", amount: Int? = null) = withContext(Dispatchers.IO) { val deal = ParseObject("Deal") deal.put("title", title) deal.put("stage", stage) amount?.let { deal.put("amount", it) } deal.save() } suspend fun createContact(name: String, email: String? = null, phone: String? = null) = withContext(Dispatchers.IO) { val contact = ParseObject("Contact") contact.put("name", name) email?.let { contact.put("email", it) } phone?.let { contact.put("phone", it) } contact.save() }Schritt 5: Aktualisieren Sie die Geschäftsphase und Aktivitäten
Aktualisieren Sie Deal.stage beim Bewegen in der Pipeline; erstellen und listen Sie Aktivitäten nach relatedTo.
Kotlin// Update deal stage (e.g. move in pipeline) suspend fun updateDealStage(objectId: String, stage: String) = withContext(Dispatchers.IO) { val query = ParseQuery.getQuery<ParseObject>("Deal") val deal = query.get(objectId) deal.put("stage", stage) deal.save() } // Delete a deal suspend fun deleteDeal(objectId: String) = withContext(Dispatchers.IO) { ParseQuery.getQuery<ParseObject>("Deal").get(objectId).delete() }
Zustandsmanagement-Integration
Integrieren Sie das Back4app SDK mit der Zustandschicht Ihrer App (z.B. Kontext, Store oder Dienste) für Pipeline- und Kontaktzustände.
Vollständiges Datenmodell
Kopiere ein vollständiges CRM-Modell für typsichere Serialisierung (z.B. Klasse, Schnittstelle oder Typdefinition).
// Deal.kt — matches Back4app schema
data class Deal(
val objectId: String?,
val title: String,
val amount: Double?,
val stage: String,
val expectedCloseDate: Date?,
val contact: ParseObject?,
val company: ParseObject?,
val assignedTo: ParseUser?,
val createdAt: Date?,
val updatedAt: Date?
) {
companion object {
fun from(obj: ParseObject): Deal = Deal(
objectId = obj.objectId,
title = obj.getString("title") ?: "",
amount = obj.getDouble("amount"),
stage = obj.getString("stage") ?: "lead",
expectedCloseDate = obj.getDate("expectedCloseDate"),
contact = obj.getParseObject("contact"),
company = obj.getParseObject("company"),
assignedTo = obj.getParseUser("assignedTo"),
createdAt = obj.createdAt,
updatedAt = obj.updatedAt
)
}
}Offline-First & Lokaler Datenspeicher
Verwende pin() und unpin(), damit Kontakte und Deals offline verfügbar sind und synchronisiert werden, wenn du wieder online bist.
Unterstützte SDKs beinhalten einen lokalen Datenspeicher. Pinne Kontakt-, Deal- und Aktivitätsobjekte, um sie auf dem Gerät zu behalten; frage gepinnte Daten im Offline-Modus ab. Wenn die App wieder online ist, synchronisiere mit dem Server.
Unten: Ergebnisse nach dem Abrufen anheften und abheften, wenn du keine lokalen Kopien mehr benötigst.
// After fetching, pin for offline
ParseObject.pinAllInBackground(deals).await()
// Query from local datastore when offline
val query = ParseQuery.getQuery<ParseObject>("Deal")
.fromLocalDatastore()
.whereEqualTo("stage", "qualified")
.orderByAscending("expectedCloseDate")
val localDeals = query.find()
// Unpin when no longer needed
ParseObject.unpinAllInBackground("Deal").await()Häufig gestellte Fragen
Häufige Fragen zum Backend-Template der CRM-App.
Bereit, Ihre CRM-App zu erstellen?
Starten Sie Ihr Android-Projekt in wenigen Minuten. Keine Kreditkarte erforderlich.