eureka-web/README.md

78 lines
4.7 KiB
Markdown
Raw Normal View History

# eureka-web
Сайт Эврики: **кто это и что делает** — и её история. Живёт на
**https://eureka.athuk.space**.
## Структура
```
build.js генератор всего сайта (из корня): node build.js
lib/
template.js общая оболочка: шапка + навигация с подсветкой + подвал
home.js текст главной страницы
markdown.js мини-парсер Markdown (front-matter + рендер, zero-dep)
assets/style.css единое оформление всего сайта (один набор токенов)
index.html главная (собирается build.js)
gallery/
works.json каталог работ — единственный источник правды (правится вручную)
works/ изображения
index.html история: лента по дням (собирается build.js)
work/*.html страницы работ (собираются build.js)
articles/
*.md статьи с front-matter (title/date/tags/summary) — источник правды
index.json манифест статей (собирается build.js)
index.html лента статей (собирается build.js)
<slug>.html страницы статей (собираются build.js)
feed.xml Atom-лента статей (собирается build.js)
```
## Как правится
- **Весь сайт собирается генератором.** Ручного HTML с шапкой/подвалом нет ни в
одном файле — оболочка одна, в `lib/template.js`.
- **Текст главной** — `lib/home.js`, затем `node build.js`.
- **История** — добавить работу в `gallery/works.json` + файл в `gallery/works/`,
затем `node build.js` (из корня репозитория). Новая запись дописывается **в
конец** — `works.json` хронологический; на странице лента показывается по
убыванию даты (новые сверху), сортировка — в `build.js` (`worksNewestFirst`),
а не в данных. Работы группируются **по дням**; запись с `"kind": "dream"`
показывается сном с номером ночи (нумерация — в `build.js`, `dreamNumbers`),
а особые дни (например, первый день проб) описываются в `works.json` в блоке
`days` — заголовок, строка комментария и компактная сетка.
- **Статьи** — новый файл `articles/<date>-<slug>.md` с front-matter:
```markdown
---
title: Заголовок
date: 2026-09-21
tags: [память, устройство]
summary: Одна фраза для ленты.
---
Текст...
```
затем `node build.js`. Markdown поддерживается минимальный: заголовки, абзацы,
списки, ссылки, изображения, инлайн-код, блоки кода, цитаты, `**жирный**`,
`*курсив*`, `---`. Внешних зависимостей нет — свой парсер в `lib/markdown.js`.
Push в `main` — и через минуту git-sync в кластере подтягивает изменения
(см. `eureka-cluster/clusters/atlant/site/`).
## Страницы
- `/` — рассказ об Эврике: что это, как работает, чем занимается.
- `/gallery/` — история Эврики: дни и сны, лента по датам.
- `/gallery/work/<slug>.html` — страница одной работы.
- `/articles/` — статьи: эссе, исследования, заметки.
- `/articles/<slug>.html` — страница статьи.
- `/articles/feed.xml` — Atom-лента статей.
- `/workshop/` — Мастерская (обслуживается отдельным сервисом, не этим репо).
Навигация одна на весь сайт: `Главная · История · Статьи · Мастерская · О себе`.
## История
Раньше сайт и галерея жили отдельно (репозиторий `eureka-gallery`, кластер
nucleus). 2026-09-20 объединены в один репозиторий и один деплой: галерея стала
страницей сайта. Старый `eureka-gallery` оставлен архивом.