A JavaFX-based student notification and management system built with Java 21 and Maven.
- Student Management: Add, edit, and track student information
- Subject Tracking: Manage subjects and course assignments
- Records Management: View and manage academic records
- Email Notifications: Send automated email notifications
- Database Integration: MySQL backend for data persistence
- Modern UI: Clean JavaFX interface with custom styling
This project follows standard Maven conventions. See STRUCTURE.md for detailed documentation.
src/
├── main/
│ ├── java/com/notif1ed/
│ │ ├── Notif1ed.java # Main application
│ │ ├── controller/ # UI controllers (MVC)
│ │ ├── model/ # Data models
│ │ └── util/ # Utilities (DB connection)
│ └── resources/com/notif1ed/
│ ├── view/ # FXML files
│ ├── css/ # Stylesheets
│ └── images/ # Application images
└── test/java/com/notif1ed/ # Unit tests
This section describes a tested, repeatable way to run the app on Linux (adapt the paths for macOS/Windows).
Prerequisites
- Java 21 (JDK 21) installed
- MySQL server
- Git
- Set your JAVA_HOME for this session (you provided this path):
export JAVA_HOME=/usr/lib/jvm/jdk-21.0.8-oracle-x64
export PATH="$JAVA_HOME/bin:$PATH"To make it persistent (Bash):
printf '\n# Java 21\nexport JAVA_HOME=/usr/lib/jvm/jdk-21.0.8-oracle-x64\nexport PATH="$JAVA_HOME/bin:$PATH"\n' >> ~/.bashrc
source ~/.bashrc- Make the Maven wrapper executable (only once):
chmod +x ./mvnw- Configure the database
- Create the application database and a user (example):
CREATE DATABASE notified_DB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'notifuser'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON notified_DB.* TO 'notifuser'@'localhost';
FLUSH PRIVILEGES;- Update
src/main/java/com/notif1ed/util/DatabaseConnectionn.javato match your DB credentials:
private static final String URL = "jdbc:mysql://localhost:3306/notified_DB";
private static final String USER = "notifuser";
private static final String PASSWORD = "your_password";- Run the application (recommended):
./mvnw javafx:runThis uses the javafx-maven-plugin configured in pom.xml and will download required JavaFX modules automatically.
- Build a distributable JAR
./mvnw clean packageThe artifact will be created in target/ (e.g. target/Notif1ed-1.0.0.jar). Note: running that jar directly may still require JavaFX on the module path.
To run the jar with a local JavaFX SDK (example):
java --module-path /path/to/javafx-sdk-21/lib --add-modules=javafx.controls,javafx.fxml -jar target/Notif1ed-1.0.0.jar- IDE usage
- Import the project as a Maven project in IntelliJ or NetBeans.
- Set the project's SDK to JDK 21.
- Run
com.notif1ed.Notif1edas a Java application. If the IDE complains about JavaFX runtime, either use the Maven run configuration or add JavaFX as a library/module.
Troubleshooting
- If
./mvnwfails with a Java version error, ensurejava -versionreports a Java 21 runtime. - If you see
MySQL JDBC Driver not found, Maven should downloadmysql-connector-jfrompom.xml; make sure./mvnw clean packagecompletes without errors. - If FXML resources are not found, verify they exist in
src/main/resources/com/notif1ed/view/and that code loads them withgetResource("/com/notif1ed/view/LandingPage.fxml")(absolute path from classpath root).
Helpful commands
# check Java
java -version
javac -version
# make mvnw executable (if needed)
chmod +x ./mvnw
# build
./mvnw clean package
# run via Maven/JavaFX plugin
./mvnw javafx:run
# run compiled jar (if using a local JavaFX SDK)
java --module-path /path/to/javafx-sdk-21/lib --add-modules=javafx.controls,javafx.fxml -jar target/Notif1ed-1.0.0.jarFiles to edit for local setup
src/main/java/com/notif1ed/util/DatabaseConnectionn.java— set your JDBC URL, username, and password.- Optionally: any controller that contains email settings (search for SMTP or mail properties in
src/main/java/com/notif1ed/controller).
Notes
pom.xmltargets Java 21 and pulls JavaFX 21.0.5 via Maven dependencies and thejavafx-maven-plugin.- For a portable runtime image consider adding a
jlinkor an assembly profile — I can add ajlinkprofile if you want a single native image for Linux.
- STRUCTURE.md: Detailed project structure and organization
- database/README.md: Database schema and setup instructions
- Java 21 - Latest LTS version
- JavaFX 21.0.5 - UI framework
- Maven - Build and dependency management
- MySQL Connector/J 9.2.0 - Database connectivity
- JavaMail 1.6.2 - Email functionality
If you'd like, I can also:
- run a quick
./mvnw -vand./mvnw clean packagehere and paste back the output, - or add a
Makefileorrun.shwrapper that setsJAVA_HOMEand runs the project for you.