01
Overview
I designed and built a full-stack banking platform on my own. A single Node.js/Express backend serves a React web app and an Expo React Native mobile app, so both clients share one API.
02
How it fits together
- 01
React web app
Vite · Tailwind CSS
- 02
Expo mobile app
React Native · NativeWind
- 03
Express API
JWT · Socket.IO · Swagger
- 04
MongoDB + Redis
Data and caching
03
What the platform does
- 01
Accounts and transactions
Multiple account types (savings, current, fixed deposit, Islamic savings, salary), fund transfers, deposits and withdrawals, with real-time notifications over Socket.IO.
- 02
Cards and loans
Debit and credit card management, loan applications with EMI calculation and an approval workflow, and a branch and ATM locator.
- 03
Administration
An admin dashboard with system statistics, user and transaction oversight, and reporting.
04
Security and quality
- 01
Access control
JWT authentication with role-based access for customers, employees, managers and admins.
- 02
Abuse protection
Rate limiting, account lockout after failed logins, transaction monitoring that flags suspicious activity, and audit logging.
- 03
Performance and docs
Redis caching and an OpenAPI/Swagger specification documenting the REST API.
05
Clients
The web app is built with React, Vite and Tailwind CSS. The mobile app uses Expo with file-based routing, NativeWind for styling and Axios against the same backend.
06
Stack
- Node.js
- Express
- MongoDB
- Redis
- JWT
- Socket.IO
- Swagger / OpenAPI
- React
- Vite
- Tailwind CSS
- React Native
- Expo