Case file 001Certificates
The problem
“Every student who finishes a course needs a certificate. We make each one by hand.”
Solved
- For
- Islamic Desk · Seerat ki Dunya & Sarf ki Dunya
- Built
- Name-on-certificate app + automatic issuing
- Stack
- React · FastAPI · Pillow · Supabase · Urdu shaping
- Result
- 3,400+ certificates, none made by hand
01 · The pain
One certificate took about 15 minutes. By hand.
Open the design. Type the name. Line it up. Export. Send it. Next student.
Then I built the system. Every square turned over without anyone touching them.
- Certificates
- 0
- Hours of manual work
- 0
- 8-hour working days
- 0
02 · The fix
Type a name. That’s the whole job now.
This is a small copy of the generator, running right here. The real one does the same thing on a server for every learner who finishes.
03 · How it works
Three pieces, and one hard problem.
Design once, click where the name goes
Upload the certificate artwork, click the spot for the name and the course, pick font, size, colour and alignment. That template is reused for every learner.
A renderer draws each certificate
A FastAPI service writes the name and course onto the template with Pillow and returns the image. English or Urdu, same template.
An automation does the issuing
It checks for new completions every 10 minutes and sends each learner their certificate. Nobody opens a design file any more.
The hard part
Image libraries can’t write Urdu.
They draw it letter by letter, left to right, so every name comes out in pieces and backwards. For courses taught in Urdu, that made the certificates unusable.
The renderer reshapes the letters so they join, reorders them right to left, sets them in Nastaliq, and shrinks a long name until it fits instead of running into the border.
04 · What changed
The work didn’t get faster. It disappeared.
- Certificates issued
- 3,400+
- Per certificate
- 15 min → seconds
- Hours given back
- ~850
3,400 certificates × 15 minutes = 850 hours, about 106 eight-hour days.
