VirtualWallet
MoneyMe - Java Spring Boot Fin-Tech Virtual Wallet Web-App
Install / Use
/learn @TelerikAcademyJavaA68Team2/VirtualWalletREADME
MoneyMe - Virtual Wallet (Spring Boot Project)
Access Our Project
We have deployed our project using Heroku and AWS RDB. Also, we provide Swagger API Documentation to facilitate testing and exploration of the REST API’s endpoints.
- App URL:
https://money-me-84fb9ba46b45.herokuapp.com/ - Swagger URL:
https://money-me-84fb9ba46b45.herokuapp.com/swagger-ui/index.html
Overview
MoneyMe is a secure and efficient digital wallet solution designed to help users manage their finances effortlessly. Users can deposit funds, transfer money, and exchange currencies, while administrators oversee platform activities to maintain security and efficiency.
Features
-
User Management
- Register and authenticate using JWT authentication.
- Manage user profiles and account settings.
-
Wallet & Transactions
- Add and manage credit/debit cards securely.
- Deposit money into the virtual wallet from linked bank cards.
- Transfer funds to other users via phone number, username, or email (after account verification).
- Exchange money with daily live exchange rates that update every 24 hours.
- View and filter transaction history by date, recipient, sender, etc.
- Set up and manage multiple virtual wallets, one wallet for each supported currency.
-
Security Features
- Email verification for registration completion.
- Admin-controlled user blocking/unblocking.
-
Administrative Controls
- Search, view, and manage users.
- Monitor and filter transactions.
- Adjust platform settings.
Technologies Used
- JDK 17
- Spring Boot framework
- MariaDB
- JPA
- JWT Authentication
- Swagger API Documentation
- Cloudinary API for Profile Picture Upload
- ExchangeRate API for Live Exchange Rate Update
- Starter Mail for Email Verification
- FormSpree for contact forms
- OAuth2 Google Login via Google Cloud
- Heroku for application hosting platform
- AWS MARIADB RDB for database hosting
Installation
Follow these steps to set up and run the application:
-
Clone the Repository
Download the project folder:git clone https://github.com/TelerikAcademyJavaA68Team2/VirtualWallet.git cd virtual-wallet -
Set Up the Database
- Create and configure a MariaDB database.
- Use the schema.sql script to create the database and data.sql to populate it.
-
Create .env file in root directory and configure variables
Create a .env file in the root directory of the project and add the following environment variables:MAIL_USERNAME=your.email@gmail.com MAIL_PASSWORD=mail.password CLOUDINARY_NAME=cloudinary.api.name CLOUDINARY_KEY=cloudinary.api.key CLOUDINARY_SECRET=cloudinary.api.secret DB_URL=your.db.url DB_USERNAME=db.username DB_PASSWORD=db.password EXCHANGE_RATE_API_URL=exchangerate.api.url EXCHANGE_RATE_API_KEY=exchangerate.api.key
⚠️ We recommend creating your own accounts for each service. If needed, we can provide shared credentials for development or demo purposes.
⚠️ If you want CI/CD to work using main.yml you must create github secrets in your github repository.
- Run the Application
ExecuteVirtualWalletApplication.classto start the project.
IMPORTANT NOTES
⚠️ For Testing Purposes
- The dummy data script uses the same encrypted password for all users:
"12345678", hashed as:
$2a$10$ML33hI.7hTPKXMV1s35D/udMXQtjFpOdYIGfu/IQ4GqqITPCP088m - The JWT token is set to expire after 100 days to facilitate testing.
⚠️ Security Disclaimer
- Do not use actual credit card details and personal information!
Database Diagram
Solution Structure
- Controllers: Handle HTTP requests and responses for user, transaction, and wallet-related endpoints.
- Services: Implement business logic for user management, transactions, and wallet operations.
- Repositories: Interface with the database for CRUD operations using JPA.
- Models: Represent entities such as Users, Transactions, Wallets, and Credit/Debit Cards.
- Utilities: Provide helper methods for security, validation, and transaction management.
Contributors
For further information, please feel free to contact us:
| Authors | Emails | GitHub | |-----------------------|------------------------------|--------------------------------------------------| | Georgi Benchev | gega4321@gmail.com | GitHub Link | | Ivan Ivanov | ivanovivanbusiness@gmail.com | GitHub Link |
Application Photos
Related Skills
node-connect
352.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
