The problem
A registration platform needed forms that non-engineers could configure — varying fields, validation, multi-page flows, and conditional routing — without a developer rebuilding the UI each time. That meant a generic, schema-driven form engine spanning a public app and an admin dashboard, plus role-based access control.
The approach
- Built a runtime dynamic-form renderer (Angular) that renders forms from a backend JSON schema across 15+ field types — text, email, phone, date, file upload, currency, textarea, ratings, Likert scales, and address groups — with per-field validation (min/max, decimals, domain rules, server-side uniqueness) and conditional field visibility.
- Designed and solely authored a conditional page-routing rules engine: rules route users to different form pages based on field conditions, with all/any logical operators and type-aware operands (date, file, rating, text, radio, checkbox).
- Implemented multi-step form navigation with per-page validation gating and native browser back-button support via the History API.
- Delivered a role & permission management UI (hierarchical permission dependencies, category-scoped access) and co-built the admin drag-and-drop form builder (20+ field types, theming, page breaks).
The outcome
- Top committer on the public app and #2 on the admin dashboard across a long-lived codebase (Nov 2022 → 2025), spanning the renderer, rules engine, stepper, and registration flows.
- Centralised the front-end on a single API service layer (BehaviorSubject state) for submissions, profiles, dependants, payments, booking history, and certificates.
- Contributed across the stack into the Laravel API — discount-rules logic, payment middleware logging, and user-service query helpers — using Eloquent, mass-assignment guards, and DB transactions.
Honest note: Front-end ownership percentages use git blame against current HEAD (surviving authored lines), so they reflect code actually written, not just files touched. Client name withheld.