DaydreamMods

DaydreamMods

Контент сайта

Какие тексты живут в базе и что останется в коде, если базу не трогать.

Публичные тексты миров, новостей, вопросов, ссылок и юридических страниц читаются из PostgreSQL. Если база недоступна, страницы показывают запасной каталог из packages/trpc/src/catalog.ts. Этот каталог — не второй источник правды для прода. После сида правят админку.

Сборка на сайте

Игрок видит то, что сохранено в projects: название, краткое описание на карточке, полное описание в шапке страницы, расширенный текст, списки особенностей и механик, системные требования, баннер, логотип, скриншоты, статус (черновик, скоро, доступна, архив), флаг публикации. Неопубликованная сборка в каталог не входит.

Адреса картинок — либо загруженный /uploads/…, либо внешний URL. Пустой баннер не ломает страницу, просто нет кадра.

Версии на странице мира — только опубликованные, с датой и changelog. Кнопка скачивания самой страницы мира нет: скачивание в кабинете, чтобы не обходить проверку подписки.

Новости

Одна таблица news_posts. Нет отдельных разделов «девлог» и «анонсы»: хештег можно написать в карточке, но лента общая. Скрытие — поле публикации, строка не удаляется.

Ресурсы и FAQ

social_resources: заголовок, ссылка, порядок, активность, логотип. Неактивная ссылка на /socials не рисуется. Заголовок и абзац над карточками — настройки socials_title и socials_intro, не поля каждой карточки.

faq_items: вопрос, ответ, порядок, публикация. Тот же список на поддержке и, частично, на странице сборок.

Вакансии

Должности сидируются: разработчик, 2D, 3D, контент, модератор Discord, модератор Telegram, поддержка. У каждой краткое описание, обязанности и требования. Форма заявки не просит выбрать должность второй раз: она уже известна с кнопки.

Документы

legal_documents. Если в тексте есть HTML-теги из редактора, страница /legal/… рисует их как разметку и вырезает script. Обычный текст без тегов показывается как есть, с переносами строк.

Подвал ссылается на оферту, конфиденциальность, персональные данные, условия и возврат. Перед оплатой на checkout есть согласие и те же документы.