MCQs Galaxy
My own exam-prep platform. Every rival site lists MCQs to read; this one lets you build and sit a real practice test. 44,000+ questions, built from scratch in PHP and MySQL.

- Client
- Own product
- Industry
- Education
- Year
- 2026
- Type
- Custom Web Application
What it is
MCQs Galaxy is an exam-preparation platform for Pakistani competitive exams — PPSC, FPSC, KPPSC, NTS, CSS and MDCAT. It holds more than 44,000 categorised practice questions with answers and explanations.
This one is mine. Not client work — I built it, I run it, and I keep it running. I have included it here because it is the clearest example of something I designed, built and now maintain end to end, which client work does not usually show.
What it does
- Question bank across 31+ subjects, organised by category and sub-category, with search
- Quiz Lab — timed quizzes generated from whichever categories the user picks
- Daily challenge, refreshed each day
- Leaderboards and gamification, to give people a reason to come back
- Interview question section, structured separately from the MCQ bank
- User accounts with their own dashboard, and a contributor flow for submitting questions
- Admin back office for moderation, categories and bulk import
- Blog for the SEO side of the project
How it is built
Deliberately plain: PHP 8 and MySQL with no framework. Around 133 PHP
files and roughly 17,000 lines. PDO with prepared statements throughout,
.htaccess routing for clean URLs, Tailwind for the interface.
That is an unfashionable choice, and it was the right one here. The hosting is ordinary shared hosting, the traffic pattern is read-heavy, and a framework would have added deployment complexity without solving a problem this project actually has.
A few parts worth mentioning:
- Bulk import. 44,000 questions do not get entered by hand. The admin side imports spreadsheets through PhpSpreadsheet, with validation and category mapping on the way in.
- Content model. Questions, categories, sub-categories, users and a separate interview-question set with its own many-to-many relations.
- Authentication. Rebuilt on
password_hash()/password_verify()with bcrypt. Accounts created under the old scheme are re-hashed silently on their next successful login, so nobody had to reset a password.
What I would do differently
The question bank is served straight from MySQL with ordinary indexes. That is fine at 44,000 rows, but full-text search over the question text is the obvious next step before the bank grows much further.
It is also an early-stage product. The engineering is real; the audience is still small. I would rather say that plainly than dress it up.


