Шаблон бэкенда приложения Todo
iOS — Схема, API и руководство по AI
Готовая к производству iOS Todo схема бэкенда и Стартовый комплект на Back4app: диаграмма ER, словарь данных, JSON-схема, API-площадка, примеры кода и однонажатийный AI Agent для развертывания за считанные минуты.
Ключевые выводы
На этой странице вы получите готовую к производству схему, одноразовый AI-промпт и пошаговый iOS код — так вы сможете запустить приложение Todo без создания бэкенда.
- Развертывание за минуты — вставьте промпт AI-агента и получите работающее приложение с фронтендом, бэкендом и базой данных.
- Безопасность по умолчанию — ACL на уровне строк гарантируют, что каждый пользователь видит только свои собственные задачи.
- iOS-родной SDK — типизированные объекты, async/await, оффлайн-фиксация и Live Queries из коробки.
- REST + GraphQL — обе API автоматически генерируются; нет необходимости писать пользовательские конечные точки.
- Два класса — _User (встроенная аутентификация) и Todo (задачи с заголовком, выполнено, дата выполнения, приоритет, владелец).
Что такое шаблон бэкенда приложения Todo iOS?
Back4app — это бэкенд как услуга (BaaS), идеальный для Todo приложений: управляемый бэкенд, аутентификация, реальное время и SDK для более чем 13 технологий. iOS Шаблон бэкенда Todo приложения — это готовая к производству схема бэкенда, размещенная на Back4app. Она предоставляет вам два класса базы данных (_User и Todo), ACL на основе владения, REST и GraphQL API, а также подсказку AI Agent в один клик — так вы сможете подключить фронтенд iOS и запустить работающее Todo приложение за считанные минуты вместо дней.
Лучше всего для:
Обзор
Todo приложение — это одна из самых распространенных отправных точек для изучения разработки бэкенда. Внутри оно требует регистрации пользователей, CRUD задач, контроля доступа на основе владения и, опционально, синхронизации в реальном времени.
Схема ниже определяет два класса — _User (встроенный) и Todo — соединенные указателем. С помощью Back4app iOS SDK вы можете взаимодействовать с этим бэкендом из вашего приложения — запрашивать, создавать, обновлять и удалять объекты — без написания пользовательского API слоя.
Почему стоит создать ваш iOS Todo бэкенд с Back4app?
Back4app предоставляет готовый бэкенд и типизированный SDK, чтобы вы могли создать ваше Todo приложение без написания REST glue или управления аутентификацией самостоятельно.
- •SDK и безопасность типов: SDK обеспечивает безопасность типов для Todo и User и обрабатывает JSON, так что вам нужно писать меньше шаблонного кода.
- •Асинхронный и необязательный оффлайн: Используйте async/await; поддерживаемые SDK предлагают локальную привязку, чтобы ваш список мог работать в оффлайне и синхронизироваться при возвращении в онлайн.
- •Live Queries: Подписывайтесь на изменения Todo, чтобы интерфейс обновлялся в реальном времени через WebSockets.
Одна и та же схема и API для каждого стека — переключайте клиентов позже, не меняя бэкенд.
Основные преимущества
Готовый к производству бэкенд для Todo, чтобы вы могли быстрее запускать и сосредоточиться на своем приложении.
Запускайте быстрее, без кода бэкенда
REST и GraphQL API и готовая к использованию схема — подключите ваше приложение и вперед.
Безопасно по умолчанию
ACL и разрешения на уровне классов, чтобы пользователи имели доступ только к своим данным.
Обновления в реальном времени
Live Queries через WebSockets для мгновенных обновлений интерфейса.
Встроенная аутентификация
Регистрация пользователей, вход в систему и управление сессиями из коробки — без пользовательского слоя аутентификации.
Работает в оффлайне
Локальное кэширование сохраняет данные доступными в оффлайне и синхронизирует их при повторном подключении.
Развертывание за минуты
Используйте AI Agent для создания и развертывания вашего приложения Todo из этого шаблона.
Готовы попробовать?
Позвольте AI Agent от Back4app создать бэкенд вашего приложения Todo, подключить фронтенд iOS и развернуть — все из одной команды.
Бесплатно для начала — 50 запросов AI Agent в месяц, без необходимости в кредитной карте
Технический стек
Все, что поддерживает этот шаблон приложения Todo, одним взглядом.
ER-диаграмма
Диаграмма «Сущность-Связь» для модели данных приложения iOS Todo.
Класс _User содержит objectId, username, email, password, createdAt и updatedAt. Класс Todo содержит objectId, title, done, dueDate, priority и указатель owner на _User, а также createdAt и updatedAt. Каждый _User владеет нулем или несколькими элементами Todo.
Просмотреть источник диаграммы
erDiagram
_User {
String objectId PK
String username
String email
String password
Date createdAt
Date updatedAt
}
Todo {
String objectId PK
String title
Boolean done
Date dueDate
Number priority
Pointer owner FK
Date createdAt
Date updatedAt
}
_User ||--o{ Todo : "owns"
Поток интеграции
Последовательность Auth-to-CRUD: как ваше iOS приложение взаимодействует с Back4app — вход в систему, затем запрос и создание задач.
Посмотреть источник диаграммы
sequenceDiagram
participant User
participant App as iOS App
participant Back4app as Back4app Cloud
User->>App: Login
App->>Back4app: ParseUser.logIn(username:password:)
Back4app-->>App: Session token
App-->>User: Logged in
User->>App: Load todos
App->>Back4app: ParseQuery.find()
Back4app-->>App: [PFObject]
App-->>User: Show list
User->>App: Create todo
App->>Back4app: todo.save()
Back4app-->>App: Todo (objectId)
App-->>User: Updated listСловарь данных
Полная справка по полям для каждого класса в схеме.
| Поле | Тип | Описание | Обязательно |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | авто |
| title | String | Short description of the task | |
| done | Boolean | Whether the task is completed | — |
| dueDate | Date | Optional deadline for the task | — |
| priority | Number | Priority level (1 = high, 3 = low) | — |
| owner | Pointer<_User> | User who owns this task | — |
| createdAt | Date | Auto-generated creation timestamp | авто |
| updatedAt | Date | Auto-generated last-update timestamp | авто |
8 поля в Todo
Безопасность и разрешения
Как владение, ACL и разрешения на уровне класса защищают данные в этой схеме.
ACL на уровне строк
Каждый Todo получает ACL, связанный с его владельцем. Только создатель может читать, обновлять или удалять свои собственные задачи.
Разрешения на уровне класса
CLP ограничивают, какие роли или пользователи могут создавать, читать, обновлять или удалять объекты на уровне класса — ваша первая линия защиты.
Владение на основе указателей
Указатель владельца связывает каждый Todo с его _User. Триггеры Cloud Code могут автоматически устанавливать владение и применять ACL при сохранении.
Схема (JSON)
Сырая схема JSON — скопируйте и используйте в своем приложении Back4app или импортируйте через API.
{
"classes": [
{
"className": "Todo",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"title": {
"type": "String",
"required": true
},
"done": {
"type": "Boolean",
"required": false,
"defaultValue": false
},
"dueDate": {
"type": "Date",
"required": false
},
"priority": {
"type": "Number",
"required": false,
"defaultValue": 3
},
"owner": {
"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
}
}
}
]
}Создать с помощью AI Agent
Используйте AI Agent Back4app для создания реального приложения Todo из этого шаблона: он создаст фронтенд, бэкенд (эту схему, аутентификацию и API) и развернет его — без ручной настройки. Подсказка ниже описывает этот стек Todo, чтобы Агент мог сгенерировать готовое к производству приложение за один раз.
Создайте приложение Todo на Back4app с этой точной схемой и поведением. Схема: 1. _User (используйте встроенный Back4app): имя пользователя (String, обязательно), электронная почта (String, обязательно), пароль (String, обязательно); objectId, createdAt, updatedAt (системные). 2. Todo: заголовок (String, обязательно), выполнено (Boolean, по умолчанию: false), срок выполнения (Date, необязательно), приоритет (Number, по умолчанию: 3; 1=высокий, 2=средний, 3=низкий), владелец (Указатель на _User; устанавливается на текущего пользователя при создании); objectId, createdAt, updatedAt (системные). Безопасность: - Установите ACL для каждого Todo, чтобы только владелец имел доступ на чтение и запись. Без публичного доступа на чтение/запись. - При создании установите Todo.owner на текущего пользователя (например, через Cloud Code beforeSave или на стороне клиента). - Используйте разрешения на уровне класса, чтобы только аутентифицированные пользователи могли создавать/читать/обновлять/удалять Todo. Аутентификация: - Регистрация (имя пользователя, электронная почта, пароль) и вход; поддержка выхода/сессии. - После входа приложение должно показывать и разрешать CRUD только для Todo текущего пользователя. Поведение: - Полный CRUD для Todo: создать, список (только владельца), получить один, обновить (переключить выполнено, редактировать заголовок, срок выполнения, приоритет), удалить. - Список Todo с сортировкой (например, по приоритету, затем по сроку выполнения или созданию). Приоритет по умолчанию для новых Todo: 3 (низкий). Доставка: - Создайте приложение Back4app с вышеуказанной схемой, ACL и любым необходимым Cloud Code (например, beforeSave на Todo для установки владельца). - Сгенерируйте фронтенд и подключите его к этому бэкенду; разверните, чтобы приложение работало от начала до конца.
Нажмите кнопку ниже, чтобы открыть Агент с предзаполненной подсказкой этого шаблона.
API Playground
Попробуйте REST и GraphQL конечные точки для схемы Todo. Ответы из приведенных выше примерных данных — учетная запись Back4app не требуется.
Использует ту же схему Todo, что и этот шаблон.
Пошаговая интеграция iOS
Подключитесь к вашему Back4app бэкенду из iOS приложения, используя Back4app iOS SDK.
Шаг 1: Установите Back4app iOS SDK
Добавьте Back4app SDK для вашего стека (например, npm, pubspec или менеджер пакетов).
Swift// Package.swift or CocoaPods // SPM: .package(url: "https://github.com/parse-community/Parse-Swift", from: "4.0.0") // Podfile: pod 'Parse'Шаг 2: Инициализируйте Back4app в вашем приложении
Инициализируйте Back4app SDK при запуске приложения с вашим App ID и URL сервера.
SwiftParse.initialize( configuration: ParseClientConfiguration { $0.applicationId = "YOUR_APP_ID" $0.clientKey = "YOUR_CLIENT_KEY" $0.server = "https://parseapi.back4app.com/" } )Шаг 3: Запросите все задачи
Используйте SDK для получения всех объектов Todo, отсортированных по приоритету.
Swiftfunc getTodos() async throws -> [PFObject] { let query = PFQuery(className: "Todo") query.order(byAscending: "priority") return try await query.findObjects() }Шаг 4: Создайте задачу
Создайте новую задачу Todo с заголовком, статусом выполнения и приоритетом, затем сохраните.
Swiftfunc createTodo(title: String, priority: Int = 3) async throws { let todo = PFObject(className: "Todo") todo["title"] = title todo["done"] = false todo["priority"] = priority try await todo.save() }Шаг 5: Обновление и удаление задач
Обновите поля и сохраните, или удалите объект.
Swift// Mark done func markDone(objectId: String) async throws { let query = PFQuery(className: "Todo") let todo = try await query.getObjectWithId(objectId) todo["done"] = true try await todo.save() } // Delete func deleteTodo(objectId: String) async throws { let query = PFQuery(className: "Todo") let todo = try await query.getObjectWithId(objectId) try await todo.delete() }
Интеграция управления состоянием
Интегрируйте SDK Back4app с уровнем состояния вашего приложения (например, контекстом, хранилищем или сервисами).
Полная модель данных
Скопируйте полную модель Todo для безопасной сериализации типов (например, класс, интерфейс или определение типа).
// Todo.swift — matches Back4app schema
struct Todo: Codable {
var objectId: String?
var title: String
var done: Bool
var dueDate: Date?
var priority: Int
var owner: Pointer<_User>?
var createdAt: Date?
var updatedAt: Date?
}
func toTodo(_ obj: PFObject) -> Todo {
Todo(
objectId: obj.objectId,
title: obj["title"] as? String ?? "",
done: obj["done"] as? Bool ?? false,
dueDate: obj["dueDate"] as? Date,
priority: obj["priority"] as? Int ?? 3,
owner: obj["owner"] as? Pointer<_User>,
createdAt: obj.createdAt,
updatedAt: obj.updatedAt
)
}Оффлайн-прежде и локальное хранилище данных
Используйте pin() и unpin(), чтобы данные были доступны в оффлайне и синхронизировались при возвращении в онлайн.
Поддерживаемые SDK включают локальное хранилище данных. Закрепите объекты Todo (или весь класс), чтобы сохранить их на устройстве; запрашивайте закрепленные данные в оффлайне. Когда приложение снова будет в сети, синхронизируйтесь с сервером.
Ниже: закрепите результаты после получения и снимите закрепление, когда вам больше не нужны локальные копии.
// After fetch, pin for offline
try? await PFObject.pinAll(todos)
// Query from local datastore
let query = PFQuery(className: "Todo").fromLocalDatastore()
query.order(byAscending: "priority")
let localTodos = try? await query.findObjects()
// Unpin
try? await PFObject.unpinAllObjects(inBackground: "Todo")Часто задаваемые вопросы
Распространенные вопросы о шаблоне бэкенда приложения Todo.
Готовы создать свое приложение Todo?
Начните свой проект iOS за считанные минуты. Кредитная карта не требуется.