SkillAgentSearch skills...

VirtualWallet

MoneyMe - Java Spring Boot Fin-Tech Virtual Wallet Web-App

Install / Use

/learn @TelerikAcademyJavaA68Team2/VirtualWallet
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

MoneyMe - Virtual Wallet (Spring Boot Project)

MoneyMeLogo

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.

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:

  1. Clone the Repository
    Download the project folder:

    git clone https://github.com/TelerikAcademyJavaA68Team2/VirtualWallet.git
    cd virtual-wallet
    
  2. 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.
  3. 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.

  1. Run the Application
    Execute VirtualWalletApplication.class to 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

database_schema

<br>

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Related Skills

View on GitHub
GitHub Stars4
CategoryDevelopment
Updated10mo ago
Forks1

Languages

Java

Security Score

62/100

Audited on May 25, 2025

No findings