团队 CRM
与 AI 代理一起构建
视频制作团队客户关系管理系统后端

CrewMember、设备租赁和拍摄表后端模板
团队调度、设备跟踪和拍摄表传递

一个在 Back4app 上的视频制作团队客户关系管理系统后端,包含 CrewMember 资料、可用性时间段安排、设备库存、设备租赁结算、拍摄表记录、拍摄表分发和客户项目跟踪。包括 ER 图、数据字典、JSON 模式、API 游戏场,以及一个用于快速启动的AI 代理提示。

Crew CRM 主要内容

此模板为您提供视频制作团队 CRM 后端,包含 CrewMember 排班、GearItem 跟踪和 CallSheet 投递,以便协调员能够保持制作日的有序。

  1. CrewMember 可用性一目了然跟踪每个 CrewMember 和 AvailabilitySlot 窗口,以便协调员可以在拍摄日之前确认谁是空闲的。
  2. 可审计的 GearRental 记录使用 GearItem 和 GearRental 类记录相机、灯光和音频设备的借出、归还和状况说明。
  3. 无猜测的 CallSheet 分发存储 CallSheet 和 CallSheetDistribution 条目,以便每个部门在正确的时间收到正确的表格。
  4. 团队运营具有明确的所有权通过 Parse 指针和角色感知访问,将任务分配、设备和拍摄单链接到合适的人。
  5. 一个支持移动和网页工具的后端为调度员、制片人和助理提供相同的 REST 和 GraphQL API。

概述:视频制作团队 CRM

视频制作团队的报告应该能够回答领导的问题,而无需手动搜索文件夹和消息线程。可靠性是一个特性,而不是附注。在 Back4app 上构建 CrewMember、AvailabilitySlot、GearItem、GearRental 和 CallSheet,以更清晰的所有权、减少丢失任务和客户就绪的历史来处理视频制作团队事务。架构涵盖 CrewMember(fullName、email、phone、role、notes)、AvailabilitySlot(crewMember、date、startTime、endTime、status、location)、GearItem(assetTag、name、category、condition、isAvailable、location)、GearRental(gearItem、checkedOutBy、rentalDate、returnDueDate、returnedAt、status、conditionOut、conditionIn)、CallSheet(projectName、shootDate、callTime、location、status、notes、createdBy)、CallSheetDistribution(callSheet、recipientEmail、deliveryMethod、sentAt、deliveryStatus、openedAt)和 ClientProject(clientName、projectCode、title、status、producer、callSheet),并内置了权限和团队工作流控制。连接您首选的前端并加快交付速度。

最佳适合:

视频制作公司人员预订仪表板设备租赁日志呼叫表分发工具制作协调应用团队选择 BaaS 进行视频操作

视频制作团队后端如何组织

视频制作团队的操作员通常在交接时首次感受到痛苦:一组更新一个表,另一组信任一个聊天线程,而两者都与客户所告知的内容不符。

该总结使团队在任何人深入 ER 图或 JSON 导出之前围绕 CrewMember、AvailabilitySlot 和 GearItem 进行定位。

Crew CRM 核心功能

本中心中的每个技术卡都使用相同的工作人员 CRM 后端架构,包括 CrewMember、AvailabilitySlot、GearItem、GearRental、CallSheet、CallSheetDistribution 和 ClientProject。

CrewMember 名册管理

CrewMember 存储全名、角色、电子邮件和电话。

可用时段窗口

可用时段跟踪 crewMember、日期、开始时间、结束时间和状态。

设备项目库存和状态

设备项目记录资产标签、名称、类别、状态和是否可用。

设备租赁结账和归还日志

设备租赁将设备项目与借出人、租赁日期、归还到期日期和状态关联。

通话表创建

通话表存储项目名称、拍摄日期、地点、通话时间、状态和备注。

电话表分发跟踪

电话表分发链接 callSheet, recipientEmail, deliveryMethod, sentAt, 和 deliveryStatus。

为什么要用 Back4app 构建你的 Crew CRM 后端?

Back4app 提供团队、设备和分发原语,以便你的团队可以花时间在通话上,而不是后端管道。

  • 可用性时间段的团队排班: 与每个 CrewMember 关联的 AvailabilitySlot 记录使得确认谁可以参加拍摄、接送或夜间通话变得简单。
  • 使用 GearRental 和 GearItem 的设备租赁日志: 记录 GearRental 上的借出和归还时刻,同时保持 GearItem.assetTag、状态和是否可用以便快速检查资产。
  • 通话表格交付与 CallSheetDistribution: 使用每个 CallSheet 的 CallSheetDistribution 条目,让制作人能够看到谁收到了表格、何时发送以及是否被打开。

通过跨每个客户的一个后端合同快速构建和调整制作操作流程。

工作人员 CRM 优势

