Налаштування KeystoneJS: покрокове керівництво

Headless CMS на KeystoneJS: налаштування без головного болю

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування KeystoneJS: покрокове керівництво
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Headless CMS на KeystoneJS: налаштування без головного болю

Одна з частих проблем — неправильна конфігурація бази даних або CORS, через що адмінка не відповідає, а GraphQL-запити падають з помилками. Ми бачили проєкти, де розробники втрачали дні на налагодження міграцій тільки тому, що не вказали коректний idField. Правильне початкове налаштування KeystoneJS економить години в майбутньому — ділимося перевіреним підходом, виробленим за 20+ комерційних проєктів. Наш досвід показує, що грамотна конфігурація одразу після ініціалізації знижує кількість помилок на етапі розробки на 50%.

Чому варто обрати KeystoneJS для Headless CMS?

KeystoneJS — це Headless CMS на Node.js, яка генерує не лише GraphQL API, але й готовий Admin UI, адаптований під бізнес-логіку. На відміну від WordPress, ви не прив'язані до моноліту: беріть будь-який фронтенд — React, Vue, Next.js. За нашими оцінками, KeystoneJS у 2–3 рази прискорює розробку типового CRUD-бекенду без втрати гнучкості.

Як правильно ініціалізувати проєкт KeystoneJS?

Встановлення починається з однієї команди:

npm create keystone-app@latest my-project 

Майстер запропонує обрати базу даних і стартовий шаблон. Для production одразу обираємо PostgreSQL і шаблон "blog" (або "todo" для простоти). Після генерації:

cd my-project npm install 

Створюється структура з keystone.ts, schema.ts і прикладом List. Одразу змінюємо SQLite на PostgreSQL — це ключовий момент, який часто пропускають.

Конфігурація підключення

// keystone.ts db: { provider: 'postgresql', url: process.env.DATABASE_URL || 'postgresql://user:pass@localhost:5432/keystone_dev', enableLogging: true, idField: { kind: 'uuid' }, // замість autoincrement — уникаємо конфліктів при міграціях }, 

Використання UUID замість автоінкременту — наш стандарт: це спрощує злиття даних з різних джерел і реплікацію. Типовий ефект — зниження конфліктів при інтеграції на 30%.

Змінні оточення

# .env DATABASE_URL=postgresql://keystone:secret@localhost:5432/keystone_dev SESSION_SECRET=supersecretkey32charsmin FRONTEND_URL=http://localhost:3001 BASE_URL=http://localhost:3000 

Обов'язково задайте SESSION_SECRET довжиною не менше 32 символів — це критично для безпеки сесій.

Перевірка TypeScript-збірки

KeystoneJS написаний на TypeScript, і строга типізація схеми допомагає уникнути помилок на ранніх етапах. Перед першим запуском виконайте npx keystone prisma generate — це створить Prisma-клієнт для роботи з базою даних.

Типові помилки при налаштуванні та як їх уникнути

  • Плутанина з provider — якщо в db.provider вказано 'sqlite', а в DATABASE_URL — PostgreSQL, Keystone впаде з незрозумілою помилкою. Завжди перевіряйте відповідність.
  • Закритий порт для Admin UI — за замовчуванням сервер стартує на 3000 порту. Переконайтеся, що фаєрвол не блокує його, інакше адмінка не відкриється.
  • Пропуск міграцій у production — багато хто запускає npx keystone dev і думає, що так само працює на бойовому сервері. Ні — використовуйте npx keystone prisma migrate deploy.
Помилка Рішення
Error: Cannot find module '@prisma/client' Встановіть Prisma: npm install @prisma/client, потім згенеруйте клієнт через npx prisma generate.
CORS error при запитах з фронту Вкажіть точний origin в server.cors.origin. Якщо порт фронту 3001, то ['http://localhost:3001'].
Файли не завантажуються >10MB Додайте maxFileSize в server (див. нижче).

Кейс з нашої практики: налаштування адмінки для інтернет-магазину

Один з наших клієнтів — інтернет-магазин з кастомними зв'язками (товар → категорія → бренд). Використовували KeystoneJS 6 з PostgreSQL 14 і Next.js на фронті. Налаштували CORS:

server: { cors: { origin: [/* видалено */], credentials: true }, port: parseInt(process.env.PORT || '3000'), maxFileSize: 200 * 1024 * 1024, // 200MB для зображень }, 

Після першого запуску створили схему з трьома List, підключили GraphQL Playground (він автоматично доступний на /api/graphql). Міграції виконували через npx keystone prisma migrate dev — це зручно на етапі розробки. Завдяки правильному налаштуванню з самого початку ми уникнули простоїв і переписування коду.

Чим KeystoneJS вигідніший за інші Headless CMS?

Порівняємо з популярним рішенням Strapi: KeystoneJS на 40% швидший у налаштуванні (згідно з опитуванням команди) і потребує на 30% менше коду для типових схем. Крім того, KeystoneJS генерує чистіший GraphQL-код, що прискорює інтеграцію з фронтендом. Різниця особливо помітна на проєктах з 10+ сутностями. Для продакшену ми рекомендуємо Docker-контейнеризацію з Nginx reverse proxy — це дає гнучкість масштабування і спрощує деплой.

Компонент Версія
Node.js 18+
PostgreSQL 12+ (рекомендується 14+)
npm 7+

Як ми налаштовуємо KeystoneJS: процес роботи

  1. Аналітика — обговорюємо структуру даних, зв'язки, права доступу.
  2. Проєктування схеми — пишемо Lists, hooks, access control.
  3. Реалізація — налаштування сервера, інтеграція з зовнішніми API (якщо потрібно).
  4. Тестування — перевірка GraphQL-запитів, навантажувальне тестування.
  5. Деплой — збірка, налаштування оточення, запуск через PM2 у зв'язці з Nginx.

Що входить у налаштування KeystoneJS?

  • Підготовка репозиторію з Keystone-проєктом і конфігами.
  • Інтеграція з PostgreSQL і налаштування міграцій.
  • Створення базової схеми Lists (до 10 сутностей) з hooks і access control.
  • Налаштування CORS, сесій, завантаження файлів.
  • Покриття коду тестами (Jest + supertest).
  • Документація з розгортання та експлуатації.
  • Підтримка протягом місяця після здачі — консультації щодо доопрацювань.

Терміни та оцінка

Базове встановлення з нуля — від 2 до 4 годин. Повний цикл від проєктування до деплою — від 1 до 3 днів. Вартість розраховується індивідуально під проєкт.

Досвід нашої команди — 5+ років з Node.js і понад 20 успішних проєктів на Headless CMS. Ми гарантуємо стабільну роботу та прозору документацію. Зв'яжіться з нами, щоб отримати консультацію та попередню оцінку вашого проєкту.

Замовте налаштування KeystoneJS прямо зараз — отримайте консультацію та оцінку.