NodeJs - beckend,
NestJs - framework,
Postgres - database (у разі потреби може бути посилена TimescaleDB),
TypeORM (зв'язок між базою і nodejs),
Redis - кешування, зберігання тимчасових даних (токенів доступу, сесійних даних тощо),
Flutter - frontend для адмінки (обговорюється),
html/css - frontend для користувачів.
Використання Docker для розгортання програм.
Система буде або модульною або розбита на 3-4 сервіси з метою підвищення безпеки та надійності. Щоб падіння складнішого бекенду адмініки не призводило до падіння сервісів обміну з автоматами або сервісом роботи з користувачами.
Сервіс для обміну даними з автоматами (взаємодія з Протокол V2).
Сервіс (сайт) для користувача (оплата, сюди вестиме QR код на автоматі).
Сервіс для адмінки (фронтент на Flutter, (обговорюється),надалі можливий мобільний додаток на тій же кодовій базі).
Сервіс взаємодії з Telegram (має бути два боти, один для клієнтів (відкритий), інший для співробітників, техніків і т.д. (закритий)).
Усі сервіси/модулі працюють із однією базою даних.
Призначення розробки.
1.1 Веб-сервер повинен отримувати дані від входів вендингового автомата, керувати виходами, вести запис до бази даних .
1.2 Формувати суму покупки QR-Pay (Mono-Pay, Приват єквайринг, portmone.com.ua) та передавати сформоване посилання.
1.3 Робити запит чека у відповідь про прийняття грошей платіжною системою та видавати QR-чек про купівлю від податкової служби, РРО.
Технічні вимоги.
2.1 Реєстрація та двофакторна авторизація клієнта Telegram-bot.
2.2 Можливість надсилання зареєстрованим клієнтам Telegram повідомлень, технікам про несправність, нагадування про оплату оренди або поповнення балансу sim-картки.
2.3 Поділ прав доступу відповідно до “Матриця повноважень”.
2.4 Мобільна, адаптивна верстка "гумка". Всі написи та меню українською мовою.
Інтерфейс програми та логіка роботи.
3.1 Авторизація.
Двофакторна, Telegram-bot
3.2 Мониторинг.
Головна сторінка, на якій відображається повний стан всіх автоматів.
...