Одностраничный сайт о пяти уровнях участия в Сообществе ТЕОРА. Без внешних зависимостей: статические файлы отдаёт минимальный Node-сервер.
├── server.js # статический сервер (слушает process.env.PORT)
├── package.json # start: node server.js
└── public/
├── index.html # главная страница
├── styles.css # тёмная тема, спектр тёплый→фиолетовый
├── app.js # ⚙ КОНФИГ УРОВНЕЙ + вся логика
├── impressum.html # шаблон (заполнить)
├── datenschutz.html # шаблон (заполнить)
├── favicon.svg
├── og-image.svg
└── robots.txt
Всё содержимое уровней — в начале файла public/app.js, массив LEVELS.
Меняете price, phrase, idea, desc, features — карта, карточки,
таблица сравнения и блок стоимости обновятся автоматически.
link у каждого уровня (сейчас якорь #join).
Подставьте туда ссылку Stripe/формы регистрации.FAQ. «Где я сейчас» — массив CHOOSE.
Строки таблицы сравнения — массив COMPARE_ROWS.npm start # → http://localhost:3000
Node ≥ 18. Установка зависимостей не требуется.
npm install и npm start.
Порт берётся из process.env.PORT автоматически — настраивать ничего не нужно.Если Railway попросит явную команду запуска — укажите
npm start.
Клики по CTA и уровням пишутся в window.dataLayer через функцию track()
в app.js. Чтобы подключить GA4 / Plausible / Matomo — добавьте их вызов
внутри track(). Для отладки в консоли: window.DEBUG_ANALYTICS = true.
impressum.html и datenschutz.html реальными данными.LEVELS[].link.og:url / canonical в index.html (сейчас teora.community).