Складні системи, збудовані як інженерія.
Проєктуємо та будуємо продакшен-платформи, які поєднують Rust, Next.js & PostgreSQL — від доменної архітектури до черг, реального часу й надійного деплою.
// що ми робимо
Повний цикл: від рішення в архітектурі до сервісу, що не падає.
Доменна архітектура
Модульний моноліт із чистими межами: домен, дані, auth, ціни, склад, імпорти, пошук, нотифікації. Готовий до розділення на сервіси без дублювання логіки.
Backend на Rust
Axum + Tokio + SQLx. Транзакційна цілісність, RBAC, rate-limiting на Redis, health/readiness-проби, аудит — те, що відрізняє прототип від системи.
Frontend на Next.js
Next.js 16 + React 19 + Tailwind. Вітрина, кабінет B2B, портал менеджера й адмінка в одному застосунку — з проксі-шаром до API та CSRF-захистом.
Дані та цілісність
PostgreSQL як джерело істини. Резерви складу, м’які холди, transactional outbox в одній транзакції з замовленням, staging-таблиці з атомарним swap на імпортах.
Реальний час і черги
Живий чат, notification-worker на Rust, планувальник. Розібрана й задокументована пастка спільного getUpdates offset між двома споживачами бота.
Деплой і надійність
Nginx + systemd + Docker, Let’s Encrypt, бекапи Postgres і MinIO з ретеншеном і репетицією відновлення. Runbook, health-контракти, політики рестарту.
// що ми робимо
Повний цикл: від рішення в архітектурі до сервісу, що не падає.
Доменна архітектура
Модульний моноліт із чистими межами: домен, дані, auth, ціни, склад, імпорти, пошук, нотифікації. Готовий до розділення на сервіси без дублювання логіки.
Backend на Rust
Axum + Tokio + SQLx. Транзакційна цілісність, RBAC, rate-limiting на Redis, health/readiness-проби, аудит — те, що відрізняє прототип від системи.
Frontend на Next.js
Next.js 16 + React 19 + Tailwind. Вітрина, кабінет B2B, портал менеджера й адмінка в одному застосунку — з проксі-шаром до API та CSRF-захистом.
Дані та цілісність
PostgreSQL як джерело істини. Резерви складу, м’які холди, transactional outbox в одній транзакції з замовленням, staging-таблиці з атомарним swap на імпортах.
Реальний час і черги
Живий чат, notification-worker на Rust, планувальник. Розібрана й задокументована пастка спільного getUpdates offset між двома споживачами бота.
Деплой і надійність
Nginx + systemd + Docker, Let’s Encrypt, бекапи Postgres і MinIO з ретеншеном і репетицією відновлення. Runbook, health-контракти, політики рестарту.
// у цифрах
Не демо. Реальні системи, що працюють у продакшені.
Типовий масштаб платформи, яку веде команда — об’єктивна міра складності, яку вдається утримувати керованою.
// з чим працює команда
B2B-платформи та commerce-системи під високе навантаження
Будуємо єдині системи, що об’єднують публічну вітрину, кабінет B2B, портал менеджера, склад, ціноутворення, замовлення й резерви, нотифікації, звіти та імпорти навколо однієї бази даних.
Складність, яка вирішена інженерно
Шість фрагментів системи, де «працює на демо» ≠ «працює у продакшені».
Транзакційний outbox
Рядок notification_outbox пишеться в тій самій транзакції, що й замовлення чи резерв — збій транзакції не породжує «фантомної» нотифікації. Rust-worker забирає pending, шле в Telegram і позначає sent або планує ретрай.
// як це зібрано
Модульний моноліт із межами, готовими до розділення на сервіси.
Одна кодова база, чисті доменні модулі й спільна бізнес-логіка для вітрини, B2B, адмінки, бота та воркерів.
// інструменти
Стек, підібраний під надійність, а не під хайп.
Backend
06- Rust
- Axum
- Tokio
- SQLx
- Redis
- NATS JetStream
Frontend
06- Next.js 16
- React 19
- TypeScript
- Tailwind 4
- TanStack Query
- shadcn/ui
Дані та пошук
04- PostgreSQL 17
- Meilisearch
- MinIO / S3
- Версійовані міграції
Платформа
06- Docker
- Nginx
- systemd
- Let’s Encrypt
- Бекапи + restore
- Health-проби
Інтеграції
04- Telegram Bot API
- Python / FastAPI
- PDF / XLSX
- Google Merchant feed
Практики
04- RBAC + аудит
- Rate-limiting
- Transactional outbox
- Docs-as-you-go
// як ми працюємо
Дисципліна, яка робить складну систему підтримуваною.
Це не гасла — це реальні правила проєкту, за якими він жив увесь рік.
Документуємо кожну значущу зміну
Код, схема, API, деплой, інцидент — усе фіксується розділом у логу розробки. Понад 170 записів за рік на одному проєкті. Система лишається зрозумілою навіть через місяці.
База даних — джерело істини
Один каталог, одна БД. Жодних паралельних «істин» у JSON чи зовнішній CMS у рантаймі. Дані мають одне місце, де вони правильні.
Файли лишаються керованими
Ліміт 3000 рядків на файл, попередження на 2000. SQL і бізнес-логіка виносяться з роутів у репозиторії та сервіси. Аудит і рефактор — без болю.
Деструктивні дії — лише атомарно
Зміни над живою БД проходять через staging-таблиці й атомарний swap. Імпорти пишуть snapshots для відкату. Продакшен не ламається «на льоту».
Секрети — поза кодом і git
Токени, паролі, ключі — тільки через env і адмін-панель, ніколи в репозиторії. Перед комітом — скан на бойові значення.
Спочатку локально, потім VPS
Логіка, міграції та білди доводяться локально. На сервер лишаються тільки домени, секрети, SSL і сховище — мінімум сюрпризів у продакшені.