Thant Thu Aung
All work

Agile delivery · web app · Team of 2 · Advanced Software Engineering, JCU · 2025

Running the sprints and the docs for a two-person web app

A two-person Agile project: a booking system for the JCU Singapore gym. My teammate Sein Linn designed the system and wrote most of the code. I ran our sprints and led the documentation, so this case study is about how we planned, tracked and reported the work.

My role
Scrum coordinator · Documentation lead
Team
2 students, with Sein Linn (system design and most of the code)
When
3 Jun – 30 Jul 2025, two iterations
Team stack
Next.js · TypeScript · PostgreSQL (Neon) · GitHub Projects
Admin dashboard overview with totals for users, active members, pending approvals and revenue, above a list of recent registrations marked Pending or Active.
JCU Fitness Center registration form, step one of three (Account, Membership, Payment), with fields for name, JCU email, student ID, phone and password.
The finished app: the admin console (approvals, members, sessions, bookings and billing) and the three-step registration form, running locally with demo data.

The project

For Advanced Software Engineering we built a web prototype that handles membership, session booking and administration for the James Cook University Singapore gym. We worked in two iterations with user stories, planning-poker estimates, a GitHub Project board, and burndown and velocity charts.

There were two of us. Sein Linn designed the architecture and wrote most of the application code. I ran the Scrum process and led the documentation: turning the brief into stories, planning and tracking both sprints, and writing up what happened.

Two kinds of users with different jobs

Members (students and staff)

  • Register online with a JCU account
  • Book sessions in advance, with live capacity
  • See upcoming bookings and history

Administrators

  • Approve, reject or suspend accounts
  • Create and manage sessions
  • Track usage, bookings and billing records

We wrote eight user stories with a first estimate of 27 days in total, and prioritised registration, session booking and admin user management as must-haves.

What I did

  • Scrum coordination: sprint planning and task allocation, the GitHub Project board (issues, labels, pull requests), and the burndown and velocity charts for both iterations.
  • User stories: each with a priority, an estimate, acceptance criteria and a task breakdown.
  • Documentation: iteration reports, retrospectives, technical documentation and the final report.

Sein Linn designed the system architecture and built most of the app, including session booking, the admin and analytics dashboards, reminders and the virtual tour.

How we ran the project

  1. Write stories someone can test

    Every story had acceptance criteria, not just a description. Registration, for example, needed a form with name, JCU email and password; password validation and hashing; a confirmation on signup; and secure storage. That gave us a clear definition of done for each feature.

  2. Get a working prototype first

    Iteration 1 took the high-priority stories (registration, session booking and admin user management) plus managing bookings, so the core flow worked end to end early. Iteration 2 added booking statistics, session reminders and the virtual tour.

  3. Plan from measured velocity

    Iteration 1 was planned at about 3.5 productive days per developer per week. Iteration 2 came in at 2.4, because its stories were heavier on logic (data aggregation and scheduling), and the velocity chart recorded that slowdown.

  4. Make progress visible

    Work was tracked on the GitHub Project board with issues, labels and pull requests, and I kept the burndown and velocity charts up to date through each iteration, so we could see whether we were on track.

  5. Turn the retrospective into actions

    After iteration 1 we agreed on specific changes: smaller tasks, backend-heavy work earlier, interface time planned in from the start, a test checklist for each story, and clear ownership of security-critical features.

Iteration 13 Jun – 4 Jul 2025
Iteration 25 – 30 Jul 2025
The burndown charts I kept for both iterations, in person-days remaining.

What the team delivered

The app uses the Next.js App Router, with API route handlers as the backend and PostgreSQL on Neon. New members register and wait for admin approval, then book sessions with live capacity; admins manage accounts, sessions, bookings and billing.

Entity-relationship diagram with users, admins, sessions, bookings, cancellations, reminders and gym tour tables and their foreign keys.
The entity-relationship diagram we designed during planning.

What we delivered

user stories planned and estimated
8
iterations, 3 Jun – 30 Jul 2025
2
person-days of work (32 + 21)
53

Why 27 days became 53. The first backlog estimate was 27 days for all eight stories. When we broke the stories into tasks at iteration planning, the estimate grew to 51 person-days (30 + 21), and we logged 53. Our retrospective names that underestimate as the main lesson.

By the end of the second iteration the app covered registration with admin approval, session booking with capacity tracking, booking history, an admin console with statistics and billing records, and a virtual gym tour. Session reminders reached a working backend.

What I’d do differently as Scrum coordinator

  • Estimate at task level from the start. The first estimate nearly doubled once stories were broken into tasks. Tasking before committing would have given us a realistic plan on day one.
  • Check acceptance criteria against the build before sign-off. Our registration story asked for passwords of 8+ characters with mixed case, a number and a symbol; the finished server accepts 6+. The per-story test checklist from our retrospective is exactly what catches gaps like this.
  • Test edge cases inside the sprint. Duplicate bookings and bad inputs were tested late, so small bugs surfaced at the end instead of during development.
  • Re-scope slipping stories early. Managing bookings ran over in iteration 1, and reminders finished with only the backend working. Splitting those stories sooner would have kept the board honest.