Здесь собраны все сайты, сервисы и боты xRoyse: от платформы статей и тренажёра печати до ИИ-агента, сделанного на хакатоне для Союза машиностроителей. Каждый проект живёт в своей папке, на своём поддомене *.xroyse.ru и со своим процессом PM2, а общая у них одна инфраструктура: nginx, аналитика и блог-портфолио, где выходят новости о запусках.
Tip
Нажмите на баннер, чтобы открыть подробный README проекта: что он умеет, как устроен, как запустить и какие переменные окружения нужны.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Проект | Папка | Что это | Сервер | Статус | |
|---|---|---|---|---|---|
| 01 | Node&Thought | news/ |
платформа статей об IT: редактор, модерация, парсер Habr | news-api :3004 |
|
| 02 | CloudFrame | CloudFrame/ |
фотохостинг с альбомами и уровнями доступа | cloudframe-api :3005 |
|
| 04 | Morph | Morph/ |
сжатие, конвертация и обработка изображений в браузере | morph-api :3001 |
|
| 07 | ClickHit | clickhit/ |
тренажёр слепой печати с уроками и аккаунтами | clickhit-api :3006 |
|
| 08 | Znay | Znay/ |
учебные карточки и обмен колодами по ссылке | znay :3002 |
|
| ⌂ | xroyse.ru | main/ |
портфолио, лаунчер и блог «Аномалии» | статика | |
| ∑ | Analytics | admin/ |
трекер и панель аналитики для всех сайтов | xroyse-analytics-api :8787 |
|
| ⚙ | Промкооперация | sm01/ |
ИИ-подбор поставщиков и покупателей для заводов | docker compose |
|
| ♡ | Love | love/ |
приложение для пары: свидания, история, галерея | love :4000 |
|
| A1 | DewinBot | dewinbot/ |
сайт Telegram-бота для конференций | dewinbot-api :3007 |
|
| A2 | Dewin Digital | dewindigital/ |
сайт студии разработки и дизайна | статика | |
| A3 | TypeFlow | archive/typeflow/ |
первая версия тренажёра, выросла в ClickHit | — |
В лаунчере на xroyse.ru ещё четыре карточки с лентой «В разработке»: Snip (сокращатель ссылок), Vote (опросы), Budge (трекер расходов с ИИ) и ScanText (OCR-бот). Для поддоменов, где проект ещё не готов, есть заглушка dev/development.html.
flowchart TB
V(("Посетитель")) --> N["nginx · HTTPS<br/>*.xroyse.ru"]
N --> ST["Статика<br/>main · dewindigital · dev"]
N --> DI["Сборки dist/<br/>news · clickhit · morph · love · admin"]
N -- "/api/" --> P
N --> SM["sm01<br/>docker compose"]
subgraph P["PM2"]
direction LR
A1["news-api"] ~~~ A2["clickhit-api"] ~~~ A3["znay"] ~~~ A4["morph-api"]
A5["cloudframe-api"] ~~~ A6["love"] ~~~ A7["dewinbot-api"] ~~~ A8["analytics-api"]
end
P --> SQ[("SQLite<br/>news · clickhit · znay · morph<br/>analytics · dewinbot")]
P --> JS[("JSON<br/>cloudframe")]
P --> RD[("Redis<br/>love")]
SM --> PG[("PostgreSQL + Redis<br/>каталог · заявки · цепочки")]
ST -.->|tracker.js| A8
DI -.->|tracker.js| A8
A8 -.->|только чтение| SQ
pie showData
title Строк кода по языкам
"HTML" : 26677
"TypeScript" : 25938
"CSS и Sass" : 19891
"JavaScript" : 16809
"Python" : 10726
"SQL" : 924
Подсчёт по файлам в git без lock-файлов, карт исходников и сторонних библиотек. HTML включает встроенные стили и скрипты одностраничных сайтов.
Node&Thought · news/
cd news && npm install
npm run server # API :3004
npm run dev # Vite :5173
npm run parser -- --sections Backend --limit 2ClickHit · clickhit/
cd clickhit && npm install
npm run dev # API :3006 + Vite :3000Znay · Znay/
cd Znay && cp .env.example .env # SESSION_SECRET от 32 символов
npm install && npm run migrate
npm run dev # :3002CloudFrame · Morph · Love
cd CloudFrame && npm install && npm start # :3000
cd Morph && npm install && npm run dev # API :3001 + Vite :3000
cd love && npm install && npm run server # :4000, нужен RedisAnalytics · admin/
cd admin && npm install
npm run dev # API :8787 + панель :5173Перед запуском задайте ADMIN_USERNAME, ADMIN_PASSWORD_HASH и ADMIN_TOTP_SECRET, подробно в README.
Промкооперация · sm01/
cd sm01 && docker compose up # db · migrate · redis · api · sync · crawler · web
start-local.cmd # Windows без Docker, http://localhost:8765Статические сайты · main/ · dewindigital/ · dev/
npx serve mainProject/
├── main/ xroyse.ru: портфолио, лаунчер, блог «Аномалии»
├── news/ Node&Thought: платформа статей
├── clickhit/ ClickHit: тренажёр слепой печати
├── CloudFrame/ CloudFrame: фотохостинг
├── Morph/ Morph: обработка изображений
├── Znay/ Znay: учебные карточки
├── admin/ xRoyse Analytics: трекер и панель
├── sm01/ агент промышленной кооперации (хакатон SM01)
├── love/ Love: приложение для пары
├── dewinbot/ архив: сайт Telegram-бота
├── dewindigital/ архив: сайт студии
├── archive/typeflow/ архив: первая версия ClickHit
├── dev/ заглушка «Сайт в разработке»
├── .github/assets/ баннеры README и анимированный разделитель
└── RELEASE.md домены, процессы PM2, порты и порядок деплоя
Important
Секреты живут только в .env на сервере и в переменных окружения PM2, в репозиторий они не попадают. Для Vite-проектов nginx раздаёт готовую папку dist/, поэтому после загрузки исходников нужна сборка (npm run build или bash deploy.sh в news/).











