STStephen TioluwaniAll work

Client product · 2026

Learning platform · Billing + live classes

Full-stack product engineering

OneStepSmarter

Hardening the workflows a school cannot afford to get wrong.

OneStepSmarter is a learning platform where parent billing, learner provisioning, timetables, live classes, assignments and notifications all meet. My most valuable work was making those flows correct under retries, delayed events and real production timing.

The thesis

“In school software, a stale webhook can become a locked-out learner. Correctness is user experience.”

189 / 189

Security tests

The assignment-publication release passed the repository security suite on its exact reviewed head.

Exact invoice

Payment retry

A parent retries the existing failed Stripe invoice instead of accidentally creating a second subscription.

Immutable

Publication events

Republishing creates a new event identity while stale queued work is superseded.

01 · Production truth

Webhooks arrive late. The product still has to be right.

Billing state cannot be whichever webhook arrived most recently. OneStepSmarter re-reads current Stripe truth before applying events that could regress a paid invoice or overwrite a newer subscription state.

The same hardening stopped an open, unattempted renewal invoice from being treated as a payment failure and prevented a completed learner checkout from being superseded by a newer checkout.

02 · Parent billing

Retry the debt, not the subscription.

For a past-due learner, the retry flow pays the exact existing Stripe invoice. It does not create a Checkout Session or replacement subscription. Operation claims make duplicate retries converge on one logical attempt.

Cancellation is previewed from authoritative Stripe state before confirmation. A stale legacy cancellation endpoint fails closed and forces the client into the newer review-and-confirm flow instead of performing a destructive action under old assumptions.

03 · Live classrooms

Ending class became a durability operation.

A previous 1.5-second race could let the teacher tab close without proving that the class end was durable. The hardened flow records the end state first; a failed write leaves the page open with a retryable error.

Unexpected LiveKit disconnects request a fresh join token for recovery instead of assuming the old session is still valid.

04 · Notifications at school scale

Publishing an assignment should stay fast even when the audience is large.

Assignment and assessment publication creates an immutable event snapshot, confirms the teacher immediately, then fans out asynchronously in bounded work.

Delivery claims are keyed by publication event, recipient, channel and learner. Parents can receive in-app and email notifications, learners receive in-app notifications, transient email failures retry on a bounded schedule, and a later republish permanently supersedes stale queued work.

What stayed with me

OneStepSmarter reinforced a rule I now carry into every product with money or access control: re-read authority before you act on old news.

Next.jsConvexStripeLiveKitTailwind CSSCloudflare

Next case study

Africart

Commerce where identity, geography and money all affect the answer.

↗