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.
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.
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.
/v1/auth/register
/v1/auth/login
/v1/auth/refresh
/v1/accounts
/v1/accounts
/v1/accounts/:id/close
saldo=0, potwierdzenie nazwą i hasłem
/v1/accounts/:id/transactions?from&to&page&limit
/v1/simulations/transaction
tworzy wpis i aktualizuje saldo
/v1/webhooksrejestracja: url, secret, events[], clientId
/v1/webhooks?clientId=...
transaction.created
Nagłówki
X-MockBank-TimestampX-MockBank-Idempotency-KeyX-MockBank-Signature
/api/owner/:owner/transactions?from=YYYY-MM-DD&to=YYYY-MM-DD
Authorization: Bearer <API_KEY>
ObjectIdpełny e-mailprefiks e-mail (user+coś)
{
"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.
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.