| # | User Story | Role | Member | HTTP | Entity |
|---|---|---|---|---|---|
| 1 | Register an account (faux login) | Patient | Member 1 | — | Auth |
| 2 | Search for clinics | Patient | Member 1 | GET | Clinics |
| 3 | View clinics with search/sort | Patient | Member 1 | GET | Clinics |
| 4 | Add new vaccines to offerings | Manager | Member 1 | POST | Vaccines |
| 5 | Delete a planned vaccination/vaccine | Manager | Member 1 | DELETE | Vaccines |
| 6 | Create clinician accounts | Manager | Member 1 | POST | Staff |
| 7 | Update clinician account details | Manager | Member 1 | PUT | Staff |
| 8 | Protected routes + role-based nav | All | Member 1 | — | Auth |
| 9 | Create patient accounts | Manager | Member 2 | POST | Patients |
| 10 | Search for patient accounts | Manager | Member 2 | GET | Patients |
| 11 | Modify patient details | Manager | Member 2 | PUT | Patients |
| 12 | Create appointment bookings | Manager | Member 2 | POST | Appointments |
| 13 | Assign clinician to appointment | Manager | Member 2 | POST/PUT | Appointments |
| 14 | Reschedule appointments | Manager | Member 2 | PUT | Appointments |
| 15 | Cancel appointments | Manager | Member 2 | DELETE | Appointments |
| 16 | Reassign clinicians to appointments | Manager | Member 2 | PUT | Appointments |
| 17 | View assigned appointments | Clinician | Member 3 | GET | Appointments |
| 18 | View appointment details + booking notes | Clinician | Member 3 | GET | Appointments |
| 19 | Record whether vaccination delivered | Clinician | Member 3 | POST | Vaccinations |
| 20 | View vaccination outcomes | Patient | Member 3 | GET | Vaccinations |
| 21 | Delete a vaccination record | Manager | Member 3 | DELETE | Vaccinations |
| 22 | View invoices | Manager | Member 3 | GET | Invoices |
| 23 | Backend architecture + database schema | All | Member 3 | — | All |
| Segment | Speaker | Duration | Cumulative |
|---|---|---|---|
| Group Introduction | All 3 | 0:45 | 0:45 |
| Login + Protected Routes | Member 1 | 1:00 | 1:45 |
| Clinics — Search & View | Member 1 | 0:45 | 2:30 |
| Vaccines — Add & Delete | Member 1 | 1:15 | 3:45 |
| Staff — Create & Update | Member 1 | 1:30 | 5:15 |
| Patients — Create, Search, Modify | Member 2 | 1:30 | 6:45 |
| Appointments — Create & Assign | Member 2 | 1:30 | 8:15 |
| Appointments — Reschedule & Cancel | Member 2 | 1:30 | 9:45 |
| Clinician — View Appointments | Member 3 | 1:00 | 10:45 |
| Vaccinations — Add & View & Delete | Member 3 | 1:30 | 12:15 |
| Invoices — View | Member 3 | 0:30 | 12:45 |
| Backend + Database Demo | Member 3 | 1:30 | 14:15 |
| Closing Summary | All 3 | 0:30 | 14:45 |
| TOTAL | ~14:45 |
Duration: ~45 seconds | All members
Duration: ~4 min 30 sec | Member 1
/login)./patients in the URL bar…"/patients directly in the browser URL bar./login — the ProtectedRoute component blocks access./login.allowedRoles prop on the protected route."/staff via URL redirects./api/clinics.Clinics table → Browse./api/vaccines.Vaccines table → Browse. Note row count./api/vaccines. The new vaccine now appears in our list."Staff table → Browse. Note row count./api/staff/:id."Duration: ~4 min 30 sec | Member 2
Patients table → Browse. Note row count.Appointments → Browse. Note row count./api/appointments/:id."Duration: ~4 min 30 sec | Member 3
Vaccinations → Browse. Note row count./api/invoices.Invoices → Browse.database.js establishes the MySQL connection using mysql2/promise."database.js in VS Code.Controller.js implements a generic CRUD controller — a single class for any entity using model query builders."Controller.js → scroll through methods.app.js imports all nine entity models, creates Controller instances, and defines API routes with CORS middleware."app.js → scroll through routes.appointmentsModel.js includes LEFT JOINs to resolve foreign keys."models/appointmentsModel.js → show SELECT with JOINs.traveljabsv1db → show table list.Appointments → Structure tab → point at FK columns.Duration: ~30 seconds | All members
"Hello and welcome. We are Group 46 from CI5320 — Web Application Development. Our project is Travel Jabs, a web application for managing travel immunisation appointments across UK clinics. The app is built with React JS on the frontend and Express JS with MySQL on the backend. Today, [Member 1 Name] will cover authentication, clinics, vaccines, and staff management. [Member 2 Name] will demonstrate patient and appointment workflows. And [Member 3 Name] will show the clinician experience, vaccinations, invoices, and our backend architecture. Let's get started."
"That concludes our demonstration of the Travel Jabs application. We've shown a full-stack implementation covering all major CRUD operations, role-based access control, and database integration across nine entities. Thank you for watching — Group 46."