一个将排程、设备和电话表集中在一个地方的工作人员 CRM 后端。

更快的工作人员预订决策

使用 AvailabilitySlot 记录与 CrewMember 个人资料一起决定谁可以接下一个电话。

清除装备责任

将GearRental行与GearItem.assetTag值匹配,以便每次结账都有可追溯的所有者和到期日期。

减少沟通遗漏

在每个CallSheet上跟踪CallSheetDistribution,以便制作人员确切知道谁拥有最新版本。

更清晰的生产日记录

在准备和收尾期间保持shootDate、callTime和returnDueDate字段的组织,以便快速查看。

角色感知访问

使用ACL和CLP规则,使得只有授权协调员可以编辑装备、租赁和召唤表。

AI引导工作流

通过一个结构化的提示快速生成后端框架和集成指南。

准备好启动你的团队 CRM 吗?

让 Back4app AI 代理支架你的团队 CRM 后端,并从一个提示中生成 CrewMember 可用性、GearRental 日志和 CallSheet 分发。

免费开始 — 每月 50 个 AI 代理提示,无需信用卡

制作技术栈

这个团队 CRM 后端模板中包含的一切。

前端
13+ 种技术
后端
Back4app
数据库
MongoDB
认证
内置认证 + 会话
API
REST和GraphQL
实时
Live Queries

演员关系图

视频制作团队CRM架构的实体关系模型。

