A modern full-stack banking portal built with a responsive React frontend, a secure JWT-authenticated Spring Boot REST backend, and MongoDB storage. Dispatches asynchronous balance notifications and handles dynamic statement compiling.
User (Browser)
│
▼
[ Vercel: React Frontend ]
│
▼ (HTTPS REST API / JSON)
[ Render: Docker JRE Container (Spring Boot) ]
│
▼ (MongoDB Java Driver)
[ MongoDB Atlas (Cloud Database) ]
/BankingSimulator-Java (Root Git Repository)
│
├── pom.xml # Maven parent aggregator settings
│
├── backend/ # Spring Boot REST API Service
│ ├── Dockerfile # Multi-stage production build configuration
│ ├── pom.xml # Spring Boot Maven dependencies & build settings
│ └── src/ # Java source and configurations
│ ├── main/java/com/bank/ # layered backend logic (controllers, services, entities...)
│ └── main/resources/ # application.yml settings and email templates
│
└── frontend/ # React client workspace
├── package.json # NPM dependencies
├── vite.config.js # Dev-server configuration
├── .env.development # Local development API endpoint routing
└── src/ # React visual pages, components, & authentication contexts
Ensure MongoDB is running locally on port 27017 (or launch via Docker: docker run -d -p 27017:27017 --name local-mongo mongo:latest).
- Navigate to the backend folder:
cd backend - Build and launch the server using the Maven wrapper:
./mvnw spring-boot:run
- The server will boot on port
8085. Verify the API status by visiting:http://localhost:8085/api/health - Interactive Swagger documentation is available at:
http://localhost:8085/swagger-ui/index.html
- Open a new terminal and navigate to the frontend folder:
cd frontend - Install dependencies:
npm install
- Start the Vite server:
npm run dev
- Access the web interface at
http://localhost:5173.
- Sign in to MongoDB Atlas.
- Create a free shared cluster.
- Go to Security -> Database Access and create a read/write user credentials.
- Go to Security -> Network Access and whitelist access. (Add
0.0.0.0/0to allow Render's dynamic container IPs to connect to your database). - Copy your connection URI (e.g.,
mongodb+srv://<user>:<password>@cluster0.aj2xzyo.mongodb.net/?appName=Cluster0).
- Push your monorepo repository to GitHub.
- Sign in to Render and click New -> Web Service.
- Select your repository.
- Configure the following parameters:
- Name:
banking-simulator-backend - Runtime:
Docker - Dockerfile Path:
backend/Dockerfile - Context Directory:
backend
- Name:
- Go to the Environment tab and add your deployment secrets (no values should be committed in the codebase):
MONGODB_URI: Your rotated MongoDB Atlas connection stringJWT_SECRET: A secure randomly generated 256-bit hex stringFRONTEND_URL: Your Vercel URL (e.g.,https://banking-portal.vercel.app)SENDER_EMAIL: Your Gmail accountAPP_PASSWORD: Your Google App Password
- Render will read the
Dockerfile, build the multi-stage JAR, and boot the web service dynamically.
- Sign in to Vercel and click Add New -> Project.
- Select your repository.
- Configure the build parameters:
- Root Directory:
frontend - Framework Preset:
Vite - Build Command:
vite build - Output Directory:
dist
- Root Directory:
- Add the following Environment Variable:
VITE_API_BASE_URL: Your Render backend URL followed by/api(e.g.,https://banking-backend.onrender.com/api)
- Click Deploy. Vercel will bundle the React production assets and assign your domain.