A comprehensive web-based banking system prototype built with Django and Python. Finflow provides a complete digital banking experience with user management, transaction processing, automated interest calculations, and comprehensive reporting features.
- User registration with email-based authentication
- Personal information collection (name, gender, birth date)
- Address management (street, city, postal code, country)
- Secure password creation with validation
- Automatic account creation with unique account numbers
- Multiple account types with configurable interest rates and withdrawal limits
- Deposit money with minimum amount validation
- Withdraw money with balance and limit checks
- Real-time balance tracking
- Transaction history with detailed records
- Automated interest calculation using Celery background tasks
- Configurable interest rates per account type (0-100%)
- Flexible interest calculation periods (monthly, quarterly, etc.)
- Automatic interest application to account balances
- Interest transaction recording
- Complete transaction reports with date/time stamps
- Interactive date range filtering for transaction history
- Formatted currency display with proper formatting
- Current balance display
- Transaction type categorization (Deposit, Withdrawal, Interest)
- Django admin interface for user and account management
- Account type configuration
- Transaction monitoring and management
- User address management
- CSRF protection
- Form validation with custom error messages
- Authentication requirements for protected views
- Atomic transactions for data integrity
- Password validation using Django's built-in validators
- Backend: Django 3.1.8
- Database: SQLite3 (development)
- Background Tasks: Celery 4.4.7 with Redis
- Task Scheduling: django-celery-beat
- Frontend: HTML templates with Tailwind CSS
- Authentication: Django's built-in authentication system
- Python 3.7+
- Redis server (for Celery background tasks)
- pip (Python package installer)
-
Clone the repository
git clone <repository-url> cd finflow
-
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Set up Redis server
- Install Redis on your system
- Start Redis server:
redis-server - Redis should be running on
localhost:6379
-
Run database migrations
python manage.py migrate
-
Create a superuser (optional)
python manage.py createsuperuser
-
Start the Django development server
python manage.py runserver
-
Start Celery worker (in a separate terminal)
celery -A banking_system worker --loglevel=info
-
Start Celery beat scheduler (in another terminal)
celery -A banking_system beat --loglevel=info
-
Access the application
- Main application: http://127.0.0.1:8000/
- Admin interface: http://127.0.0.1:8000/admin/
- Register: Visit the home page and click "Register" to create a new account
- Login: Use your email and password to access your account
- Deposit: Navigate to the deposit page to add money to your account
- Withdraw: Use the withdraw page to take money out of your account
- View Reports: Check your transaction history and current balance
- Access Admin: Go to
/admin/and login with superuser credentials - Manage Account Types: Create and configure different bank account types
- Monitor Users: View and manage user accounts and information
- Transaction Oversight: Monitor all transactions across the system
The following settings can be configured in banking_system/settings.py:
ACCOUNT_NUMBER_START_FROM: Starting number for account generation (default: 1000000000)MINIMUM_DEPOSIT_AMOUNT: Minimum amount for deposits (default: 10)MINIMUM_WITHDRAWAL_AMOUNT: Minimum amount for withdrawals (default: 10)
Celery is configured to use Redis as both broker and result backend:
- Broker URL:
redis://localhost:6379 - Result Backend:
redis://localhost:6379
finflow/
├── accounts/ # User management app
│ ├── models.py # User, BankAccount, Address models
│ ├── views.py # Registration, login views
│ ├── forms.py # Registration and address forms
│ └── urls.py # Account-related URLs
├── transactions/ # Transaction processing app
│ ├── models.py # Transaction model
│ ├── views.py # Deposit, withdraw, report views
│ ├── forms.py # Transaction forms
│ ├── tasks.py # Celery tasks for interest calculation
│ └── urls.py # Transaction-related URLs
├── core/ # Core app
│ └── views.py # Home page view
├── banking_system/ # Main project settings
│ ├── settings.py # Django settings
│ ├── urls.py # Main URL configuration
│ └── celery.py # Celery configuration
├── templates/ # HTML templates
├── static/ # Static files (CSS, images)
└── requirements.txt # Python dependencies
/- Home page/accounts/register/- User registration/accounts/login/- User login/accounts/logout/- User logout/transactions/deposit/- Deposit money/transactions/withdraw/- Withdraw money/transactions/report/- Transaction history/admin/- Django admin interface
python manage.py testpython manage.py makemigrations
python manage.py migratepython manage.py collectstatic- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is open source and available under the MIT License.