Skip to content

Latest commit

 

History

663 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Web Holy Grail

Начните с визитки. Вырастите во что угодно.

Архитектурный фундамент для self-hosted сайтов, которые растут. Стек, структура проекта и правила развития уже определены — не вы выбираете между Next/Astro/Remix или Strapi/Sanity/Payload, не вы изобретаете границы между фронтом и CMS. Решения зафиксированы — фокусируйтесь на продукте.

Сайты редко умирают из-за технологий. Они умирают из-за того, что были построены как временное решение. WHG даёт фундамент, чтобы начать маленьким и расти без переписывания через год.

License: MIT

Что это и зачем — docs/whg/00-overview.md · README in English · README на русском

Quick start

gh repo create my-site --template Vovanda/WebHolyGrail --private --clone
cd my-site && corepack enable && pnpm install
./dev-setup.sh
./dev.sh

Открывается http://localhost:3000 (сайт), http://localhost:3001/admin (CMS).

Кроме Node и pnpm ничего не нужно: настройки лежат в .env.local, а залитые файлы CMS хранит у себя и сама раздаёт. Докер и хранилище секретов подключаются, когда настройки становятся общими на команду:

./dev-setup.sh --shared       # Infisical + локальное хранилище файлов в докере

Внешнее хранилище на стенде включается строками S3_* в .env.local - пояснение лежит там же.

Стек

Слой Выбор
Frontend Next.js 15 (App Router) + React 19
UI shadcn/ui + Tailwind + CSS-токены
CMS Payload 3.x (TypeScript-first, админка на русском)
Database SQLite / Postgres (адаптер одной строкой)
Contracts contracts/ workspace (one-way seam)
Containers Docker compose + blue-green в проде
Storage своё на стенде, S3-совместимое на боевом сайте
Secrets .env.local на стенде, Infisical на боевом сайте
Tests Vitest + Playwright (scaffolded; coverage WIP)
Video Своя раздача: нарезка ffmpeg, шифрование, плеер

Обоснование выбора каждого слоя — docs/whg/15-vision.md.

Видео живёт на самом сайте

Записи лежат в вашем хранилище и играют без сторонних площадок. Загруженный файл режется на короткие куски сразу в нескольких качествах, куски шифруются, обложка берётся кадром из середины. Закрыть или открыть запись можно в любую секунду: меняется только то, кому сервер выдаёт ключ, а перенарезки не требуется.

Плеер умеет то, к чему зритель привык: субтитры несколькими языками, оглавление главами, кадры-подсказки при перемотке, ссылку с таймкодом, продолжение с места остановки и уголок при прокрутке страницы. Доступ к закрытому даётся кодом, который владелец выдаёт сам.

Подробно — docs/whg/39-video.md.

Структура

.
├── src/
│   ├── client/                # Next.js 15 app
│   └── cms/                   # Payload 3.x app
├── contracts/                 # shared types (client/cms → contracts)
├── deploy/{local,prod,proxy-stack}/
├── scripts/                   # setup-infisical, sync-template
└── docs/whg/                  # документация

Детали — docs/whg/32-structure.md.

Docs

File What
00-overview.md Категория, боль которую закрывает, что в коробке
15-vision.md Stack rationale: почему именно эти выборы
30-philosophy.md R-rules R1-R9
32-structure.md Структура монорепо, growth models, project types
37-scaffolding.md Создание нового сайта (gh template → Infisical → dev)
45-data-location.md Где живут значения — Payload / Infisical / код
stack/ Per-component reference

License

MIT

About

Начните с landing — вырастите во что угодно. Self-hosted фундамент на Next 15 + Payload 3

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages