Разработка внутреннего инструмента на NocoDB (no-code база данных)
NocoDB превращает существующую реляционную базу данных (PostgreSQL, MySQL, SQLite) в Airtable-подобный интерфейс. Главное отличие от Baserow — NocoDB подключается к уже существующей БД и отображает реальные таблицы, а не создаёт отдельное хранилище.
Ключевые преимущества
- Подключается к существующей PostgreSQL/MySQL — данные остаются там
- Open-source (AGPL), self-hosted
- Spreadsheet-интерфейс для нетехнических сотрудников над production-данными
- REST и GraphQL API из коробки
- Формы для сбора данных без кода
Установка
# Docker
docker run -d \
--name nocodb \
-v nocodb_data:/usr/app/data \
-p 8080:8080 \
nocodb/nocodb:latest
# С подключением к внешней PostgreSQL
docker run -d \
-e NC_DB="pg://host:port?u=user&p=password&d=database" \
-p 8080:8080 \
nocodb/nocodb:latest
Подключение к production PostgreSQL
После запуска NocoDB → Add Connection → PostgreSQL:
Host: 10.0.1.50
Port: 5432
Database: app_production
User: nocodb_readonly
Password: ****
Schema: public
NocoDB автоматически импортирует все таблицы схемы. Для таблиц с FK отображаются связи (Link to another record).
Важно: создать отдельного readonly-пользователя для таблиц, которые не должны редактироваться:
-- Только просмотр для большинства таблиц
GRANT SELECT ON ALL TABLES IN SCHEMA public TO nocodb_readonly;
-- Разрешить редактирование только для конкретных таблиц
GRANT SELECT, INSERT, UPDATE ON customer_notes TO nocodb_rw;
GRANT SELECT, UPDATE ON users TO nocodb_rw;
REST API NocoDB
# NocoDB автоматически генерирует API для каждой таблицы
# Swagger UI: http://localhost:8080/api/v1/meta/tables/TABLE_ID
# Список записей с фильтром
GET /api/v1/db/data/noco/{PROJECT_ID}/{TABLE_ID}?where=(status,eq,active)&limit=25&offset=0
# Создать запись
POST /api/v1/db/data/noco/{PROJECT_ID}/{TABLE_ID}
{"name": "Иван", "email": "[email protected]", "status": "new"}
# Bulk update
PATCH /api/v1/db/data/bulk/noco/{PROJECT_ID}/{TABLE_ID}
[{"id": 1, "status": "processed"}, {"id": 2, "status": "processed"}]
Формы для сбора данных
NocoDB позволяет создать публичную форму из любой таблицы — по ссылке пользователь заполняет форму, данные записываются в таблицу. Полезно для:
- Заявок от клиентов (внешняя форма → таблица leads)
- Форм для сотрудников (отчёты, запросы)
- Сбора обратной связи
Автоматизация через Webhook
// NocoDB Webhook → ваш сервер при изменении строки
app.post('/hooks/nocodb/leads', async (req, res) => {
const { type, data } = req.body;
if (type === 'records.after.insert') {
const lead = data.insertedRows[0];
// Создать контакт в CRM
await crmApi.createContact({
email: lead.Email,
name: lead.Name,
phone: lead.Phone
});
// Уведомить менеджера в Telegram
await telegramBot.sendMessage(MANAGER_CHAT_ID,
`Новая заявка от ${lead.Name} (${lead.Email})`
);
}
res.sendStatus(200);
});
Сроки
Подключение к существующей БД + настройка прав + первые интерфейсы — 1–2 дня.







