A powerful, modular, and secure banking system built with Flask. This application provides a comprehensive solution for managing digital currency transactions, user accounts, and administrative controls with an intuitive web interface.
- User Account Management: Create, manage, and secure user accounts with password hashing
- Wallet System: Digital currency wallets with real-time balance tracking
- Transaction Processing: Secure transfer of funds between users
- Transaction Logs: Comprehensive logging of all system activities
- Refund System: Request and process refunds with administrative approval
- Treasury Management: Mint and burn currency to control the economy
- Admin Dashboard: Centralized control panel for system management
- User Management: Create, modify, and manage user accounts
- Wallet Administration: Create special wallets and manage permissions
- Database Explorer: Direct database access with protection for admin accounts
- System Health Monitoring: Real-time metrics on system performance
- Rule Management: Dynamic rule creation and enforcement
- Password Hashing: Secure storage of user credentials
- API Access Control: Prevents unauthorized API access from external sources
- Admin Account Protection: Safeguards against accidental deletion or modification
- Input Validation: Protects against injection attacks
- Audit Logging: Tracks all system activities for security review
- Responsive Design: Works on desktop and mobile devices
- Dark Mode Support: Reduces eye strain in low-light environments
- Real-time Updates: Automatic page refreshes after actions
- Leaderboard: Gamification element showing top account holders
- Intuitive Navigation: User-friendly interface for all operations
The Flask Banking System is built with modularity in mind, making it easy to extend and customize:
graph TD
A["Web Interface"] --> B["Flask Application"]
B --> C["Core Banking Module"]
B --> D["Admin Module"]
B --> E["Security Module"]
B --> F["API Layer"]
C --> G["Database"]
D --> G
E --> G
F --> G
- Backend: Python with Flask framework
- Database: Postgresql (easily configurable for other databases - Tested on AIVEN)
- Frontend: HTML5, CSS, JavaScript with modern responsive design
- Security: Werkzeug security features, custom middleware
- API: RESTful API architecture with JSON responses
- Deployer: Vercel
- Python (Tested on 3.11)
- pip (Python package manager)
- Git (optional, for cloning the repository)
Warning
This only supports 3.11+ versions of Python
This project is ready to deploy on Vercel with just a few clicks.
-
Fork this repo (maybe leave a star)
-
Go to vercel.com/import
-
Import your fork
- Click "Import Git Repository"
- Select your GitHub account and this repo that you forked
-
Use default settings
- Vercel will auto-detect everything from
vercel.json
- No need to configure anything manually except ENV VARIABLES:
SECRET_KEY
: Flask Secret Key - Make this strongDATABASE_URL
: Postgresql access URL - I recommend AIVEN
- Vercel will auto-detect everything from
-
Deploy!
- Wait for the build to finish
- Your app will be live at a Vercel URL like
https://your-app.vercel.app
📦 This repo includes:
- A
vercel.json
config- Flask backend in
api/index.py
- Dependencies in
requirements.txt
Note
Optional, you can go to the file banking/global_vars.py
and modify the ALLOW_PUBLIC_API_ACCESS
value,
though it's HIGHLY discouraged to do so, as it will allow anyone to access the API's without strong authentication.
-
Clone the repository
git clone https://github.com/yourusername/flask-banking-system.git cd flask-banking-system
-
Install dependencies
pip install -r requirements.txt
-
Set up the ENV variables
SECRET_KEY
: Flask Secret Key - Make this strongDATABASE_URL
: Postgresql access URL - I recommend AIVEN
-
Start the application
python app.py
-
Access the application Open your browser and navigate to
http://localhost:5000
Note
Optional, you can go to the file banking/global_vars.py
and modify the ALLOW_PUBLIC_API_ACCESS
value,
though it's HIGHLY discouraged to do so, as it will allow anyone to access the API's without strong authentication.
-
Create an admin account
- Navigate to
/setup
on first run (or just open the site, if it isn't init it auto redirects here) - Create your administrator account and bank name - etc
- This page will be disabled after initial setup
- Navigate to
-
Configure system rules
- Log in as admin (unchangeable)
- Navigate to Admin > Rules
- Set up initial system parameters
-
Create initial currency pool
- Navigate to Admin > Treasury
- Mint initial currency supply
-
Creating an account
- Navigate to the login page
- A request wallet button will be there, click on it
- Fill required fields
- Your wallet will be automatically created after admin approval
-
Transferring funds
- Log in to your account
- Navigate to Wallet
- Enter recipient's username and amount
- Confirm the transaction
-
Viewing transaction history
- Navigate to Logs
- View all your past transactions
- Request refunds if needed
-
Managing users
- Navigate to Admin > Wallets
- Create, modify, or deactivate user accounts
-
System monitoring (Globally accessible)
- Navigate to Admin > Server Health
- View real-time metrics on system performance
-
Check Database
- Navigate to Admin > Database Explorer
- Execute SQL queries or use predefined queries to check system status
- The system implements API access control to prevent unauthorized access from external sources
- Admin accounts are protected from accidental deletion or modification
- All passwords are hashed before storage
- Input validation is performed on all user inputs
The Flask Banking System is designed to be highly customizable:
- Database: Replace PostgreSQL with MySQL, SQLite, or other databases
- Authentication: Integrate with OAuth, LDAP, or other authentication systems
- UI Themes: Modify CSS to match your organization's branding
- Business Rules: Adjust transaction limits, fees, and other parameters
- Logging: Configure detailed logging for auditing and debugging
-
Database connection errors
- Check database file permissions
- Ensure PostgreSQL is properly installed
-
Page not refreshing after actions
- Clear browser cache
- Check JavaScript console for errors
-
API access denied
- Verify you're accessing from the same origin
- Check admin privileges if required
- Check the issues section on GitHub
- Contact the maintainers at support@flaskbankingsystem.com
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.