| Field | Value |
|---|---|
| Username | admin |
| Password | admin123 |
| Account No. | SUPPERADMIN0 |
| Role | Super Admin |
| admin@example.com | |
| Verified | Yes |
β οΈ Note: These credentials are for development/demo purposes only.
Experience Digivault Banking System live at: https://bank-management-system-se-project.onrender.com/
- Full banking functionality available
- Test user registration and verification process
- Explore admin dashboard features
- Experience secure transaction processing
Note: This is a demonstration environment. Please do not enter real personal or financial information.
- Live Demo
- Overview
- Features
- Security Measures
- Tech Stack
- Installation
- Configuration
- Usage
- API Endpoints
- Email Templates
- Admin Features
- File Structure
- Contributing
- License
Digivault Banking System is a comprehensive, secure, and feature-rich banking application built with Flask. It provides a complete digital banking experience with robust security measures, document verification, email notifications, and comprehensive admin controls.
The system supports multiple account types, loan management, transaction processing, and includes a sophisticated admin dashboard for user verification and system monitoring.
- π€ User Registration & Verification
- Document upload (Aadhaar & PAN card)
- Admin verification process
- Email notifications throughout verification
- π Secure Authentication
- Two-factor authentication with OTP
- JWT-based session management
- Account lockout protection
- π° Account Management
- Multiple account types (Savings, Current, Business)
- Real-time balance tracking
- Profile management with document viewing
- πΈ Transaction Services
- Secure money transfers between accounts
- Deposit and withdrawal operations
- Transaction history with PDF export
- Email notifications for all transactions
- π³ Loan Management
- Multiple loan types (Personal, Education, Car, Home)
- Automatic EMI calculations
- Loan application tracking
- Admin approval workflow
- π Reports & Statements
- Detailed transaction history
- PDF statement generation
- Email statement delivery
- Transaction integrity verification
- π Admin Dashboard
- User verification management
- Account approval/rejection
- System monitoring
- π₯ User Management
- Create, verify, and delete users
- View user transaction history
- Document verification interface
- πΌ Loan Administration
- Review loan applications
- Approve/reject loans with notifications
- Monitor loan portfolio
- π System Monitoring
- Comprehensive audit logs
- Real-time log viewing API
- Security event tracking
- π Password Security: Werkzeug password hashing with salt
- π« Rate Limiting: Configurable limits to prevent brute force attacks
- π JWT Authentication: Secure token-based session management
- π‘οΈ CSRF Protection: Flask-WTF CSRF tokens on all forms
- π§Ή Input Sanitization: Bleach library for XSS prevention
- π Comprehensive Logging: Rotating file logs with detailed audit trails
- π Account Security: Automatic lockout after failed attempts
- π§ Email Notifications: Security alerts for all account activities
- π OTP Verification: Two-factor authentication for login
- π Transaction Integrity: Hash-based transaction verification
- π« Session Management: Secure session handling with expiration
- π File Upload Security: Restricted file types and size limits
- Backend: Flask (Python)
- Database: SQLite/MySQL with SQLAlchemy ORM
- Authentication: JWT tokens with OTP verification
- Email Service: SMTP with HTML templates
- PDF Generation: xhtml2pdf
- Security: Flask-WTF, Flask-Limiter, Bleach
- Frontend: HTML, CSS, JavaScript (responsive design)
- File Handling: Document upload and verification system
Choose one of the following installation methods:
- For Docker: Docker and Docker Compose
- For Virtual Environment: Python 3.8+, SQLite (default) or MySQL Server (optional), SMTP Server
-
Clone the repository:
git clone https://github.com/yourusername/digivault-banking-system.git cd digivault-banking-system -
Create environment file:
cp .env.example .env # Edit .env with your configuration -
Build and run with Docker Compose:
docker-compose up --build
-
Access the application:
- Main application:
http://localhost:5000 - Email interface (SMTP4dev):
http://localhost:3000
- Main application:
Docker Services:
- flaskapp: Main Digivault banking application
- smtp: SMTP4dev server for email testing and development
Docker Volumes:
bankdata_volume: Persistent storage for application datasmtp4dev_volume: Email storage for SMTP4dev
To stop the services:
docker-compose downTo rebuild after code changes:
docker-compose up --build-
Clone the repository:
git clone https://github.com/yourusername/digivault-banking-system.git cd digivault-banking-system -
Create and activate virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Create required directories:
mkdir -p static/uploads logs
For SQLite (Default - No additional setup required):
The application will automatically create database.sqlite3 in your project directory.
For MySQL (Optional):
-
Create MySQL database:
CREATE DATABASE flask_bank;
-
Update DATABASE_URI in .env file:
DATABASE_URI=mysql+pymysql://username:password@localhost:3306/flask_bank
Create a .env file with the following structure:
# ======================
# Flask Environment
# ======================
FLASK_ENV=development
FLASK_APP=app.py
#SECRET_KEY=your_flask_secret_key_here
# ======================
# Database Configuration
# ======================
DATABASE_URI=sqlite:///database.sqlite3
# ======================
# JWT Configuration
# ======================
#JWT_SECRET_KEY=your_jwt_secret_key_here
JWT_ACCESS_TOKEN_EXPIRES=15m
JWT_REFRESH_TOKEN_EXPIRES=30d
# ======================
# Production SMTP Config (Live Emails)
# ======================
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_production_email@aruppevaletbank.com
SMTP_PASSWORD=your_production_email_password
# ======================
# Development SMTP Config (Local Testing)
# ======================
SMTP_DEV_SERVER=smtp
SMTP_DEV_PORT=25
SMTP_DEV_USER=email.test@aruppevaletbank.comNote: Uncomment and set the SECRET_KEY and JWT_SECRET_KEY for production use. The application will use default values for development.
For Development (Local SMTP Testing):
docker volume create smtp4dev_volume
docker run --rm -it -p 3000:80 -p 1025:25 -v smtp4dev_volume:/smtp4dev rnwood/smtp4devFor Production:
- Configure Gmail SMTP or your preferred email service
- Update the production SMTP settings in your
.envfile - Enable "App Passwords" for Gmail if using 2FA
Visit the live application at: https://bank-management-system-se-project.onrender.com/
-
Start the services:
docker-compose up
-
Access the application:
- Main application:
http://localhost:5000 - Email interface:
http://localhost:3000
- Main application:
-
Start the application:
python app.py
-
Access the application:
- Main application:
http://localhost:5000 - Email interface:
http://localhost:3000(if using smtp4dev)
- Main application:
- Register a new account with required documents
- Admin verification required for account activation
- Default admin account created automatically
- Register β Document Upload β Admin Verification β OTP Login β Banking Services
GET /- Home pagePOST /login- User authenticationPOST /register- User registrationGET /send_otp- OTP generation and sending
GET /dashboard- User dashboardGET /api/balance- Get current balancePOST /transfer- Money transferPOST /deposit- Deposit moneyPOST /withdraw- Withdraw moneyGET /transactions- Transaction historyGET /transactions/pdf/<email>- Download/email PDF statementPOST /loan/apply- Apply for loanGET /profile- User profilePOST /change_password- Change password
GET /admin/dashboard- Admin dashboardPOST /admin/user/create- Create new userPOST /admin/user/verify/<account_no>- Verify user accountPOST /admin/user/delete/<account_no>- Delete userGET /admin/approve/loan/- Loan managementGET /api/admin/logs- System logs API
The system includes comprehensive email templates for:
- Account registration confirmation
- Account verification notifications
- Login security alerts
- Transaction confirmations
- Loan application updates
- Password change notifications
- Account lockout alerts
- Verification Interface: View and verify user documents (Aadhaar, PAN)
- Account Creation: Direct user account creation with verification
- User Monitoring: Transaction history and account activity tracking
- Application Review: Comprehensive loan application interface
- Approval Workflow: Automated loan processing with email notifications
- Portfolio Management: Track all loans and their status
- Audit Logs: Real-time system log monitoring
- Security Monitoring: Failed login attempts and security events
- Database Management: User and transaction oversight
digivault-banking-system/
βββ app.py # Main Flask application
βββ model.py # Database models
βββ functions.py # Utility functions
βββ forms.py # WTForms definitions
βββ requirements.txt # Python dependencies
βββ recreate_db.py # create database if not exist
βββ static/
β βββ uploads/ # User document uploads
βββ templates/
β βββ email/ # Email templates
β βββ admin/ # Admin interface templates
β βββ *.html # User interface templates
βββ logs/
βββ flask_bank.log # Application logs