Full‑Stack Payment Application
PayFlow is a MERN‑stack web application that allows users to create accounts, link bank details, transfer funds, search for accounts, and view transaction history. Built with React (Vite), Node.js, Express, and MongoDB Atlas, deployed on Vercel.
- User Authentication: Sign up & Sign in with JWT-based sessions
- Account Management: Create and view multiple bank accounts
- Fund Transfers: Secure, atomic transactions between accounts
- Search: Lookup accounts by number, IFSC, or user name
- Transaction History: View, filter, and export transaction records
- Dashboard: Consolidated user profile, balances, and recent activity
-
Clone the repo
git clone https://github.com/s-satyajit/payflow.git cd payflow -
Setup environment
-
Backend (
server/):cd server npm installCreate
server/src/.env:MONGO_URI=<build-your-MongoDB-Atlas-URI> JWT_SECRET=<write-your-JWT-secret>
-
Frontend (
client/):cd ../client npm installCreate
client/.env:VITE_API_URL=<build-your-backend-api>/api/v1
-
-
Local Development
-
Start backend:
cd server npm run dev -
Start frontend:
cd ../client npm run dev
-
Open http://localhost:3000 (or Vite’s port) in your browser.
Base URL: <build-your-api>/api/v1
All routes (except /auth/*) are protected and require the Authorization: Bearer <token> header.
| Method | Endpoint | Body | Description |
|---|---|---|---|
| POST | /auth/signup |
{ username, firstname, lastname, email, password, phone } |
Register new user |
| POST | /auth/signin |
{ email, password } |
Login (email or username) |
| Method | Endpoint | Query/Body | Description |
|---|---|---|---|
| GET | /account/create-account |
{accountNumber, ifsc, bankName} |
Create an account |
| GET | /account/search-accounts?q= |
(query) accountNumber, IFSC, or user name | Search accounts |
| POST | /account/get-account |
{ accountNumber } |
Get account details |
| Method | Endpoint | Body | Description |
|---|---|---|---|
| POST | /transaction/transfer-funds |
{ id, toAccountNumber, ifsc, firstname, lastname, amount, description? } |
Transfer funds between accounts |
| POST | /transaction/transactions |
{ userId } |
List all transactions for a user |
| Method | Endpoint | Body / Protected | Description |
|---|---|---|---|
| GET | /user/user/me |
Protected | Get current user profile |
Email: satyajitsamal.workmail@gmail.com
LinkedIn: https://linkedin.com/in/satyajitsamal
X: https://x.com/satyajitstwt
GitHub: https://github.com/s-satyajit
Portfolio: https://satyajitsamal.vercel.app