A JavaFX desktop application for managing and discovering songs, built as a final project for CSC180.
- User authentication (login/signup)
- Song database management
- Web scraping for song data
- Interactive user interface
- MySQL database integration
- Java 18 - Core programming language
- JavaFX 18.0.2 - Desktop application framework
- Maven - Build automation and dependency management
- MySQL 8.0.32 - Database for user and song data
- JSoup 1.14.3 - Web scraping library
- Apache HttpClient 4.5.13 - HTTP client for web requests
- JUnit 5.10.2 - Testing framework
- Java 18 or higher
- Maven 3.6+
- MySQL server
- JavaFX runtime (if not included with your JDK)
git clone https://github.com/snxethan/CSC180-FINAL.git
cd CSC180-FINALMake sure you have MySQL running and create the necessary database and tables for the application.
mvn clean compilemvn javafx:runAlternatively, you can use the Maven wrapper:
./mvnw javafx:runsrc/
├── main/
│ ├── java/
│ │ └── csc180/townsend/ethan/finalcsc180/
│ │ ├── Controller/
│ │ │ ├── DatabaseController.java # Database operations
│ │ │ ├── HomeViewController.java # Home screen controller
│ │ │ ├── LoginController.java # Login screen controller
│ │ │ ├── SignupController.java # Signup screen controller
│ │ │ ├── Scraper/ # Web scraping components
│ │ │ └── Validator/ # Input validation
│ │ ├── SongApplication.java # Main application class
│ │ └── ChangeScene.java # Scene management utility
│ └── resources/ # FXML files and resources
└── test/ # Unit tests
- Login Screen - Users can log in with existing credentials or navigate to signup
- Signup Screen - New users can create accounts
- Home Screen - Main application interface for song management
- Database Integration - All user data and songs are stored in MySQL
- Web Scraping - Application can scrape song data from external sources
mvn testmvn clean packageThe application uses a modular structure defined in module-info.java and requires the following modules:
javafx.controlsjavafx.fxmljava.sqlorg.jsouporg.apache.httpcomponents.httpcoreorg.apache.httpcomponents.httpclient
- Ethan Townsend (snxethan)
- Tommy Southerland