Введение: почему промты стали must-have для low-code разработчиков
Low-code и no-code платформы — Airtable, Bubble, Retool — уже не просто игрушки для бизнес-пользователей. По данным исследования Gartner 2025 года, к 2026 году более 65% новых приложений будут созданы с использованием low-code инструментов. Однако даже на таких платформах разработка требует времени: настройка формул, создание сложной логики, интеграция API. Именно здесь на помощь приходят промты — структурированные запросы к AI-моделям, которые генерируют готовые конфигурации, формулы и скрипты. В этой подборке — 15 проверенных промтов для трёх ключевых платформ: Airtable, Bubble и Retool. Каждый промт сопровождается примером использования и кодом, который можно скопировать и адаптировать.
Базовые промты для Airtable (5 промтов)
1. Создание формулы для расчёта срока выполнения задачи
Задача: Автоматически вычислять количество дней до дедлайна задачи с учётом выходных.
Промт:
Напиши формулу для Airtable, которая вычисляет количество рабочих дней между датой создания записи и датой дедлайна. Используй поле
Createdи полеDeadline. Игнорируй субботу и воскресенье. Выведи число в полеWorkingDays.
Пример результата:
IF(
AND({Deadline}, {Created}),
(
DATETIME_DIFF({Deadline}, {Created}, 'days') -
INT(DATETIME_DIFF({Deadline}, {Created}, 'weeks')) * 2 -
IF(
WEEKDAY({Created}) = 7, 1, 0
) +
IF(
WEEKDAY({Deadline}) = 7, 1, 0
)
),
BLANK()
)
Пояснение: Формула учитывает только будние дни, исключая полные недели и корректируя граничные дни. Подходит для трекинга проектов в CRM.
2. Автоматическая генерация уникального ID
Задача: Создать уникальный идентификатор для каждой записи на основе даты и порядкового номера.
Промт:
Создай формулу в Airtable, которая генерирует уникальный ID в формате
PROJ-YYYYMMDD-XXX, гдеXXX— порядковый номер записи за день. Используй полеCreatedи автоматическое полеRecord ID.
Пример результата:
"PROJ-" &
DATETIME_FORMAT({Created}, 'YYYYMMDD') & "-" &
RIGHT("000" & COUNT(
FILTER(
Records,
DATETIME_FORMAT({Created}, 'YYYYMMDD') = DATETIME_FORMAT(Created, 'YYYYMMDD')
)
), 3)
Пояснение: Используется COUNT и FILTER для подсчёта записей за день. ID удобно использовать в интеграциях с внешними системами.
3. Подсчёт суммы связанных записей через Rollup
Задача: В таблице «Заказы» нужно суммировать стоимость всех товаров из связанной таблицы «Товары».
Промт:
Настрой поле Rollup в Airtable для таблицы «Заказы». Связь с таблицей «Товары» через поле
Товары. Поле для суммирования —Цена. Используй агрегациюSUM.
Пример результата:
SUM(values)
Где values — это значения поля Цена из связанных записей.
Пояснение: Rollup — мощный инструмент для агрегации данных. В этом примере он заменяет ручной подсчёт.
4. Условное форматирование по статусу
Задача: Поле «Статус» должно автоматически окрашиваться в зависимости от значения: зелёный для «Выполнено», жёлтый для «В процессе», красный для «Просрочено».
Промт:
Настрой условное форматирование в Airtable для поля «Статус». Правила: если значение «Выполнено» — цвет зелёный, «В процессе» — жёлтый, «Просрочено» — красный. Напиши формулу для поля-помощника.
Пример результата:
IF(
{Статус} = "Выполнено", "green",
IF(
{Статус} = "В процессе", "yellow",
IF(
{Статус} = "Просрочено", "red",
"white"
)
)
)
Пояснение: В Airtable нет прямого условного форматирования, но через поле-помощник с формулой можно управлять цветом в интерфейсе.
5. Автоматическое создание задачи при добавлении клиента
Задача: При добавлении нового клиента в таблицу «Клиенты» автоматически создаётся задача в таблице «Задачи» с заголовком «Позвонить клиенту [Имя]».
Промт:
Настрой автоматизацию в Airtable (Automations). Триггер: when record matches conditions (поле
Созданоне пусто). Action: create record в таблице «Задачи». ПолеНазвание="Позвонить клиенту " & {Имя}. ПолеДата= сегодня.
Пример результата:
// Конфигурация автоматизации:
Trigger: When record is created in "Клиенты"
Action: Create record in "Задачи"
Title: "Позвонить клиенту " & {Имя}
Due Date: TODAY()
Status: "Открыта"
Пояснение: Airtable Automations позволяют строить простые бизнес-процессы без кода. Этот промт — основа для CRM-системы.
Продвинутые промты для Bubble (5 промтов)
6. Создание рабочего потока для отправки email через API
Задача: При нажатии кнопки «Отправить отчёт» на странице Bubble отправляется email с данными из базы.
Промт:
Создай workflow в Bubble: триггер — кнопка
SendReport. Используй плагин Bubble API Connector. Вызови POST-запрос кhttps://api.sendgrid.com/v3/mail/send. В теле запроса передай:personalizations[0].to[0].email= текущий пользователь,content[0].value= данные из поляReportData.
Пример результата:
Workflow: Button SendReport is clicked
Step 1: API Call to SendGrid
Method: POST
URL: https://api.sendgrid.com/v3/mail/send
Headers:
Authorization: Bearer API_KEY
Content-Type: application/json
Body:
{
"personalizations": [{"to": [{"email": "Current User's Email"}]}],
"from": {"email": "noreply@myapp.com"},
"content": [{"type": "text/plain", "value": "Report: " + ReportData}]
}
Пояснение: Bubble не имеет встроенной почты, но через API можно интегрировать любой сервис. Промт настраивает базовую отправку.
7. Динамическая фильтрация списка по категории
Задача: На странице Bubble список элементов должен фильтроваться при выборе категории из выпадающего списка.
Промт:
Настрой Repeating Group для отображения списка
Products. Добавь Dropdown с опциями из поляCategory. В workflow для Dropdown: установи состояниеSelectedCategory. В Repeating Group: источник данных —Search for Products: category = SelectedCategory.
Пример результата:
Elements:
Dropdown: Categories (data source: Products' Category)
Repeating Group: ProductList
Workflow:
When Dropdown Categories is changed
Set state SelectedCategory to Dropdown's value
Repeating Group's Data Source:
Search for Products: category = SelectedCategory
Sort by: Created Date descending
Пояснение: Использование состояний и поиска — стандартный паттерн для динамических списков в Bubble.
8. Авторизация через Google OAuth
Задача: Реализовать вход в приложение через Google-аккаунт.
Промт:
Настрой OAuth 2.0 в Bubble. Используй плагин Google Sign-In. В настройках приложения Google: укажи Redirect URI из Bubble. В Bubble: добавь кнопку «Войти через Google», workflow —
Sign in with Google. После успеха — перенаправь на Dashboard.
Пример результата:
Plugin: Google Sign-In (version 2.1+)
Setup:
Client ID: from Google Cloud Console
Redirect URI: https://myapp.bubbleapps.io/oauth/callback
Workflow:
When Button GoogleLogin is clicked
Sign in with Google
When signed in:
Navigate to page Dashboard
Пояснение: Bubble упрощает OAuth, но требует правильной настройки на стороне Google. Промт охватывает ключевые шаги.
9. Расчёт скидки с учётом купона
Задача: В корзине при вводе купона пересчитывается итоговая сумма.
Промт:
Создай workflow: при изменении поля
CouponCodeпроверь, существует ли купон в базеCoupons. Если да и не истёк, примени скидку (процент или фиксированную сумму). Обнови полеTotalPrice.
Пример результата:
Workflow: When CouponCode is changed
Step 1: Search for Coupons: code = CouponCode
Step 2: If result is not empty and expiration date > now:
Set state DiscountPercentage to Coupon's discount_percentage
Set state TotalPrice to OriginalPrice * (1 - DiscountPercentage / 100)
Step 3: Else:
Set state TotalPrice to OriginalPrice
Show alert "Coupon invalid"
Пояснение: Промт демонстрирует работу с условной логикой и внешними данными.
10. Создание чата в реальном времени
Задача: Реализовать простой чат между пользователями с обновлением без перезагрузки.
Промт:
Используй плагин Realtime API. Создай таблицу
Messagesс полями:Text,Sender,Timestamp. На странице чата: Repeating Group с источникомSearch for Messages, sorted by Timestamp descending. Добавь Input и кнопку «Отправить». Workflow: создай новую запись в Messages, затем обнови Repeating Group.
Пример результата:
Data type: Message
Fields: Text (text), Sender (user), Timestamp (date)
Page elements:
Repeating Group: ChatMessages (data source: Search Messages, sort by Timestamp)
Input: NewMessage
Button: Send
Workflow:
When Button Send is clicked:
Create a new Message:
Text: NewMessage
Sender: Current User
Timestamp: Current date/time
Reset Input NewMessage
Refresh Repeating Group ChatMessages
Пояснение: Для реального времени потребуется подписка на изменения, но базовая версия работает с ручным обновлением.
Экспертные промты для Retool (5 промтов)
11. SQL-запрос с динамическими параметрами из UI
Задача: В Retool сделать таблицу с заказами, где можно фильтровать по дате и статусу через датапикер и дропдаун.
Промт:
Создай ресурс PostgreSQL. Напиши SQL-запрос с параметрами
{{dateFrom}},{{dateTo}},{{status}}. Подключи к таблице. В UI добавь DatePicker и Dropdown. Запрос должен выполняться при изменении фильтров.
Пример результата:
-- SQL query in Retool:
SELECT * FROM orders
WHERE order_date BETWEEN {{dateFrom}} AND {{dateTo}}
AND ({{status}} = 'All' OR status = {{status}})
ORDER BY order_date DESC;
-- UI components:
DateRangePicker: id="dateRange"
Dropdown: id="statusFilter", options: ['All', 'Pending', 'Shipped', 'Delivered']
-- Event handlers:
On change of any filter -> trigger query "getOrders"
Пояснение: Retool автоматически экранирует параметры, предотвращая SQL-инъекции. Промт показывает типовую связку UI + запрос.
12. Кастомная анимация при загрузке данных
Задача: Показать спиннер или скелетон, пока данные загружаются.
Промт:
В Retool используй компонент
ProgressилиSpinner. Оберни контент в условный блок: если{{query.isLoading}}— покажи спиннер, иначе — данные.
Пример результата:
// Layout:
Container: MainContent
If {{query1.isLoading}}:
Spinner (size: large)
Else:
Table: data from query1
// Alternatively, use Skeleton component:
If {{query1.isLoading}}:
Skeleton (rows: 5)
Else:
Table: data from query1
Пояснение: Улучшает UX, особенно при медленных запросах. Retool предоставляет встроенные компоненты для этого.
13. Интеграция с внешним REST API и обработка ошибок
Задача: Вызвать внешний API (например, погодный сервис) и отобразить результат. Если API недоступен — показать fallback.
Промт:
Создай ресурс REST API. Настрой URL:
https://api.weather.gov/points/{{lat}},{{lon}}. В JS-трансформере обработай ответ: еслиdataпуст — верни{ error: true, message: "Service unavailable" }. В UI используй условный рендеринг.
Пример результата:
// Resource: WeatherAPI
URL: https://api.weather.gov/points/{{lat}},{{lon}}
Headers: User-Agent: MyRetoolApp/1.0
// Transformer:
if (!data) {
return { error: true, message: "Could not fetch weather data" };
}
return {
city: data.properties.relativeLocation.properties.city,
forecast: data.properties.forecast
};
// UI:
Container: WeatherInfo
If {{transformedData.error}}:
Text: "Weather service unavailable. Please try later."
Else:
Text: "City: {{transformedData.city}}"
Link: "View Forecast" -> {{transformedData.forecast}}
Пояснение: Обработка ошибок критична для продакшн-приложений. Промт включает пример с трансформером.
14. Генерация PDF-отчёта с данными из таблицы
Задача: Создать кнопку, которая генерирует PDF с данными из текущей таблицы.
Промт:
Используй плагин Retool PDF Generator. Выбери шаблон (HTML). Вставь переменные:
{{tableData}}— массив строк. Настрой кнопку: скачать PDF.
Пример результата:
// HTML template for PDF:
<h1>Order Report</h1>
<table>
<tr><th>ID</th><th>Customer</th><th>Amount</th></tr>
{{#each tableData}}
<tr><td>{{id}}</td><td>{{customer}}</td><td>{{amount}}</td></tr>
{{/each}}
</table>
// Button event:
When button "Download PDF" is clicked:
Run query "getOrders" (if not loaded)
Then: Generate PDF with template, save as "report.pdf"
Пояснение: PDF-генерация — частая задача в админ-панелях. Промт использует шаблонизацию Handlebars.
15. Двухуровневая авторизация с ролями
Задача: Ограничить доступ к страницам в зависимости от роли пользователя (admin, viewer).
Промт:
В Retool создай переменную
currentUserизcurrent_user.email. Создай таблицуrolesв БД. В настройках каждой страницы добавь условие:{{currentUser.role === 'admin'}}. Если нет — редирект на страницу логина.
Пример результата:
// Global variable:
const currentUser = {
email: current_user.email,
role: queryUserRole.data[0]?.role || 'viewer'
};
// Page permissions:
Page: AdminPanel
Access: {{currentUser.role === 'admin'}}
If denied: Navigate to "Unauthorized"
// Query for role:
SELECT role FROM user_roles WHERE email = {{current_user.email}}
Пояснение: Базовая, но надёжная схема разграничения доступа. Для продакшена стоит добавить JWT.
Заключение
Промты — это не просто подсказки для AI, а готовые решения, которые экономят часы работы. Airtable, Bubble и Retool охватывают разные уровни low-code: от управления данными до полноценных веб-приложений. Используйте эти 15 промтов как основу для своих проектов, адаптируя под конкретные задачи. Помните: даже на no-code платформах важно понимать логику — промты лишь ускоряют процесс, но не заменяют анализа. Экспериментируйте, комбинируйте и делитесь своими находками в комментариях!
Комментарии