type: standard
aspect: process
title: "Стандарт инициализации проекта (Project Bootstrap)"
version: 1.0.0
date: 2026-02-19
status: active
Версия: 1.0.0
Дата: 2025-12-10
Уровень: У1 (Правила)
Вытекает из: ../structure/PROJECT.md
Проект = Код + Данные + Документация + Входящие
При создании проекта автоматически создаются все компоненты
| Компонент | Назначение | URL |
|---|---|---|
| NocoDB база | Данные проекта | docs.0kt.ru:8085 |
| PostgreSQL схема | SQL-доступ | порт 5432 |
| Документация | Веб-просмотр .md | docs.0kt.ru/{project}/ |
| Входящие | Загрузка файлов | upload.0kt.ru/{project}/ |
{project}/ ← В WORKSPACE (код + документация)
├── CLAUDE.md ← Контекст (ОБЯЗАТЕЛЬНО)
├── index.yaml ← Мастер-файл с URL-ами (ОБЯЗАТЕЛЬНО)
├── PROJECT.md ← Описание проекта
│
├── _shared/ ← ДАННЫЕ (обработанные, ссылки на Hub)
│ ├── products/
│ ├── prices/
│ └── ...
│
├── management/ ← УПРАВЛЕНИЕ
│ ├── TODO.md
│ ├── STATUS.md
│ └── CHANGELOG.md
│
└── ... ← Остальное по типу проекта
Hub (S3): ← НА HUB (данные + входящие)
$DATASPACE/projects/{project}/
├── _inbox/ ← ВХОДЯЩИЕ (upload.0kt.ru/{project}/)
│ └── (загруженные файлы)
│
├── products/ ← Товары, изображения
├── prices/ ← Прайсы поставщиков
└── ... ← Другие данные
Принцип: Workspace = код, Hub = данные
| Правило | Описание |
|---|---|
| Одна база на проект | {project}_data — данные бизнеса |
| Дополнительная по запросу | {project}_app — для приложения |
| URL | http://docs.0kt.ru:8085/dashboard/#/nc/{base_id} |
| Правило | Описание |
|---|---|
| Один инстанс | Общий PostgreSQL (внутри NocoDB) |
| Схема на проект | CREATE SCHEMA {project} |
| Доступ | host: 91.218.142.168, port: 5432 |
NocoDB
├── _platform ← Системная (метаданные платформы)
├── pirotehnika_data ← Данные бизнеса
├── pirotehnika_app ← Для приложения (опционально)
├── lideravto_data ← Данные бизнеса
└── {project}_data ← Новые проекты
PostgreSQL
├── nocodb ← Системная схема
├── pirotehnika ← Схема проекта
├── lideravto ← Схема проекта
└── {project} ← Новые проекты
| URL | Назначение |
|---|---|
docs.0kt.ru/ |
Индекс всех проектов |
docs.0kt.ru/{project}/ |
Индекс документов проекта |
docs.0kt.ru/{project}/CLAUDE.md |
Конкретный документ |
| Файл | Автоматически |
|---|---|
| CLAUDE.md | Да |
| PROJECT.md | Да |
| management/*.md | Да |
| _shared/*/.md | Да |
| Все .md в проекте | Да |
Папка для загрузки любых файлов на обработку:
- Прайсы от поставщиков
- Накладные
- Скриншоты
- Документы
- Любые файлы
На Hub (S3): $DATASPACE/projects/{project}/_inbox/
| Способ | URL/Путь |
|---|---|
| Веб-форма | upload.0kt.ru/{project}/ |
| Файловая система | $DATASPACE/projects/{project}/_inbox/ |
| Правило | Описание |
|---|---|
| Хранение на Hub | Централизованно, доступно со всех серверов |
| Временное хранение | Файлы обрабатываются и удаляются/перемещаются |
| Любой формат | xlsx, pdf, png, csv, zip — без ограничений |
| Лимит | 500 MB на файл |
1. Оператор загружает файл через upload.0kt.ru/pirotehnika/
2. Оператор: "обработай прайс из inbox"
3. Claude:
- Смотрит $DATASPACE/projects/pirotehnika/_inbox/
- Находит price_jf.xlsx
- Обрабатывает → Hub/prices/jf/
- Удаляет из _inbox/
# {project}/index.yaml — МАСТЕР-ФАЙЛ ПРОЕКТА
name: pirotehnika
type: BUSINESS
version: 2.0.0
status: active
created: 2025-12-10
# === ДАННЫЕ ===
data:
nocodb:
base_id: pt7k98pv0fwi1el
base_name: pirotehnika_data
url: http://docs.0kt.ru:8085/dashboard/#/nc/pt7k98pv0fwi1el
tables:
- Products
- Categories
- Prices
- Orders
postgres:
schema: pirotehnika
host: 91.218.142.168
port: 5432
tables:
- products
- orders
# === ДОКУМЕНТАЦИЯ ===
docs:
web_url: http://docs.0kt.ru/pirotehnika/
files:
- path: CLAUDE.md
url: http://docs.0kt.ru/pirotehnika/CLAUDE.md
- path: PROJECT.md
url: http://docs.0kt.ru/pirotehnika/PROJECT.md
- path: management/TODO.md
url: http://docs.0kt.ru/pirotehnika/management/TODO.md
# === ВХОДЯЩИЕ ===
inbox:
upload_url: http://upload.0kt.ru/pirotehnika/
view_url: http://docs.0kt.ru/pirotehnika/_inbox/
path: _inbox/
# === СВЯЗИ ===
related:
- infra/@nocodb.app
- infra/@beget-s3.storage
При создании или показе документов/таблиц — давать кликабельные ссылки.
ВЫПОЛНЕНО:
• Создано: pirotehnika/_shared/products/catalog.md
→ http://docs.0kt.ru/pirotehnika/_shared/products/catalog.md
• Обновлено: management/TODO.md
→ http://docs.0kt.ru/pirotehnika/management/TODO.md
• Таблица: Products (4626 записей)
→ http://docs.0kt.ru:8085/dashboard/#/nc/pt7k98pv0fwi1el/table/Products
• Входящие: обработан price_jf.xlsx
→ http://docs.0kt.ru/pirotehnika/_inbox/
| Действие | Ссылка |
|---|---|
| Создал .md файл | → docs.0kt.ru/... |
| Изменил .md файл | → docs.0kt.ru/... |
| Работал с таблицей NocoDB | → docs.0kt.ru:8085/... |
| Обработал файл из inbox | → upload.0kt.ru/... |
| Показал структуру проекта | → docs.0kt.ru/{project}/ |
./scripts/create-project.sh {name} {type}
# Примеры:
./scripts/create-project.sh newshop BUSINESS
./scripts/create-project.sh @analytics.service CODE
{project}_data в NocoDB (API){project} в PostgreSQL✓ Проект newshop создан
Доступ:
• Документация: http://docs.0kt.ru/newshop/
• Загрузка: http://upload.0kt.ru/newshop/
• База NocoDB: http://docs.0kt.ru:8085/dashboard/#/nc/{base_id}
• PostgreSQL: schema: newshop @ 91.218.142.168:5432
# 1. Создать inbox
mkdir -p pirotehnika/_inbox
echo '*' > pirotehnika/_inbox/.gitignore
echo '!.gitignore' >> pirotehnika/_inbox/.gitignore
echo '!README.md' >> pirotehnika/_inbox/.gitignore
# 2. Обновить index.yaml — добавить секции data:, docs:, inbox:
# 3. База уже есть (pt7k98pv0fwi1el)
# 4. Создать схему PostgreSQL
psql -h 91.218.142.168 -U nocodb -c "CREATE SCHEMA IF NOT EXISTS pirotehnika;"
# 5. Проверить docs.0kt.ru/pirotehnika/
Версия: 1.0.0