Skip to content
Snacks in a Van

INFO30005 University of Melbourne 2021, revived 2026

Coffee from the van around the corner.

Snacks in a Van is the food-ordering app our team built for a 2021 web-technologies brief: find the nearest roving snack van, order ahead and pick it up, while the crew inside runs a live order board. It is back as a full-stack Next.js app with a real database and a free, key-less map.

One click, no sign-up. Tip: open the customer and vendor demos in two tabs and watch an order move between them.

Watch the guided tour: three short videos

How it works

Three steps from craving to cup

  1. Find a van nearby

    Share your location or drop a pin. Open vans are ranked by distance and the five closest are highlighted, exactly as the 2021 controller did it.

  2. Order ahead

    Pick from the eight-item menu and place your order. You have ten minutes to change your mind or cancel.

  3. Ready in 15, or it's discounted

    Every order carries a 15-minute promise. If the van runs late, the order is flagged for the late-order discount.

Two portals

Built for both sides of the serving hatch

Customer app

Mobile-first, like a modern food-ordering app

  • Map of the five nearest open vans
  • Menu, cart and checkout
  • Live status timeline and 15-minute ring
  • Change or cancel within 10 minutes
  • Rate your orders, as in 2021
  • Community board and ratings

Vendor board

Dense and efficient, made for a tablet on the counter

  • Open or close the van
  • Set location by GPS or map click
  • Live board: preparing, ready, collected
  • Per-order countdown to the deadline
  • Late orders flagged automatically
  • Searchable order history

The coursework

What the brief asked for, and what we shipped

The brief imagined a business of roving vans selling coffee and snacks, and asked each team to build its web app across four milestones: a customer app to find a van, order and track it, and a vendor app to run the van and work through orders, all backed by a database and authentication, with extra credit for things like maps and ratings.

Our five-person team delivered both portals in Express, Handlebars and MongoDB, plus three bonus features: the nearest-van map, a community blog and order ratings. The revival keeps the original rules (the ranking maths, the 10-minute change window, the 15-minute promise and the order states) and ports them to TypeScript with tests that run the 2021 code side by side.

Cappuccino$4.99Latte$4.99Flat White$4.99Long Black$4.99
portals: customers & vendors
2
data models, ported to SQL
5
Handlebars pages in 2021
25
snacks on the menu
8
nearest vans shown
5
pickup promise
15 min

About this project

INFO30005 Web Information Technologies

University of Melbourne · Semester 1, 2021 · Group 4399, tutorial T03.

  • Sunchuangyu (Rin) Huangrevival

    Vendor app design, customer ordering, outstanding-orders list, customer & vendor login, the map (nearest van) and blog bonus features, vendor CSS. Led the 2026 revival.

  • Bin Liang

    Database schema design, snack details, marking orders fulfilled, order details, completed orders, the rating bonus feature.

  • Declan Gannon

    Customer app foundations, menu styling, customer profile, vendor order search, the project report and test suites.

  • Khin Liew

    Customer app foundations and mock-up annotations, starting an order, vendor outstanding orders, history and order details.

  • Wei (Eric) Zhao

    Customer design polish, van status, multi-snack orders, cart features and CSS, password hashing, Passport strategies and route guards.

Original stack vs revived stack
Layer20212026
Web frameworkExpress 4 + Handlebars viewsNext.js 16 App Router: Server Components, Server Actions, Route Handlers
DatabaseMongoDB Atlas + Mongoose (now gone)SQLite / libSQL (Turso in production) + Drizzle ORM, seeded demo data
AuthPassport-local + express-sessionbcrypt + signed httpOnly session cookies (jose), one per portal
Maps & placesGoogle Maps JS API + OpenCageMapLibre GL + OpenFreeMap tiles + Photon geocoding, no API keys
StylingHand-written CSS per pageTailwind CSS v4 + shadcn/ui, light and dark themes
Live updatesFull page reload every 60 sPolling Route Handlers every 3–4 s with SWR
TestingJest + SupertestVitest unit and parity tests run against the original JavaScript
HostingHerokuVercel

Academic integrity. The original 2021 submission is preserved unchanged in the repository's coursework folder for reference, apart from redacted secrets. The assignment brief and course materials are not reproduced here; the description above is a paraphrase.

View the code on GitHub

Fancy a flat white?

The vans around Melbourne Uni are open. Jump in as a customer or behind the counter.