GitHunt
BO

BogdanBargaoanu/MoneyStream

Full-stack application for real-time exchange rates, featuring data visualization and geolocation integration for location-based insights. ๐Ÿ’ต๐Ÿ’ฐ

MoneyStream

Streamlining your finances, empowering your future.

last-commit repo-top-language repo-language-count

Built with the tools and technologies:

React Bootstrap React Bootstrap React Router Axios React Table Google Charts Express Node.js MySQL JWT Swagger Nodemailer CORS dotenv


License: MIT



MoneyStream is a comprehensive platform designed to provide users with real-time exchange rates, manage exchange rate data, and visualize currency trends. It includes a robust backend server, an admin interface for managing data, and a client interface for end-users to view the best or nearest exchange rates.



Highlights

  • Featured in Internet of Things Student Challange 2025
  • Featured in InnovationLabs 2025

Deployment

Documentation

For a comprehensive documentation of this project, including system architecture, implementation details, please refer to the attached PDF document.

Note: The documentation is provided in Romanian.

Link to PDF

Summary

This repository contains three main components of the Exchange Rate Application:

  1. Server App: Backend server that handles API requests and database interactions.
  2. Exchange Admin App: Admin interface for managing exchange rates, locations, and currencies.
  3. Exchange Client App: Client interface for viewing the nearest and best exchange rates.

Setup Instructions

Prerequisites

  • Node.js and npm installed
  • MySQL database setup

Server App

  1. Navigate to the server directory:

    cd server
  2. Install dependencies:

    npm install
  3. Set up the database:

    • Update the database configuration in server/app.js.
  4. Environmental variables:

    • Create a .env file in the server directory.
    • Enter your SMTP credentials.
    • Enter the MySQL credentials.


    SMTP & MySQL

     SMTP_USER=your_email
     SMTP_PASS=your_password
     SECRET_KEY=your_secret_key
     MYSQL_HOST=your_host(localhost if locally)
     MYSQL_USER=your_user(root if default)
     MYSQL_PASS=your_mysql_pass
    • Create a .env file in the exchange-admin and exchange-admin directory.
    • Enter the API URL.


    Admin App & Client App

    REACT_APP_API_URL=your_IPV4_url
  5. Run the server:

    npm start

    The server will start on http://localhost:3000.

Exchange Admin App

  1. Navigate to the exchange-admin directory:

    cd exchange-admin
  2. Install dependencies:

    npm install
  3. Run the admin app:

    npm start

    The admin app will start on http://localhost:3001.

Exchange Client App

  1. Navigate to the exchange-client directory:

    cd exchange-client
  2. Install dependencies:

    npm install
  3. Run the client app:

    npm start

    The client app will start on http://localhost:3002.

Server App

  • API Security with JWT.
  • SMTP implementation.

The server uses JSON Web Tokens (JWT) to secure the API endpoints.

  • Data Encryption

User passwords are hashed using MD5 before being stored in the database to ensure security.

Exchange Admin App

  • Login Functionality with 2FA via email confirmation code.

The admin app includes a login page where administrators must authenticate using their credentials.

JWT tokens are used to manage sessions securely.

  • Manage exchange rates, locations, and currencies.
  • View and update rates.
  • Insert new rates.
  • Delete rates.
  • Data visualization using Google Charts.

Exchange Client App

  • View nearest exchange rates based on location.
  • View best exchange rates.
  • Map integration with Google Maps.
  • Reactive design.

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.


BogdanBargaoanu/MoneyStream | GitHunt