← Powrót do strony głównej

MockBank API

Serwis bankowy typu mock zbudowany w NestJS + MongoDB. Służy do symulacji kont i transakcji oraz integracji z systemami zewnętrznymi
(np. Budżetownik). Wdrożony na Render, gotowy do testów integracyjnych i automatycznej synchronizacji.

Co potrafi MockBank

MockBank to nowoczesne, sandboxowe API bankowe stworzone w technologii NestJS, które pozwala symulować rzeczywiste operacje finansowe — od rejestracji użytkowników i zakładania kont po pełną obsługę transakcji i integrację z zewnętrznymi aplikacjami.

System umożliwia tworzenie wielu kont z niezależnym saldem, symulowanie transakcji z automatyczną aktualizacją oraz podgląd historii i salda w czasie rzeczywistym. Dane zwracane są w ujednoliconym formacie, co ułatwia testy i analizę.

MockBank obsługuje integracje dwukierunkowe push (webhooki podpisywane HMAC-SHA256 dla natychmiastowych powiadomień) oraz pull (endpointy REST do cyklicznej synchronizacji danych). Całość uzupełniają wbudowane mechanizmy bezpieczeństwa i stabilności: /healthz, /readyz, walidacja DTO, rate limiting, CORS oraz nagłówki ochronne (Helmet), które zapewniają przewidywalne działanie środowiska testowego.

Architektura i bezpieczeństwo

Projekt opiera się na modularnej architekturze osobne moduły auth, accounts, transactions, webhooks, integrations i system odpowiadają za jasno wydzielone obszary logiki, co ułatwia utrzymanie i rozwój. Uwierzytelnianie oparte jest o JWT, a hasła zabezpieczane są przy użyciu argon2. Sekrety webhooków szyfrowane są algorytmem AES, a wszystkie powiadomienia podpisywane HMAC-SHA256 w nagłówkach, co gwarantuje integralność i autentyczność danych.

Publiczny endpoint integracyjny jest chroniony przez API-key w nagłówku Bearer, co umożliwia testowanie integracji bez konieczności zarządzania tokenami użytkowników. Cała architektura została zaprojektowana z myślą o modularności, separacji odpowiedzialności i łatwym rozszerzaniu o kolejne usługi (np. płatności, multiwaluty, logi bezpieczeństwa), dzięki czemu projekt pozostaje elastyczny, bezpieczny i skalowalny.

Endpointy – core

Auth

POST/v1/auth/register
POST/v1/auth/login
POST/v1/auth/refresh

Konta

GET/v1/accounts
POST/v1/accounts
POST /v1/accounts/:id/close saldo=0, potwierdzenie nazwą i hasłem

Transakcje

GET /v1/accounts/:id/transactions?from&to&page&limit
POST /v1/simulations/transaction tworzy wpis i aktualizuje saldo

Endpointy – integracje

Webhooki (push)

POST/v1/webhooksrejestracja: url, secret, events[], clientId
GET/v1/webhooks?clientId=...
Zdarzenietransaction.created Nagłówki X-MockBank-TimestampX-MockBank-Idempotency-KeyX-MockBank-Signature

Pull API

GET /api/owner/:owner/transactions?from=YYYY-MM-DD&to=YYYY-MM-DD
AuthAuthorization: Bearer <API_KEY>
ownerObjectIdpełny e-mailprefiks e-mail (user+coś)

Transakcje

{
  "id": "652123…",
  "externalTxnId": "tx_abcd1234",
  "accountId": "651fff…",
  "amount": -1299,            
  "currency": "PLN",
  "date": "2025-10-05T18:41:00.000Z",
  "description": "Testowa transakcja",
  "raw": { "source": "simulator" }
}

Dane transakcji zwracane są w spójnym formacie JSON — kwoty w groszach (typ int), daty w standardzie ISO-8601 (UTC). Aktualnie obsługiwana jest tylko waluta PLN, a struktura danych jest gotowa na rozszerzenie o inne waluty w przyszłych wersjach.

Wszystkie endpointy zwracają również spójny kontrakt błędów (JSON z traceId, code, message), co ułatwia integrację i testowanie.

Uruchomienie w skrócie

  • Docker (kontener)
  • Render (hosting produkcyjny)
  • Health-checki: /healthz • /readyz

Projekt gotowy do rozbudowy i dostosowań na potrzeby innych aplikacji.

Uwaga: API działa na darmowym planie Render, więc po bezczynności serwis może się „uśpić”. Kliknięcie Demo – /healthz wybudza instancję — pierwszy response może potrwać nieco dłużej.