查看图表源
Mermaid
erDiagram
    CrewMember ||--o{ AvailabilitySlot : "has"
    CrewMember ||--o{ GearRental : "checks out"
    CrewMember ||--o{ CallSheet : "creates"
    CallSheet ||--o{ CallSheetDistribution : "sent as"
    GearItem ||--o{ GearRental : "rented in"
    ClientProject ||--o{ CallSheet : "uses"
    ClientProject }o--|| CrewMember : "producer"
    ClientProject }o--o| CallSheet : "primary call sheet"

    CrewMember {
        String objectId PK
        String fullName
        String email
        String phone
        String role
        String notes
        Date createdAt
        Date updatedAt
    }

    AvailabilitySlot {
        String objectId PK
        String crewMemberId FK
        Date date
        String startTime
        String endTime
        String status
        String location
        Date createdAt
        Date updatedAt
    }

    GearItem {
        String objectId PK
        String assetTag
        String name
        String category
        String condition
        Boolean isAvailable
        String location
        Date createdAt
        Date updatedAt
    }

    GearRental {
        String objectId PK
        String gearItemId FK
        String checkedOutById FK
        Date rentalDate
        Date returnDueDate
        Date returnedAt
        String status
        String conditionOut
        String conditionIn
        Date createdAt
        Date updatedAt
    }

    CallSheet {
        String objectId PK
        String projectName
        Date shootDate
        String callTime
        String location
        String status
        String notes
        String createdById FK
        Date createdAt
        Date updatedAt
    }

    CallSheetDistribution {
        String objectId PK
        String callSheetId FK
        String recipientEmail
        String deliveryMethod
        Date sentAt
        String deliveryStatus
        Date openedAt
        Date createdAt
        Date updatedAt
    }

    ClientProject {
        String objectId PK
        String clientName
        String projectCode
        String title
        String status
        String producerId FK
        String callSheetId FK
        Date createdAt
        Date updatedAt
    }

制作集成流程

验证、检查 CrewMember 可用性、创建 GearRental 日志和分发 CallSheet 记录的典型运行流程。

查看图表源
Mermaid
sequenceDiagram
  participant User
  participant App as Video Production Crew CRM App
  participant Back4app as Back4app Cloud

  User->>App: Login to the crew dashboard
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Check freelancer availability
  App->>Back4app: GET /classes/AvailabilitySlot?include=crewMember
  Back4app-->>App: AvailabilitySlot list

  User->>App: Reserve gear for the shoot
  App->>Back4app: POST /classes/GearRental
  Back4app-->>App: GearRental objectId

  User->>App: Send the call sheet
  App->>Back4app: POST /classes/CallSheetDistribution
  Back4app-->>App: Delivery status

  App->>Back4app: Subscribe to CallSheet updates
  Back4app-->>App: Live query events

类字典

每个类在团队 CRM 模式中的全字段参考。

字段类型描述必需
objectIdStringAuto-generated unique identifier自动
fullNameStringCrew member display name
emailStringCrew member email address
phoneStringCrew member contact number
roleStringCrew role such as producer, camera operator, gaffer, sound mixer, or PA
notesStringShort crew notes for scheduling or on-set needs
createdAtDateAuto-generated creation timestamp自动
updatedAtDateAuto-generated last-update timestamp自动

8 字段在 CrewMember 中

团队访问和权限

ACL 和 CLP 策略如何保护 CrewMember、GearItem、GearRental、CallSheet 和 CallSheetDistribution 记录。

团队档案控制

只有授权用户才能更新 CrewMember 资料或更改团队成员的联系信息。

装备和租赁完整性

只有协调员可以创建或编辑 GearItem 和 GearRental 行,从而保持资产标签和租赁日期历史的可靠。

范围调用表访问

限制 CallSheet 和 CallSheetDistribution 的读取权限,仅限于需要当前表格的制作团队、客户和供应商。

JSON 架构

原始 JSON 架构定义准备好以复制到 Back4app 或作为实现参考使用。

JSON
{
  "classes": [
    {
      "className": "CrewMember",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "fullName": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "phone": {
          "type": "String",
          "required": false
        },
        "role": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "AvailabilitySlot",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "crewMember": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CrewMember"
        },
        "date": {
          "type": "Date",
          "required": true
        },
        "startTime": {
          "type": "String",
          "required": true
        },
        "endTime": {
          "type": "String",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "location": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "GearItem",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "assetTag": {
          "type": "String",
          "required": true
        },
        "name": {
          "type": "String",
          "required": true
        },
        "category": {
          "type": "String",
          "required": true
        },
        "condition": {
          "type": "String",
          "required": true
        },
        "isAvailable": {
          "type": "Boolean",
          "required": true
        },
        "location": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "GearRental",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "gearItem": {
          "type": "Pointer",
          "required": true,
          "targetClass": "GearItem"
        },
        "checkedOutBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CrewMember"
        },
        "rentalDate": {
          "type": "Date",
          "required": true
        },
        "returnDueDate": {
          "type": "Date",
          "required": true
        },
        "returnedAt": {
          "type": "Date",
          "required": false
        },
        "status": {
          "type": "String",
          "required": true
        },
        "conditionOut": {
          "type": "String",
          "required": false
        },
        "conditionIn": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CallSheet",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "projectName": {
          "type": "String",
          "required": true
        },
        "shootDate": {
          "type": "Date",
          "required": true
        },
        "callTime": {
          "type": "String",
          "required": true
        },
        "location": {
          "type": "String",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "createdBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CrewMember"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CallSheetDistribution",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "callSheet": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CallSheet"
        },
        "recipientEmail": {
          "type": "String",
          "required": true
        },
        "deliveryMethod": {
          "type": "String",
          "required": true
        },
        "sentAt": {
          "type": "Date",
          "required": true
        },
        "deliveryStatus": {
          "type": "String",
          "required": true
        },
        "openedAt": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "ClientProject",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "clientName": {
          "type": "String",
          "required": true
        },
        "projectCode": {
          "type": "String",
          "required": true
        },
        "title": {
          "type": "String",
          "required": true
        },
        "status": {
          "type": "String",
          "required": true
        },
        "producer": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CrewMember"
        },
        "callSheet": {
          "type": "Pointer",
          "required": false,
          "targetClass": "CallSheet"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

与 AI 代理一起构建

使用 Back4app AI 代理从此模板生成一个真实的视频制作团队 CRM 应用,包括前端、后端、认证,以及 CrewMember、GearItem 和 CallSheet 流程。

Back4app AI 代理
准备构建
在 Back4app 上创建一个视频制作团队 CRM 应用后端,使用这个确切的架构和行为。

架构:
1. CrewMember:fullName(字符串,必填),email(字符串,必填),phone(字符串),role(字符串,必填),notes(字符串);objectId,createdAt,updatedAt(系统)。
2. AvailabilitySlot:crewMember(指向 CrewMember 的指针,必填),date(日期,必填),startTime(字符串,必填),endTime(字符串,必填),status(字符串,必填),location(字符串);objectId,createdAt,updatedAt(系统)。
3. GearItem:assetTag(字符串,必填),name(字符串,必填),category(字符串,必填),condition(字符串,必填),isAvailable(布尔值,必填),location(字符串);objectId,createdAt,updatedAt(系统)。
4. GearRental:gearItem(指向 GearItem 的指针,必填),checkedOutBy(指向 CrewMember 的指针,必填),rentalDate(日期,必填),returnDueDate(日期,必填),returnedAt(日期),status(字符串,必填),conditionOut(字符串),conditionIn(字符串);objectId,createdAt,updatedAt(系统)。
5. CallSheet:projectName(字符串,必填),shootDate(日期,必填),callTime(字符串,必填),location(字符串,必填),status(字符串,必填),notes(字符串),createdBy(指向 CrewMember 的指针,必填);objectId,createdAt,updatedAt(系统)。
6. CallSheetDistribution:callSheet(指向 CallSheet 的指针,必填),recipientEmail(字符串,必填),deliveryMethod(字符串,必填),sentAt(日期,必填),deliveryStatus(字符串,必填),openedAt(日期);objectId,createdAt,updatedAt(系统)。
7. ClientProject:clientName(字符串,必填),projectCode(字符串,必填),title(字符串,必填),status(字符串,必填),producer(指向 CrewMember 的指针,必填),callSheet(指向 CallSheet 的指针);objectId,createdAt,updatedAt(系统)。

安全性:
- 只有授权的协调员可以创建/编辑 GearItem 和 GearRental。使用 Cloud Code 进行验证和通话表分发检查。

认证:
- 注册、登录、登出。

行为:
- 列出团队成员,检查可用时间段,创建设备租赁日志,创建通话表,并跟踪通话表分发。

交付:
- 带有架构、ACL、CLP 的 Back4app 应用;用于团队名册、可用性、设备、租赁、通话表和分发的前端。

按下面的按钮以打开带有预填充模板提示的代理。

这是没有技术后缀的基本提示。您可以在之后调整生成的前端堆栈。

几分钟内部署每月50个免费提示无需信用卡

API沙盒

尝试对照该团队CRM架构使用REST和GraphQL端点。响应使用模拟数据,无需Back4app账户。

加载演示区…

使用与此模板相同的架构。

选择你的技术栈

展开每个卡片以查看如何将 CrewMember、AvailabilitySlot 和 GearItem 与您选择的技术栈集成。

Flutter 团队 CRM 后端

React 团队 CRM 后端

React 原生 团队 CRM 后端

Next.js 团队 CRM 后端

JavaScript 团队 CRM 后端

Android 团队 CRM 后端

iOS 团队 CRM 后端

Vue 团队 CRM 后端

Angular 团队 CRM 后端

GraphQL 团队 CRM 后端

REST API 团队 CRM 后端

PHP 团队 CRM 后端

.NET 团队 CRM 后端

您在每项技术中获得的内容

每个技术栈都使用相同的 crew CRM 后端架构和 API 合同。

统一的生产操作数据结构

使用一个架构管理 CrewMember、AvailabilitySlot、GearItem、GearRental、CallSheet 和 CallSheetDistribution。

支持人员调度

在呼叫之前检查谁可用,并将联系信息集中在一个地方。

设备和租赁追踪

记录生产设备的借出时间、到期日期和归还状态。

呼叫单交付工作流

跟踪分发收据,以便每个部门都能获得当前的表格。

REST/GraphQL APIs 用于生产团队

将网页、移动和内部工具与一个后端合同集成。

队伍堆栈比较

比较所有支持技术的设置速度、SDK 风格和 AI 支持。

框架设置时间团队客户关系管理好处SDK 类型AI支持
大约5分钟用于移动和网络的团队调度单一代码库。类型化SDK完整
少于5分钟快速网页仪表板,用于团队可用性和租赁。类型化SDK完整
~3–7分钟面向制作助手的跨平台移动应用。已输入SDK完整
快速(5分钟)设置为制作团队提供的服务器渲染人员板。已输入SDK完整
~3–5分钟轻量级网络集成用于人员操作。已输入SDK完整
大约5分钟用于设置协调员的原生 Android 应用程序。输入的SDK完整
不到5分钟用于移动中的制作人的原生 iOS 应用程序。输入的SDK完整
大约3-7分钟用于通话表工作流程的 React 现代网页UI。输入的SDK完整
快速(5分钟)设置用于生产运营的企业网络应用。输入的SDK完整
少于2分钟灵活的GraphQL API用于团队CRM查询。GraphQL API完整
快速(2分钟)配置REST API与团队工具的集成。REST API完整
约3分钟服务器端PHP后端用于生产工作流。REST API完整
~3–7分钟.NET后端用于工作室操作。输入的SDK完整

设置时间反映从项目启动到首次团队、设备或通话单查询的预期持续时间,使用此模板架构。

工作人员常见问题

关于使用此模板构建视频制作工作人员 CRM 后端的常见问题。

当工作敏感并且受截止日期驱动时,一个健康的视频制作船员管道是什么样的?
船员名单管理、可用插槽窗口、装备物品库存和状况如何支持从接收至关闭的视频制作团队流程?
我们如何扩展视频制作团队的自动化,以进行提醒、任务和客户通知?
我如何使用Flutter查询船员可用性?
我如何在Next.js中管理装备租赁日志?
React原生应用可以离线缓存通话表吗?
我该如何防止未经授权的拍摄表修改?
在 Android 上显示设备状态的最佳方法是什么?
拍摄表分发流程是如何从头到尾工作的?
这个视频制作团队 CRM 模板由哪些类驱动?

受到全球开发者的信任

与Back4app模板一起,加入更快发布Crew CRM产品的团队

G2 Users Love Us Badge

准备好构建您的视频制作Crew CRM吗?

在几分钟内开始您的Crew CRM项目。无需信用卡。

选择技术