Розробка внутрішніх інструментів на 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 дні.







