diff --git a/README.md b/README.md
index 286dfe2..3fede95 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,28 @@
-"# Online-Bus-Booking-Platform"
+# Online-Bus-Booking-Platform
+
+## Prerequisites
+- **Java 21 JDK** installed (javac and java in PATH)
+- **JavaFX SDK** bundled at `lib/javafx-sdk-21.0.6`
+- **MySQL Connector/J** at `lib/mysql-connector-j-9.2.0/mysql-connector-j-9.2.0.jar`
+- **jbcrypt** at `lib/jbcrypt-0.4.jar`
+- A running **MySQL** server with a database named `bus_booking`
+
+## Setup
+1. Update database credentials in `src/database/DatabaseConnection.java` if needed.
+2. Import schema and seed data if you have any SQL: `bus_booking.sql`.
+
+## Build
+```bash
+./compile.sh
+```
+
+## Run
+```bash
+./run.sh
+```
+
+The app starts at the login screen (`views/login.fxml`).
+
+## Notes
+- If you are on Wayland or a headless server, JavaFX may require additional flags or a virtual display.
+- To change window size, edit `src/Main.java`.
\ No newline at end of file
diff --git a/compile.sh b/compile.sh
new file mode 100755
index 0000000..2340759
--- /dev/null
+++ b/compile.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Directories
+ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
+SRC_DIR="$ROOT_DIR/src"
+OUT_DIR="$ROOT_DIR/out"
+JFX_LIB_DIR="$ROOT_DIR/lib/javafx-sdk-21.0.6/lib"
+MYSQL_JAR="$ROOT_DIR/lib/mysql-connector-j-9.2.0/mysql-connector-j-9.2.0.jar"
+JBCRYPT_JAR="$ROOT_DIR/lib/jbcrypt-0.4.jar"
+
+mkdir -p "$OUT_DIR"
+
+# Compile
+javac \
+ --class-path "$MYSQL_JAR:$JBCRYPT_JAR" \
+ --module-path "$JFX_LIB_DIR" \
+ --add-modules javafx.controls,javafx.fxml \
+ -d "$OUT_DIR" \
+ $(find "$SRC_DIR" -name "*.java")
+
+# Copy non-Java resources (FXML, images, styles) preserving relative paths (no rsync)
+(
+ cd "$SRC_DIR"
+ find . -type f \( -name "*.fxml" -o -name "*.css" -o -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" -o -name "*.gif" \) | while IFS= read -r rel; do
+ dest_dir="$OUT_DIR/$(dirname "$rel")"
+ mkdir -p "$dest_dir"
+ cp "$rel" "$dest_dir/"
+ done
+)
+
+echo "Compilation successful. Classes in $OUT_DIR"
\ No newline at end of file
diff --git a/out/Main.class b/out/Main.class
new file mode 100644
index 0000000..4d951ca
Binary files /dev/null and b/out/Main.class differ
diff --git a/out/controllers/AddBusController$1.class b/out/controllers/AddBusController$1.class
new file mode 100644
index 0000000..b3330ab
Binary files /dev/null and b/out/controllers/AddBusController$1.class differ
diff --git a/out/controllers/AddBusController$2.class b/out/controllers/AddBusController$2.class
new file mode 100644
index 0000000..9a5287c
Binary files /dev/null and b/out/controllers/AddBusController$2.class differ
diff --git a/out/controllers/AddBusController$3.class b/out/controllers/AddBusController$3.class
new file mode 100644
index 0000000..3c957c5
Binary files /dev/null and b/out/controllers/AddBusController$3.class differ
diff --git a/out/controllers/AddBusController$4.class b/out/controllers/AddBusController$4.class
new file mode 100644
index 0000000..81ed502
Binary files /dev/null and b/out/controllers/AddBusController$4.class differ
diff --git a/out/controllers/AddBusController$5.class b/out/controllers/AddBusController$5.class
new file mode 100644
index 0000000..bb0662d
Binary files /dev/null and b/out/controllers/AddBusController$5.class differ
diff --git a/out/controllers/AddBusController.class b/out/controllers/AddBusController.class
new file mode 100644
index 0000000..6f1fef3
Binary files /dev/null and b/out/controllers/AddBusController.class differ
diff --git a/out/controllers/AddScheduleController$1.class b/out/controllers/AddScheduleController$1.class
new file mode 100644
index 0000000..d54722c
Binary files /dev/null and b/out/controllers/AddScheduleController$1.class differ
diff --git a/out/controllers/AddScheduleController$2.class b/out/controllers/AddScheduleController$2.class
new file mode 100644
index 0000000..71c6f1a
Binary files /dev/null and b/out/controllers/AddScheduleController$2.class differ
diff --git a/out/controllers/AddScheduleController.class b/out/controllers/AddScheduleController.class
new file mode 100644
index 0000000..d50bf60
Binary files /dev/null and b/out/controllers/AddScheduleController.class differ
diff --git a/out/controllers/AdminController.class b/out/controllers/AdminController.class
new file mode 100644
index 0000000..7e0b69b
Binary files /dev/null and b/out/controllers/AdminController.class differ
diff --git a/out/controllers/LoginController.class b/out/controllers/LoginController.class
new file mode 100644
index 0000000..e793260
Binary files /dev/null and b/out/controllers/LoginController.class differ
diff --git a/out/controllers/PaymentController.class b/out/controllers/PaymentController.class
new file mode 100644
index 0000000..3e03811
Binary files /dev/null and b/out/controllers/PaymentController.class differ
diff --git a/out/controllers/RegisterController.class b/out/controllers/RegisterController.class
new file mode 100644
index 0000000..6dc21d6
Binary files /dev/null and b/out/controllers/RegisterController.class differ
diff --git a/out/controllers/UserBookingController.class b/out/controllers/UserBookingController.class
new file mode 100644
index 0000000..c049885
Binary files /dev/null and b/out/controllers/UserBookingController.class differ
diff --git a/out/controllers/UserController.class b/out/controllers/UserController.class
new file mode 100644
index 0000000..c95a8b4
Binary files /dev/null and b/out/controllers/UserController.class differ
diff --git a/out/database/DatabaseConnection.class b/out/database/DatabaseConnection.class
new file mode 100644
index 0000000..722529a
Binary files /dev/null and b/out/database/DatabaseConnection.class differ
diff --git a/out/models/Bus.class b/out/models/Bus.class
new file mode 100644
index 0000000..1f9c35d
Binary files /dev/null and b/out/models/Bus.class differ
diff --git a/out/models/BusSchedule.class b/out/models/BusSchedule.class
new file mode 100644
index 0000000..b70c307
Binary files /dev/null and b/out/models/BusSchedule.class differ
diff --git a/out/views/addBus.fxml b/out/views/addBus.fxml
new file mode 100644
index 0000000..d206429
--- /dev/null
+++ b/out/views/addBus.fxml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/out/views/addSchedule.fxml b/out/views/addSchedule.fxml
new file mode 100644
index 0000000..be14ea6
--- /dev/null
+++ b/out/views/addSchedule.fxml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/views/adminDashboard.fxml b/out/views/adminDashboard.fxml
new file mode 100644
index 0000000..0c5c776
--- /dev/null
+++ b/out/views/adminDashboard.fxml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/out/views/login.fxml b/out/views/login.fxml
new file mode 100644
index 0000000..4733745
--- /dev/null
+++ b/out/views/login.fxml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/views/payment.fxml b/out/views/payment.fxml
new file mode 100644
index 0000000..20d9d3a
--- /dev/null
+++ b/out/views/payment.fxml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/views/register.fxml b/out/views/register.fxml
new file mode 100644
index 0000000..a4224ae
--- /dev/null
+++ b/out/views/register.fxml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/out/views/userBooking.fxml b/out/views/userBooking.fxml
new file mode 100644
index 0000000..75d5973
--- /dev/null
+++ b/out/views/userBooking.fxml
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/views/userDashboard.fxml b/out/views/userDashboard.fxml
new file mode 100644
index 0000000..323fe82
--- /dev/null
+++ b/out/views/userDashboard.fxml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/run.sh b/run.sh
new file mode 100755
index 0000000..d9e1a62
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
+OUT_DIR="$ROOT_DIR/out"
+JFX_LIB_DIR="$ROOT_DIR/lib/javafx-sdk-21.0.6/lib"
+MYSQL_JAR="$ROOT_DIR/lib/mysql-connector-j-9.2.0/mysql-connector-j-9.2.0.jar"
+JBCRYPT_JAR="$ROOT_DIR/lib/jbcrypt-0.4.jar"
+
+if [ ! -d "$OUT_DIR" ]; then
+ echo "Build output not found. Compiling..." >&2
+ "$ROOT_DIR/compile.sh"
+fi
+
+# Run JavaFX app
+java \
+ --class-path "$OUT_DIR:$MYSQL_JAR:$JBCRYPT_JAR" \
+ --module-path "$JFX_LIB_DIR" \
+ --add-modules javafx.controls,javafx.fxml \
+ Main
+