Design preview · sample data only · Client proposal (PDF)

School book supply, end to end

Every school list.
Approved before it sells.

One website where schools publish their syllabus book lists, retail branches approve and price them, and parents order the exact set their child needs — with stock, payment and delivery tracked in one place.

  • 4 roles, 3 portals
  • 98 acceptance items
  • 12-week delivery

Start where a parent starts

Choose the school. See the approved list.

A parent never browses a generic bookstore. They pick their school first, and only the syllabus list approved for that school and class appears. Try the picker below — it uses sample schools, not real client data.

Selected school None yet — choose one above

Open the parent demo

Three portals, one workflow

Each role sees only what it should.

The system is not one admin screen with different labels. Each portal has its own scope, its own actions, and data separation enforced on the server — not hidden in the interface.

Parent portal Role 1

Register against a school, add each child with their enrollment ID, see the approved syllabus set, order the full set in one click, pay online and follow the courier timeline.

Preview the parent view

School portal Role 2

Import the book list from Excel or enter it manually, fix row-level errors, submit a version for approval, and track exactly what was approved, rejected or sent back for changes.

Preview the school view

Branch portal Role 3

Own schools, staff, catalogue, prices and stock. Review submissions with a before/after diff, approve them, publish to parents, then pack, dispatch and reconcile orders and refunds.

Preview the branch view

The part that is not an online shop

A book list has to earn its way to the cart.

The approval gate is built into the data model. A school cannot publish to parents directly, and a branch cannot skip pricing or stock confirmation.

School imports its list

Excel template with class, subject, title, edition, publisher and quantity. Row errors are shown before anything is submitted.

Draft version

Branch reviews & prices

A before/after diff, comments, approve, reject or request changes. Prices and stock are confirmed at this step, not by the school.

Approval gate

Parent orders the set

The approved list appears only for that school and class. Parents add the full set or single books, pay online, and get a receipt.

Paid only on server confirmation

Branch packs & dispatches

Stock is reserved at payment, then packed and dispatched with courier and AWB. Parent and school both see the tracking timeline.

Tracked delivery

Built for the failure cases

The hard parts are in scope, not in phase two.

Most of the engineering is not the storefront. It is what happens when a payment webhook repeats, stock runs out, or the wrong branch tries to open another school's order.

Approval gate enforced in code

Versioned lists, before/after diff, comments, and atomic publish. Unapproved or withdrawn books cannot be ordered, whatever the URL says.

Excel import that explains itself

Template download, validation preview, row and column errors, duplicate detection and batch history — tested at 500 and 5,000 rows.

Stock reservation with expiry

Reserved at payment, released on failure or timeout, with low-stock flags. Concurrency is tested so two parents cannot buy the last copy.

Payments verified server-side

Hosted checkout, signed webhook verification, idempotent handling and receipts. Card data never touches the application server.

Scoped roles and audit history

Super admin, branch admin, school admin and parent. Every privileged action — approval, price, stock, refund — is written to an audit log.

Dispatch and tracking, shared

Pack, dispatch, AWB and delivery status in one timeline. The school sees its students' delivery progress — not what parents spent.

Planning pack · Option B

Twelve weeks, sequenced around the risk.

The plan proves the school → branch → parent approval chain before payment and courier work starts. Scope is a 98-item acceptance checklist, so "done" is measurable rather than a matter of opinion.

Read the plan and TRP
12Weeks to launch
98Acceptance items
35Core screens
125Person-days