yatinannam/QuickBite
A JavaFX-based restaurant ordering system with login, menu browsing, and cart management using SQLite.
QuickBite - A Restaurant Food Ordering System
QuickBite — a small JavaFX desktop food-ordering application with user authentication, a structured menu, cart & quantity controls, and a local SQLite backend.
Designed for teaching, demos, and academic project submissions — clean, fully local, and easy to run.
Table of Contents
- Project Overview
- Features
- Images
- Tech Stack
- Prerequisites
- Project Structure
- Database (quickbite.db)
- Default Accounts / Credentials
- Build a Distributable JAR
- Contributing
Project Overview
QuickBite is a desktop application that simulates a simple restaurant ordering system.
It demonstrates key Java and database integration concepts such as:
- JavaFX UI (FXML + Controllers)
- Local SQLite database for users, menu items, and seeded data
- Secure password hashing using BCrypt
- A shopping cart system (add/remove/quantity) with runtime persistence
This project is student-friendly and designed for extensions such as:
- Admin dashboard and order management
- Persistent order history
- Client-server migration
Features
- Login / Register (with password hashing)
- Personalized Dashboard (per-user)
- Structured Menu with categories and search
- Add items to cart (with quantity controls + / −)
- Per-item Remove, Clear Cart, and Checkout functionality
- Local SQLite database auto-created (
db/quickbite.db) - Modular, extendable architecture
Images
Tech Stack
- Java 21 (OpenJDK / Oracle JDK)
- JavaFX 21 (FXML)
- Maven build system
- SQLite (via
sqlite-jdbc) - BCrypt (
org.mindrot:jbcrypt) for password hashing
Prerequisites
Install the following on your development machine:
- JDK 21 — check using
java -version - Maven — check using
mvn -v - (Optional) VS Code with Java extensions or IntelliJ IDEA
- (Optional) DB Browser for SQLite (to inspect
quickbite.db)
Project Structure
QuickBiteApp/
├─ pom.xml
├─ README.md
├─ src/
│ └─ main/
│ ├─ java/com/quickbite/
│ │ ├─ MainApp.java
│ │ ├─ controllers/
│ │ │ ├─ LoginController.java
│ │ │ ├─ DashboardController.java
│ │ │ ├─ MenuController.java
│ │ │ ├─ CartController.java
│ │ │ └─ MenuItem.java
│ │ └─ util/
│ │ ├─ Database.java
│ │ └─ CartManager.java
│ └─ resources/fxml/
│ ├─ login.fxml
│ ├─ dashboard.fxml
│ ├─ menu.fxml
│ └─ cart.fxml
└─ db/
└─ quickbite.db (created at runtime, ignored by git)Install & Run
Open a terminal at the project root (folder that contains pom.xml):
-
Build and run with Maven (recommended)
mvn clean javafx:run
-
If you prefer to compile only
mvn clean compile
-
If
mvnnot found — install Maven OR use your IDE's Maven runner (VS Code: Maven extension → runjavafx:run). -
Stopping the app — focus the terminal and press
Ctrl + C.
Database (quickbite.db)
-
The DB is automatically created in
db/quickbite.dbwhen you run the app for the first time. -
It is a SQLite file (binary) — do NOT open it with a text editor. Use DB Browser for SQLite or the VS Code SQLite extension to browse.
-
Tables created and seeded:
users,menu(sample items). -
If you want a fresh DB: delete
db/quickbite.dband re-run the app (mvn clean javafx:run) — it will recreate and reseed.Quick SQL (view inside sqlite3 shell or DB Browser)
-- show tables .tables -- view menu SELECT id, name, price, description FROM menu;
Default accounts / credentials
-
Administrator:
username:admin
password:admin123 -
Register new users using the Create Account / Register screen.
Build a distributable JAR
You can build a JAR with dependencies using Maven.
(note: JavaFX runtime modules may still need to be present at runtime or you can package a native bundle; the plugin used here is JavaFX Maven plugin).
-
Package:
mvn clean package
-
To run the packaged app with JavaFX modules:
mvn javafx:run
Contributing
If you want to make changes or extend the project:
- Fork the repo (on GitHub).
- Create a feature branch:
git checkout -b feature/your-feature - Make commits with clear messages.
- Open a Pull Request describing the change.


