Внутренний шаблон приложения Todo App
React Native - схема, API и руководство по искусственному интеллекту
Готовая к производству схема бэкенда React Native Todo и Starter Kit на Back4app: ER-диаграмма, словарь данных, JSON-схема, игровая площадка API, JavaScript/React примеры нативного кода, offline-first pinning, а также подсказка AI Agent для развертывания в один клик за считанные минуты.
Основные выводы
На этой странице вы получите готовую к производству схему, подсказку AI в один клик и пошаговый React Native код - так что вы сможете создать приложение Todo без создания бэкенда.
- Развертывание за считанные минуты — Вставьте приглашение AI Agent и получите работающее приложение с фронтендом, бэкендом и базой данных.
- Безопасность по умолчанию — ACL на уровне строк гарантируют, что каждый пользователь видит только свои собственные задания.
- React Native-нативный SDK — Parse React Native SDK с async/await, локальным пиннингом и Live Queries из коробки.
- ОТДЫХ + GraphQL — Оба API генерируются автоматически; не нужно писать собственные конечные точки.
- Два класса — _User (встроенная авторизация) и Todo (задачи с заголовком, выполненные, срок выполнения, приоритет, владелец).
Что такое бэкэнд-шаблон React Native Todo App?
React Native Todo App Backend Template - это готовая к производству схема бэкенда, размещенная на Back4app. Она предоставляет вам два класса баз данных (_User и Todo), ACL на основе владения, REST и GraphQL API, а также подсказку AI Agent в один клик - так что вы можете подключить React Native приложение и отправить работающее Todo приложение с поддержкой офлайн за несколько минут, а не дней.
Лучшее для:
Обзор
Приложение Todo - одна из самых распространенных отправных точек для изучения бэкенд-разработки. Под капотом у него должны быть регистрация пользователей, CRUD задач, контроль доступа на основе прав собственности, а также синхронизация в реальном времени и поддержка офлайн.
В приведенной ниже схеме определены два класса - _User (встроенный) и Todo, - связанные указателем. С помощью Parse React Native SDK (Back4app) вы можете взаимодействовать с этим бэкендом непосредственно из вашего JavaScript или TypeScript кода - запрашивать, создавать, обновлять и удалять объекты, а также сохранять их для автономной работы - без написания собственного уровня API.
Почему стоит создать свой бэкэнд React Native Todo с помощью Back4app?
Back4app предоставляет вам готовый бэкэнд и Parse React Native SDK, чтобы вы могли сосредоточиться на UX и производительности, а не на REST-проводке и аутентификации.
- •Сначала оффлайн и синхронизация: Закрепите объекты Todo в локальном хранилище данных, чтобы список работал в автономном режиме и синхронизировался, когда приложение вернется в сеть - идеальный вариант для мобильных устройств.
- •Компоненты и крючки: Используйте SDK с React крючками и контекстом; поддерживайте состояние в синхронизации с Parse запросами и Live Queries для обновлений в реальном времени.
- •Кроссплатформенность, один бэкэнд: Одна и та же схема и API для iOS и Android; идеально подходит для команд React Native, использующих Expo или пустой рабочий процесс.
Идеально подходит для React нативных разработчиков, использующих Expo или голый рабочий процесс - один бэкенд, обе платформы.
Основные преимущества
Бэкенд Todo, готовый к производству, позволит вам ускорить процесс поставки и сосредоточиться на своем приложении.
Отправка быстрее, без внутреннего кода
API REST и GraphQL и готовая к использованию схема - подключите свое приложение и работайте.
Безопасность по умолчанию
ACL и разрешения на уровне классов, чтобы пользователи получали доступ только к своим собственным данным.
Обновления в режиме реального времени
Live Queries через WebSockets для мгновенного обновления пользовательского интерфейса.
Встроенная авторизация
Регистрация пользователей, вход в систему и работа с сессиями "из коробки" - без необходимости создания собственного слоя аутентификации.
Работает в автономном режиме
Локальная привязка позволяет сохранять данные в автономном режиме и синхронизировать их при повторном подключении.
Развертывание за считанные минуты
Используйте AI Agent для создания и развертывания приложения Todo на основе этого шаблона.
Готовы попробовать?
Агент искусственного интеллекта Back4app создаст бэкэнд вашего приложения Todo, подключит фронтэнд React Native и развернет его - все это можно сделать с помощью одного запроса.
Бесплатный старт - 50 подсказок AI Agent в месяц, не требуется кредитная карта
Технический стек
Все, что работает с этим шаблоном приложения Todo, можно увидеть с первого взгляда.
Диаграмма ER
Диаграмма "сущность-связь" для модели данных приложения React Native Todo.
Класс _User содержит objectId, имя пользователя, электронную почту, пароль, createdAt и updatedAt. Класс Todo содержит objectId, title, done, dueDate, priority, owner Pointer to _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: как ваше приложение React Native общается с Back4app - логин, затем запрос и создание тодо.
Просмотр источника диаграммы
sequenceDiagram
participant User
participant App as React Native App
participant Back4app as Back4app Cloud
User->>App: Login
App->>Back4app: Parse.User.logIn(username, password)
Back4app-->>App: Session token
App-->>User: Logged in
User->>App: Load todos
App->>Back4app: new Parse.Query('Todo').find()
Back4app-->>App: Array of Todo
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 с его _пользователем. Триггеры 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
}
}
}
]
}Построение с помощью агента искусственного интеллекта
Используйте Back4app AI Agent для создания реального приложения Todo на основе этого шаблона: он создаст фронтенд, бэкенд (схему, аутентификацию и API) и развернет его - никаких ручных настроек. В подсказке ниже описан стек Todo, чтобы агент мог создать готовое к производству приложение за один раз.
Create a Todo app on Back4app with this exact schema and behavior. Schema: 1. _User (use Back4app built-in): username (String, required), email (String, required), password (String, required); objectId, createdAt, updatedAt (system). 2. Todo: title (String, required), done (Boolean, default: false), dueDate (Date, optional), priority (Number, default: 3; 1=high, 2=medium, 3=low), owner (Pointer to _User; set to current user on create); objectId, createdAt, updatedAt (system). Security: - Set ACLs on every Todo so only the owner has read and write. No public read/write. - On create, set Todo.owner to the current user (e.g. via Cloud Code beforeSave or client-side). - Use Class-Level Permissions so only authenticated users can create/read/update/delete Todo. Auth: - Sign-up (username, email, password) and login; support logout/session. - After login, the app should only show and allow CRUD for the current user's todos. Behavior: - Full CRUD for Todo: create, list (only owner's), get one, update (toggle done, edit title, dueDate, priority), delete. - List todos with sort (e.g. by priority then dueDate or createdAt). Default priority for new todos: 3 (low). Deliver: - Create the Back4app app with the schema above, ACLs, and any Cloud Code needed (e.g. beforeSave on Todo to set owner). - Generate the frontend and connect it to this backend; deploy so the app is runnable end-to-end.
Нажмите кнопку ниже, чтобы открыть агента с предварительно заполненной подсказкой этого шаблона.
API Playground
Попробуйте конечные точки REST и GraphQL для схемы Todo. Ответы из примера данных выше - учетная запись Back4app не требуется.
Использует ту же схему Todo, что и этот шаблон.
Пошаговая интеграция React Native
Подключитесь к своему Back4app бэкенду из React Native приложения, используя Parse React Native SDK.
Шаг 1: Установите Parse React Native SDK
Добавьте Parse React Native SDK (или React-native-Parse) в свой проект с помощью npm или yarn.
JavaScriptnpm install parse --save # or: yarn add parseШаг 2: Инициализируйте Parse в вашем приложении
Инициализируйте Parse SDK в записи вашего приложения (например, App.js или index.js) с идентификатором приложения, URL-адресом сервера и ключом JavaScript.
JavaScriptimport Parse from 'parse/react-native'; Parse.setAsyncStorage(AsyncStorage); Parse.initialize('YOUR_APP_ID', 'YOUR_JS_KEY'); Parse.serverURL = 'https://parseapi.back4app.com';Шаг 3: Запросить все тодо
Создайте Parse Query для класса Todo, добавьте порядок возрастания по приоритету и вызовите find() (или findWithCount()).
JavaScriptasync function getTodos() { const query = new Parse.Query('Todo').ascending('priority'); const results = await query.find(); return results; }Шаг 4: Создайте тодо
Создайте новый Parse.Object('Todo'), установите название, выполненное и приоритет, затем вызовите save().
JavaScriptasync function createTodo(title, priority = 3) { const Todo = Parse.Object.extend('Todo'); const todo = new Todo(); todo.set('title', title); todo.set('done', false); todo.set('priority', priority); await todo.save(); return todo; }Шаг 5: Обновление и удаление тодо
Получите Todo по объектуId, установите поля и вызовите save() для обновления или destroy() для удаления.
JavaScriptasync function markDone(objectId) { const query = new Parse.Query('Todo'); const todo = await query.get(objectId); todo.set('done', true); await todo.save(); } async function deleteTodo(objectId) { const query = new Parse.Query('Todo'); const todo = await query.get(objectId); await todo.destroy(); }
Управление государством
Используйте React хуки (useState, useReducer, useContext) или небольшое хранилище для хранения состояния списка Todo и вызывайте Parse SDK.
Полная модель данных JavaScript/TypeScript
Скопируйте полный тип Todo и помощники для безопасной для типов сериализации с помощью Parse SDK.
/** @typedef {{ objectId?: string, title: string, done: boolean, dueDate?: string, priority: number, owner?: { objectId: string }, createdAt?: string, updatedAt?: string }} Todo */
/**
* @param {Parse.Object} obj
* @returns {Todo}
*/
function todoFromParse(obj) {
return {
objectId: obj.id,
title: obj.get('title'),
done: obj.get('done') ?? false,
dueDate: obj.get('dueDate')?.toISOString?.() ?? undefined,
priority: obj.get('priority') ?? 3,
owner: obj.get('owner') ? { objectId: obj.get('owner').id } : undefined,
createdAt: obj.get('createdAt')?.toISOString?.() ?? undefined,
updatedAt: obj.get('updatedAt')?.toISOString?.() ?? undefined,
};
}Оффлайн-первое и локальное хранилище данных
Используйте функции pinAll() и unpin, чтобы данные были доступны в автономном режиме и синхронизировались при возвращении в сеть.
В Parse React Native SDK поддерживается локальное хранилище данных. После получения объектов Todo закрепите их, чтобы список был доступен в автономном режиме; выполните тот же запрос с помощью функции fromLocalDatastore(), когда устройство находится в автономном режиме. Когда приложение вернется в сеть, сохраните изменения и синхронизируйте.
Ниже: прикрепляйте результаты после выборки и открепляйте, когда вам больше не нужны локальные копии.
// Pin todos after fetch (offline-first)
async function fetchAndPinTodos() {
const query = new Parse.Query('Todo').ascending('priority');
const results = await query.find();
await Parse.Object.pinAll(results);
// When offline, read from local datastore:
// const localQuery = new Parse.Query('Todo').fromLocalDatastore();
// const localResults = await localQuery.find();
}
async function unpinAllTodos() {
await Parse.Object.unpinAll('Todo');
}Часто задаваемые вопросы
Общие вопросы о шаблоне бэкенда приложения Todo.
Готовы создать свое приложение Todo?
Начните свой проект React Native за считанные минуты. Не требуется кредитная карта.