Portfolio demo by Muhammad Idzham · github.com/eizhmm
Live demo · Real payments, no mock data

Membership billing, run properly — not simulated.

Create a workspace, add members and plans, and send real invoices through ToyyibPay. Every payment, webhook, and status change happens live in Postgres — the same pipeline a real merchant would run.

No login required · RM 1.00 test payment · Data isolated by RLS

Member lifecycleLive

Invoice sent

Resend · branded pay link

09:14

Payment received

ToyyibPay webhook verified

09:22

Member active

Status flipped in real time

09:22

Next due date

Cron checks daily at 00:00 UTC

+30d

What it actually does

03 things
01
Multi-tenant, enforced by Postgres
Every table is org-scoped through a SECURITY DEFINER helper. Isolation happens at the query level, not the app level.
02
Real payments, not a sandbox clone
ToyyibPay live API, form-encoded webhooks, idempotency guards, and a re-query verification step before anything is marked paid.
03
Lifecycle runs itself
A daily edge function moves members through active → overdue → churned, emailing at each stage, no manual intervention.
DuesPortfolio project · Muhammad Idzham