Initial commit — Умный Байт landing
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
-- =====================================================
|
||||
-- 001_initial.sql — начальная схема БД для лендинга
|
||||
-- =====================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS admin_users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
login VARCHAR(64) UNIQUE NOT NULL,
|
||||
password_hash TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
last_login TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sections (
|
||||
id SERIAL PRIMARY KEY,
|
||||
key VARCHAR(64) UNIQUE NOT NULL,
|
||||
title TEXT NOT NULL,
|
||||
content_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
is_active BOOLEAN NOT NULL DEFAULT true,
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS products (
|
||||
id SERIAL PRIMARY KEY,
|
||||
slug VARCHAR(64) UNIQUE NOT NULL,
|
||||
title VARCHAR(128) NOT NULL,
|
||||
subtitle VARCHAR(256),
|
||||
description TEXT NOT NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'production',
|
||||
audience VARCHAR(32),
|
||||
icon_key VARCHAR(64),
|
||||
tags JSONB NOT NULL DEFAULT '[]'::jsonb,
|
||||
is_published BOOLEAN NOT NULL DEFAULT true,
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS approach_items (
|
||||
id SERIAL PRIMARY KEY,
|
||||
title VARCHAR(128) NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
icon_key VARCHAR(64),
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
is_active BOOLEAN NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
key VARCHAR(64) PRIMARY KEY,
|
||||
value TEXT NOT NULL,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_products_published_sorted
|
||||
ON products(is_published, sort_order) WHERE is_published = true;
|
||||
CREATE INDEX IF NOT EXISTS idx_sections_active_sorted
|
||||
ON sections(is_active, sort_order) WHERE is_active = true;
|
||||
CREATE INDEX IF NOT EXISTS idx_approach_active_sorted
|
||||
ON approach_items(is_active, sort_order) WHERE is_active = true;
|
||||
@@ -0,0 +1,70 @@
|
||||
-- =====================================================
|
||||
-- 002_seed.sql — начальный контент лендинга
|
||||
-- =====================================================
|
||||
|
||||
INSERT INTO sections (key, title, content_json, sort_order) VALUES
|
||||
('hero', 'Hero', '{
|
||||
"badge": "Принимаем проекты на 2026 год",
|
||||
"title_line_1": "Технологии,",
|
||||
"title_line_2": "которые решают",
|
||||
"title_accent": "реальные задачи",
|
||||
"description": "Разрабатываем цифровые продукты с AI для сельского хозяйства, частных домовладельцев, бизнеса и предпринимателей. От идеи до production.",
|
||||
"cta_primary": "Посмотреть продукты",
|
||||
"cta_secondary": "Обсудить проект",
|
||||
"stats": [
|
||||
{"value": "2", "label": "ФЛАГМАНСКИХ ПРОДУКТА"},
|
||||
{"value": "AI", "label": "В КАЖДОМ ПРОДУКТЕ"},
|
||||
{"value": "B2B", "label": "И B2C НАПРАВЛЕНИЯ"},
|
||||
{"value": "24/7", "label": "AI-АССИСТЕНТ"}
|
||||
]
|
||||
}'::jsonb, 1),
|
||||
('products_intro', 'Заголовок секции продуктов', '{
|
||||
"eyebrow": "НАШИ ПРОДУКТЫ",
|
||||
"title_line_1": "Решения, которые",
|
||||
"title_line_2": "уже работают",
|
||||
"description": "Каждый продукт — это ответ на реальный запрос рынка, проверенный нами в боевых условиях."
|
||||
}'::jsonb, 2),
|
||||
('approach_intro', 'Заголовок секции подхода', '{
|
||||
"eyebrow": "НАШ ПОДХОД",
|
||||
"title_line_1": "Не делаем «как у всех».",
|
||||
"title_line_2": "Делаем как надо."
|
||||
}'::jsonb, 3),
|
||||
('cta', 'CTA блок', '{
|
||||
"title": "Есть проект или идея?",
|
||||
"description": "Расскажите о задаче — обсудим как её решить и сколько это займёт.",
|
||||
"cta_primary": "Написать в Telegram",
|
||||
"cta_secondary": "hi@umbyte.ru"
|
||||
}'::jsonb, 4)
|
||||
ON CONFLICT (key) DO NOTHING;
|
||||
|
||||
INSERT INTO products (slug, title, subtitle, description, status, audience, icon_key, tags, sort_order) VALUES
|
||||
('agroto', 'АгроТО', 'CMMS для агропромышленности',
|
||||
'Учёт оборудования, регламентов ТО и истории обслуживания на агропредприятии. AI-ассистент «Тоша» помогает агроинженерам и автоматизирует заявки на закупку.',
|
||||
'production', 'B2B', 'agroto',
|
||||
'["Web SPA", "PostgreSQL", "AI Tools"]'::jsonb, 1),
|
||||
('smart-home', 'Умный Дом', 'ТО оборудования для частных лиц',
|
||||
'Мобильное приложение: сфотографировал наклейку — AI распознал модель, нашёл регламент и настроил напоминания. Котёл, фильтры, скважина, септик — всё в одном месте.',
|
||||
'development', 'B2C', 'smart-home',
|
||||
'["iOS", "Android", "AI Vision", "PWA"]'::jsonb, 2)
|
||||
ON CONFLICT (slug) DO NOTHING;
|
||||
|
||||
INSERT INTO approach_items (title, description, icon_key, sort_order) VALUES
|
||||
('От идеи до production',
|
||||
'Берём проект целиком: исследование, дизайн, разработка, инфраструктура, поддержка.',
|
||||
'clock', 1),
|
||||
('AI везде где нужно',
|
||||
'Не AI ради AI. Используем там, где он реально упрощает жизнь пользователю.',
|
||||
'sparkle', 2),
|
||||
('Реальный сектор',
|
||||
'Знаем как устроены сельское хозяйство, производство, частный быт — и решаем настоящие боли.',
|
||||
'grid', 3)
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO settings (key, value) VALUES
|
||||
('contact_email', 'hi@umbyte.ru'),
|
||||
('contact_telegram', 'https://t.me/umbyte_bot'),
|
||||
('company_name_short', 'Умный Байт'),
|
||||
('company_name_full', 'ООО «Умный Байт»'),
|
||||
('domain', 'umbyte.ru'),
|
||||
('region', 'Россия')
|
||||
ON CONFLICT (key) DO NOTHING;
|
||||
Reference in New Issue
Block a user