Case study
Vitality - global wellness platform serving 27M+ members
Vitality Group Inc. · Sep 2022 - Present
A multi-year build on Vitality’s global wellness platform, serving tens of millions of members. My work centred on two systems the business leans on daily: a dynamic-forms engine built with Formly - paired with a survey-builder tool that lets the team launch new forms and surveys without shipping code - and an admin tool for granting roles and feature-level access across the platform.
powerofvitality.com ↗- 27M+Members served
- 38Markets
- 3+Years on the engagement
Role
Software Developer (Angular + Java / Spring Boot)
Stack
- Angular
- Signals
- NgRx
- TypeScript
- RxJS
- Formly
- SASS
- Java
- Spring Boot
- Spring Data JPA
- Hibernate
- OpenAPI
- MySQL
The problem
A global wellness platform constantly needs new forms, surveys, and assessments, plus fine-grained control over who can see and do what. Hard-coding each form and every permission check doesn’t scale across markets and release cycles - the platform needs configuration-driven forms and one place to manage roles and feature access.
The approach
- 1
Build a dynamic-forms engine with Formly - rendering complex forms and assessments from configuration, with custom field types, validation, and conditional logic instead of bespoke markup.
- 2
Layer a survey-builder tool on top, so non-engineers can compose and launch new surveys and forms without a code change or release.
- 3
Build an admin tool for role-based access - granting roles and toggling feature-level access across different parts of the platform.
- 4
Wire both systems to Java / Spring Boot REST APIs (Spring Data JPA, Hibernate, MySQL, OpenAPI) on the platform’s signals-first Angular + NgRx foundation.
Outcomes
- A forms engine and survey builder that let the team launch new forms and surveys by configuration - no release required.
- An admin tool that centralises roles and feature access, replacing scattered, hard-coded permission checks.
- Three years on the engagement and counting - trusted with new scope every cycle.
Want to see more?
Back to selected work →