Skip to content
ElevateEngine

Case study / School food operations

RaftersOne connected system for school meals.

A connected school-meals platform spanning ordering, allergens, payments, recurring orders, notifications, and staff operations.

OrderingMobile appsPayments
Rafters mobile school-meal ordering, menu and cart experienceProduct preview

What changed

Useful outcomes for the people using it.

  • Families can order meals and manage payments through web and mobile.
  • Recurring lunch preferences reduce repeated weekly order entry.
  • School teams manage menus, orders, and staff workflows in one platform.

Public product evidence

Live apps. Independently visible.

1K+Google Play downloads ↗
iOS + AndroidLive store listings
One APIShared web and app workflows

Download count checked on 24 October 2026. Platform availability and shared architecture are delivery evidence; no time-saving or revenue estimate is implied.

“great app very easy to use”
MollyKB48 · Rafters app user · 28 August 2025
Read the independent App Store review ↗

01 / The challenge

The problem behind the project.

Rafters were managing school lunch orders across multiple schools via phone calls and paper forms. Inventory was tracked on spreadsheets, payments were manual, and staff spent hours each day on admin that should have been automated.

02 / The solution

A system that joins the dots.

We built the whole system end to end: a multi-tenant Django platform serving a Next.js web app and native iOS and Android apps from one API. Parents, teachers, canteen staff, managers, workers and administrators each get their own role-scoped experience across primary and secondary schools — with real-time ordering, Stripe payments, allergen-aware menus, automated inventory and a full analytics layer behind it.

  • Multi-tenant architecture — every school runs its own menus, cut-off times, pricing and staff hierarchy from a single shared platform
  • Native iOS and Android apps in React Native, sharing one Django REST API with the web platform
  • Rolling orders — parents set a recurring weekly lunch preference per child and the system generates and charges the orders automatically
  • Payments and credits — Stripe card payments on web and in-app, account credit balances, wallet top-ups and refunds
  • Menu management — school-specific meal categories, prices, ingredients, allergens and scheduled menu cycles
  • Allergen management down to the individual student, so unsafe items are filtered out of a child's menu before they can be ordered

Engineering foundation

Next.jsReact 19React NativeDjangoDjango REST FrameworkPostgreSQLStripeFirebase Cloud MessagingRedux ToolkitAWS EC2TypeScript

03 / Inside the workflow

Small decisions. A connected whole.

Open a workflow to explore the need, the experience, and what changes for the people using it.

01

School-specific ordering

A shared platform with school-specific menus, pricing, cut-off times and staff roles.

  1. 01School and student
  2. 02Relevant menu
  3. 03Order
  4. 04School operations
The approach
The Next.js website and React Native apps use one Django REST API. School context determines the menu and ordering experience.
What changes
Parents and school teams work within the same ordering platform, with an experience tailored to their school.
02

Payments and credits

Stripe card payments, account credits, wallet top-ups and refunds across web and mobile.

  1. 01Choose meals
  2. 02Card or credits
  3. 03Confirm payment
  4. 04View balance
The approach
Customers can pay by card or use available credits. The app displays the credit balance and checks that it covers the order before allowing credit payment.
What changes
Customers can manage their balance and pay for meals within the same ordering journey.
03

Allergy management

Individual allergy profiles alongside meal allergen, ingredient and nutritional information.

  1. 01Student allergy profile
  2. 02Filtered menu
  3. 03Review meal details
  4. 04Choose meal
The approach
The ordering experience uses the selected student's allergy profile to filter incompatible menu items. Meal details also show allergen information before ordering.
What changes
Dietary requirements are part of the ordering workflow, helping families choose suitable meals for each child.
04

Menu management

Central menu management with school assignments, meal categories, pricing, ingredients, allergens and menu cycles.

  1. 01Manage meals
  2. 02Assign school and schedule
  3. 03Activate menu
  4. 04Web and app ordering
The approach
Administrators manage menus and their schedules. The shared API returns the active weekly menu for the selected school, including meal details and prices.
What changes
Teams manage school menus centrally, and families see the relevant meals in the web and mobile ordering journeys.
05

Rolling orders

Recurring weekly meal preferences for each child, with controls to enable or disable rolling orders.

  1. 01Select child
  2. 02Save weekly preferences
  3. 03Enable rolling orders
  4. 04Automatic orders and charging
The approach
Parents save weekly lunch preferences. The platform uses those preferences to generate recurring orders and handle charging automatically.
What changes
Families can maintain a regular lunch routine with less repeated order entry.
06

Notifications

In-app notifications and push delivery, with campaign scheduling and per-user read tracking.

  1. 01Create message
  2. 02Schedule delivery
  3. 03Push and in-app notification
  4. 04Open and track read status
The approach
The notification engine delivers messages through Firebase Cloud Messaging. Users can open notifications in the app, while the platform records read status.
What changes
Families can receive updates and revisit messages within the same app they use to order meals.
07

Support chatbot

An integrated Rafters assistant with suggested FAQs and conversational support.

  1. 01Open assistant
  2. 02Choose FAQ or ask question
  3. 03Support API response
  4. 04Continue conversation
The approach
Users open the assistant in the app, choose an FAQ or type a question. The chatbot sends the question and conversation history to the shared support API and displays the response.
What changes
Customers can ask for help while using Rafters, with answers available in the same interface.
08

Integrated staff room

A staff room connected to staff accounts, with a document dashboard and individual document views.

  1. 01Staff sign-in
  2. 02Assigned documents
  3. 03Read document
  4. 04Track viewing status
The approach
Staff sign in to access their assigned documents. The dashboard shows whether each document has been viewed, and administrators manage staff documents within the platform.
What changes
Workplace information and document viewing status sit within the wider Rafters system.
09

From paid order to meal collection

Kitchen manifests, inventory tools and QR-based collection checks.

  1. 01Paid orders
  2. 02Kitchen manifest
  3. 03Meal preparation
  4. 04QR collection check
The approach
Scheduled jobs prepare operational outputs. At collection, the application checks the student's scan against the day's paid orders.
What changes
Kitchen preparation and collection use the order information already captured by the platform.

Explore the product

Start a conversation

Let’s build your next chapter.

If this connects with a challenge in your business, tell us where you want to go. We’ll help shape the next useful step.