The Challenge
Corplify, a digital corporate secretary, needed a portal WordPress was never built to run.
A multi-step application workflow tied to payment and admin review, not a marketing site
No manpower to force WordPress and plugins to fit the workflow
A custom PHP/MySQL build beat no-code and low-code on both speed and cost
Freelance full-stack developer
PHP, MySQL, Stripe, Claude
Shipped and live in production at corplify.my
The Build
End-to-end portal covering the full customer journey.
Signup and login with OTP email verification and optional 2FA
5-step company registration with autosaving drafts and step restore
SSM company-name search, fuzzy-matched against a live registry of real registrations
Application review, status tracking, bulk CSV updates, Excel export
Automated status emails and a live chat widget with human escalation
11 service landing pages and an article hub, each with its own title, meta description, and canonical
The Trade-off
Vanilla PHP, deliberately.
No framework, no third-party dependency manager. A conscious call for full control and a clean handover, not a hosting limitation. Fewer moving parts to maintain, nothing to upgrade later, and easy to pass to another developer with no framework knowledge required.
Excel export
Hand-built XML SpreadsheetML instead of a heavier spreadsheet library. Works anywhere, nothing to install.
Debugging under a live schema
Several production bugs traced back to the same root cause: code assuming database columns that had not been migrated yet, or reading data that had moved tables.
Draft-save failing silently
insert attempted columns that did not exist yet on unmigrated databases
Applications reopening on step 1
step number was saved before the step counter updated
Admin document viewer breaking
read a path column that had been replaced by a proper documents table
Outcomes
MEASURED
Live and in production at corplify.my.
NOT YET MEASURED
No confirmed customer volume or conversion data yet.
REFLECTION
Shipping solo meant every call, and every fix, was mine. Vanilla PHP kept the surface small enough to hand over; the bugs taught me the rest: version the schema alongside the features, not behind them.
What’s Next?
02
Phase 2 — Product surface
Multi-language support (English / Chinese / Malay), mobile optimization, and expanded login options. Prioritized first because these affect whether current traffic converts, before spending on new traffic.
03
Phase 3 — Reach
Physical and digital marketing to build the customer base the product is now ready to support.