Skip to content

Repository files navigation

Currency Converter 💱

A collaborative, multi-tier Java application developed as the Capstone project for CMSC 495. This project implements a real-time currency conversion engine with a Swing-based GUI, following the Model-View-Controller (MVC) design pattern.


🏗️ Project Architecture: Maven Structure

To support a cross-platform team using VS Code, IntelliJ, and Eclipse, this project utilizes a Standard Maven Structure. This ensures consistent builds, automated dependency management, and a clean Git history.

📁 Standardized Layout

All source code resides in the src/main/java directory. Please ensure every file includes the proper package declaration: package edu.cmsc495;

CMSC495/
├─ pom.xml                  # Maven Project Object Model
├─ mvnw, mvnw.cmd           # Maven Wrapper (Run without local Maven install)
├─ .mvn/                    # Wrapper configuration
└─ src/
   └─ main/
      └─ java/
         └─ edu/
            └─ cmsc495/     # Root Package
                Main.java
                CurrencyConverter.java   # Business Logic (Model)
                Converter_GUI.java       # User Interface (View)
                ConverterController.java # Logic Bridge (Controller)

🚀 Building and Running

We use the Maven Wrapper (mvnw) to ensure everyone on the team uses the same version of Maven, regardless of their IDE or local setup.

1. Compile the Project: Run this to compile the source code and ensure there are no syntax errors:

./mvnw clean compile

2. Run the Application: This launches the GUI and starts the application using the specified main class:

./mvnw exec:java -Dexec.mainClass=edu.cmsc495.Main

3. Run Unit Tests:

./mvnw test

🛠️ Team Git Workflow

Follow these steps to ensure smooth collaboration and prevent merge conflicts.

1. Environment Setup

  • Fork the repository to your own GitHub account.
  • Clone your fork locally:
    git clone [https://github.com/YOUR_USER_NAME/CMSC495.git](https://github.com/YOUR_USER_NAME/CMSC495.git)
    cd CMSC495

Step 2: Feature Branching

Always work on a new branch for every feature or fix. Never commit directly to main.

   git checkout main
   git pull origin main
   git switch -c feat/your-branch-name

Branch Naming Conventions:

  • feat/ — New features (e.g., feat/add-api-integration)
  • fix/ — Bug fixes (e.g., fix/decimal-rounding)
  • refactor/ — Code cleanup (no new features)
  • docs/ — Documentation updates

Step 3: Submission Process

  • Before pushing, ensure your code builds and passes all tests to avoid breaking the main project:
   ./mvnw clean compile test
   ./mvnw exec:java -Dexec.mainClass=edu.cmsc495.Main

If everything is working, push it to main and open a pull request

   git add .
   git commit -m "Brief description of what you implemented"
   git push -u origin feat/your-branch-name
  • Open a Pull Request (PR) on GitHub and request a review.

Step 4: Post-Merge Cleanup

Once your PR is merged and your work is part of the main codebase, sync your local environment:

   git checkout main
   git pull origin main
   git branch -d feat_OR_fix/your_old_branch_name

About

Cross-platform Java currency converter developed for the UMGC CMSC 495 capstone. Features a desktop GUI, live exchange rates via the Frankfurter API, input validation, and Maven-based builds/tests.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages