next js.md

Tutoring centers: event registration using Next.js

Summary

A event registration blueprint for tutoring centers built with Next.js on Ample. Domain schema: course_groups (subject, level, start_at, end_at, capacity): tutoring groups; memberships (course_group_id, student_reference, guardian_reference, role): students, guardians and tutors; sessions (course_group_id, starts_at, tutor, attendance_count): session events; materials (course_group_id, title, object_key, visibility): worksheets and answer keys; events (seq, record_type, record_id, kind, at): application-owned history written in the same transaction. Public information: subjects and levels, schedule and locations, tutor qualifications. Kept out of scope until handling is reviewed: minor students and guardian identity, progress reports. Data about minors is sensitive; only group schedules and materials are modeled here.

Infrastructure requirements

Prerequisites

Steps

  1. Model the tutoring centers domain. Create the tables course_groups, memberships, sessions, materials, events.
  2. Workflow step 1. Model sessions with capacity and registrations with status.
  3. Workflow step 2. Register transactionally with a capacity check and an event per registration.
  4. Workflow step 3. Reject stale concurrent updates.
  5. Workflow step 4. Deploy and verify history and conflict handling.
  6. Deploy. Run the synchronous deploy once and read the result.
  7. Verify. Run the pattern self-test(s) from the example (/p/transactional-workflows) and your own acceptance checks for the tutoring centers workflow.

Tested examples

Success checks

Limitations

Cost estimate

Estimated 10.00 USD per month (size prices from pricing.toml at build revision a1b8c38919e59cd035ebabaced73cf84ece24371).

Verification evidence

Execution binding

MCP tool ample_deploy (registry mcp:ample_deploy), schema hash 876465fce906da0c observed 2026-09-21T03:19:59.461917+00:00 at revision 49962bcade4f, binding state current, required scopes: servers:write, databases:read, buckets:read.