Огляд коду RyzenDesk: серйозна робота над безпекою і одні відчинені двері чату
Ticketing, SLA, Kanban, wiki, analytics, automation, AI, email, Telegram, RBAC і encrypted Git. Build, type-check та audit проходять; anonymous chat треба виправити.

DEEP PROJECT REVIEW · SOURCE + REPOSITORY VISUALS
RyzenDesk - найбільший продукт цієї серії оглядів і один із тих, у кого заяви про безпеку здебільшого витримують зустріч із кодом. Express-сервер реєструє 96 обробників маршрутів. React-клієнт охоплює черги тікетів, гілки відповідей, Kanban, wiki, аналітику, встановлення, адмін-політики, AI-провайдерів, клієнтський портал і мобільну навігацію. Акуратні місця справжні: паролі scrypt, сесії з HMAC-підписом, серверний RBAC, хешовані токени клієнтів, зашифровані секрети, суворі SSRF-перевірки webhook, перевірка origin, ліміти запитів і production-секрети з відмовою за відсутності. Один публічний шлях живого чату порушує цю картину.
Сильна інженерія
- Server RBAC із п’яти tiers
- scrypt, HttpOnly sessions, hashed tokens
- SSRF checks і HMAC webhooks
- build, type-check та audit проходять
Важливі обмеження
- Немає verified live demo
- chat start повертає existing thread за заявленим email
- Thread ID - єдиний secret для read/post/close
- Великий bundle і немає tests
Як це влаштовано
React/Vite SPA звертається до Express. JSON DB зберігає дані; sessions локальні. Git snapshots шифруються AES-256-GCM. SMTP, Telegram, email і webhooks підключають зовнішні системи. Один JSON та local state обмежують scaling.
Наскільки глибокі функції
96 маршрутів охоплюють тікети, SLA, пакетні дії, присутність, облік часу, CSAT, злиття, експорт, Kanban, wiki, аналітику, RBAC, SMTP, webhooks, аудит, встановлення, правила, чат і AI-провайдерів.
Перевірка безпеки і єдина тріщина
Core routes захищені fail-closed secrets, client scope, hashed tokens, SSRF blocks та HMAC. Але chat start шукає thread за введеним email і повертає його. ID стає capability для читання, надсилання й закриття. Потрібен окремий hashed secret без recovery через email та перевірка кожної операції.
Посилання-можливість безпечне, лише якщо його не можна відновити за публічною заявою про ідентичність.
| Захист | Прогалини та scaling |
|---|---|
| scrypt, HMAC sessions, RBAC | Process-local sessions and limits |
| Hashed customer tokens | Anonymous chat email recovery |
| SSRF-resistant signed webhooks | No automated auth regression suite |
| Encrypted Git snapshot | Single JSON write model |
Що показують перевірки якості
Lint/type-check, build і audit без advisories пройшли. CI робить install, lint, build. Main bundle 989.57 kB. Tests відсутні.
Як він виглядає і звучить
Десять screenshots показують цілісний slate/indigo console, queues, SLA й thread. Breadth вимагає progressive disclosure. Live demo немає.
Вердикт
Сильна self-hosted основа. Спочатку chat fix; для scaling потрібні shared sessions/rate limits, transactional DB, auth tests і code splitting.
FAQ
Що таке RyzenDesk?
Відкритий helpdesk для власного хостингу з тікетами, SLA, Kanban, wiki, аналітикою, AI, RBAC і зашифрованим зберіганням у Git.
Є demo?
Ні; є десять screenshots та Docker/local install.
Готовий до production?
Core security сильна, але chat capabilities і tests треба виправити до public exposure.
Репозиторій
Reviewed source at commit 4d4aa64 · No separate live demo listed · build, type-check and audit reproduced 2026-09-21