Повноцінна фінансова платформа на React 18 + TypeScript. Від реєстрації та верифікації через Face ID / Passkeys до кредитів з ануїтетним розрахунком, депозитів з автонарахуванням відсотків та live-конвертера валют за курсами НБУ. Єдиний Flask REST API обслуговує PWA, Android-клієнт та адмін-панель.
Повний фінансовий цикл в одній PWA — від відкриття рахунку до аналітики витрат. Кожен модуль продуманий як окремий сервіс з чіткою межею відповідальності.
Кожна фінансова операція проходить через перевірений ланцюжок — від автентифікації до запису в журнал аудиту. Нижче — повний цикл для типового сценарію переказу.
sessions.
Кожен запит перевіряє токен і оновлює час активності через X-Refresh-Token.
При бездіяльності понад 15 хв PWA блокується — повторна верифікація без повного входу.
Idempotency-Key перевіряється в таблиці idempotency_keys:
повторний запит поверне вже збережений результат без повторного виконання.
transactions
з direction IN / OUT. При будь-якій помилці — повний ROLLBACK.
audit_logs
з userId, типом дії та timestamp. Service Worker на клієнті показує нативне
сповіщення навіть якщо вкладка закрита.
army-bank-v{old} видаляється, клієнти отримують
SW_UPDATED через postMessage і перезавантажують сторінку.
Кожен контур має чітку межу відповідальності та ізольований набір маршрутів. Flask Blueprint забезпечує модульність — додавання нового сервісу не зачіпає існуючі маршрути.
Відкрити додатокЄдиний REST API обслуговує три клієнти через Bearer Auth. Сесія зберігається у PostgreSQL — без JWT-секретів, з можливістю інвалідації будь-якого токена миттєво.
Кожен Blueprint — ізольований контур із власними маршрутами, декораторами
і правилами доступу. Єдина точка входу — army-bank.onrender.com/api/
Кожна технологія обрана під конкретну задачу. Ніяких модних рішень заради рішень — тільки те, що вирішує реальну проблему надійно та передбачувано.