This project is a comprehensive banking application built in Python. It features modules for user registration, login, balance checking, and more, offering a robust framework for banking operations. The main idea is to create more smaller banks instead of having a few big banks in a country. The current challenge is the technology which should enable only real persons to use the banking system.
- User Registration: Allows new users to register for the banking service.
- User Login: Secure login functionality for existing users.
- Balance Checking: Users can check their account balance.
- Database Connectivity: Manages secure connections to the database.
- Data Validation: Ensures integrity and correctness of user input.
- Real-Time Notifications: Users receive real-time notifications for transactions and account alerts, enhancing user engagement.
- Multi-Factor Authentication: Enhances security for user accounts by supporting multi-factor authentication.
- Document Signing and Management: Expanded features allow users to handle official documents more efficiently.
- Wider Currency Support: The app now supports a wider range of currencies for financial transactions, catering to a global audience.
- User Feedback and Support System: A new system introduced to improve user satisfaction and app usability.
- Enhanced Logging System: The logging system is enhanced for better audit trails and debugging, facilitating maintenance and support.
- Crypto & Stock Trading: Users can engage in crypto and stock trading via popular free-to-use APIs. This feature is configurable to allow the application to become SaaS in the future.
- Digital Marketplace: Users can sell items in an internal digital marketplace, similar to eBay. This feature is also configurable.
- Bootstrap Integration: Improved design and responsiveness using Bootstrap CSS and components.
- Vue.js Integration: Dynamic content rendering using Vue.js framework.
- SASS/SCSS Styling: Enhanced styling with SASS/SCSS, converting existing CSS to SASS/SCSS and organizing styles into reusable components.
- Data Visualization: Integration of Charts.js for financial data visualization.
- Node.js/Express Server: Backend routes for API requests and database interactions.
- Secure Database Setup: Configuration of MySQL securely using environment variables for sensitive data.
- CI/CD Pipeline: Automated deployment to GitHub Pages using GitHub Actions.
- Improved Navigation: Implementation of a navigation bar for easy access to different sections.
- User Interactions: Inclusion of forms for user inputs (e.g., login, transactions) and implementation of JWT for secure authentication.
- SEO and Accessibility: Optimization for search engines with meta tags and descriptive titles, ensuring compliance with WCAG for accessibility.
Step-by-step setup:
-
Clone the Repository
git clone https://github.com/koke1997/bankarstvo
-
Navigate to the Project Directory
cd bankarstvo
-
Create and Activate Virtual Environment This is strongly advised for further development, because dependencies can be easily added to the project.
python -m virtualenv .
3.1. For Windows (using Command Prompt):
-
.\Scripts\activate
3.2 For Windows (using PowerShell):
-
.\Scripts\Activate.ps1
3.3 For Unix or MacOS (using Bash):
-
source bin/activate
-
-
Install Dependencies
pip install -r requirements.txt
-
Install Node.js Dependencies
npm install
-
Build the Project
npm run build
-
Set up MySQL Database
# Install MySQL Server sudo apt-get update sudo apt-get install mysql-server # Secure MySQL Installation sudo mysql_secure_installation # Log in to MySQL sudo mysql -u root -p # Create a new database CREATE DATABASE banking_app; # Create a new user and grant privileges CREATE USER 'ikokalovic'@'localhost' IDENTIFIED BY 'Mikrovela1!'; GRANT ALL PRIVILEGES ON banking_app.* TO 'ikokalovic'@'localhost'; FLUSH PRIVILEGES;
-
Configure Environment Variables
# Create a .env file in the project root directory and add the following environment variables DATABASE_USER=ikokalovic DATABASE_PASSWORD=Mikrovela1! DATABASE_HOST=localhost DATABASE_PORT=3306 DATABASE_NAME=banking_app
Keep in mind you will need a mysql database running in background in order to run this app properly.
Running the Application:
# Start MySQL Server
sudo service mysql start
# Run the Flask Application
python app.py
Using CI/CD Workflows:
The project includes GitHub Actions workflows for continuous integration and continuous deployment. These workflows are triggered on push and pull request events.
- Continuous Integration (CI): Runs tests and linting on pull requests and commits to the main branch.
- Continuous Deployment (CD): Deploys the application to GitHub Pages on successful builds.
Running Tests:
To run tests locally, use the following command:
npm test
Contributions are welcome. Here's how you can contribute:
-
Fork the Repository
-
Create a Feature Branch
git checkout -b feature/YourFeature
-
Commit Your Changes
git commit -am 'Add some feature'
-
Push to the Branch
git push origin feature/YourFeature
-
Submit a Pull Request
For queries or contributions, contact me at ivankokalovic@protonmail.ch.