Skip to content
All projects

EdTech · Subscriptions · Oct 2024 – Jul 2025

The Grind Academy

Sole backend engineer

An online academy teaching digital income skills, with video courses, recurring subscriptions, a members-only Telegram community and an affiliate program.

https://thegrindacademy.co
Homepage of The Grind Academy
in revenue processed
₦17.6M+
students
1,100+
course enrollments
1,450+

01 / scope

What I built

  • Recurring subscription billing on Paystack using saved card authorizations, with automatic renewals, plan price history, billing records and Flutterwave support
  • Subscription lifecycle automation: daily expiry, renewal and expiry reminder emails, and automatic removal from paid Telegram groups when a plan lapses
  • Telegram bot that issues one-time invite links to paying members and broadcasts course announcements
  • Course delivery with lessons, materials and media on Bunny CDN, progress tracking and PDF completion certificates
  • Referral program with codes, bank-account verification and hourly automated payouts through Paystack transfers
  • Admin CMS for the marketing site (FAQs, testimonials, influencers, student interviews), analytics, and CI/CD to production with GitHub Actions and PM2

02 / architecture

How it fits together

  1. Clients

    • Marketing site
    • Student dashboard
    • Admin CMS
  2. API

    • Express REST API
    • JWT auth
    • Payment webhooks
  3. Scheduled jobs

    • Renewals every 2 hours
    • Daily expiry and reminder emails
    • Hourly referral payouts
  4. Data

    • PostgreSQL
    • Bunny CDN video
    • DigitalOcean Spaces

Third-party services

  • Paystack
  • Flutterwave
  • Telegram Bot API
  • Mailgun
  • GitHub Actions
Request flow: Clients (Marketing site, Student dashboard, Admin CMS), then API (Express REST API, JWT auth, Payment webhooks), then Scheduled jobs (Renewals every 2 hours, Daily expiry and reminder emails, Hourly referral payouts), then Data (PostgreSQL, Bunny CDN video, DigitalOcean Spaces). Integrates with Paystack, Flutterwave, Telegram Bot API, Mailgun, GitHub Actions.

03 / engineering notes

Problems worth solving

Subscriptions that renew themselves

After a student's first payment, Paystack returns a reusable card authorization. A renewal job charges it every two hours as plans come due and records each charge in the student's billing history, while plan prices keep a full change history for the admin team.

Paid community access on Telegram

A Telegram bot issues single-use invite links to paying members, and the daily expiry job removes members whose plan has lapsed. Access to the community always matches the billing state.

Automated referral payouts

Affiliates add bank details that are verified against the bank before saving. An hourly job pays pending referral earnings through Paystack transfers, so nobody has to process payouts by hand.

04 / stack

Tools I used

  • TypeScript
  • Express
  • PostgreSQL
  • Sequelize
  • Paystack
  • Flutterwave
  • Telegram Bot API
  • Bunny CDN
  • Mailgun
  • GitHub Actions