Case study · Education

From WordPress to a platform for 100,000+ students

  • Laravel
  • PHP 8.2
  • Vue
  • Stripe
  • Laravel Horizon
  • PWA
✓ Verified Review

Trust is critical to our application and National Digital have been outstanding. They have never let us down, respond so quickly and understand our business. I've worked with a lot of different tech companies and National Digital are the best by far.

Dan Hardie
Director at MyStrengths
100k+

High-school students assessed

Instant

Results, where they were once processed by hand

1 invite

Enrols a whole cohort

3 in 1

Assessments on one platform, not three codebases

The challenge

MyStrengths' WordPress site could not support the assessment algorithm, secure user management, payment processing or data visualisation required to serve schools at national scale. Schools needed to enrol whole cohorts, teachers needed to see progress across a group, and results had to be returned instantly rather than processed by hand - none of which a content site could carry.

What we built

A Laravel application with a Vue front end, built around the way schools actually work: organisations contain groups, groups contain participants, and teachers invite cohorts rather than registering students individually. Three assessment instruments run on shared infrastructure, results return instantly as personalised dashboards and PDF reports, and Stripe handles both individual and whole-school purchasing.

  • Assessment logic migrated off WordPress onto Laravel
  • Three assessment instruments on shared platform infrastructure
  • Organisation, group and participant model for school enrolment
  • Vue results dashboard with cohort progress views for teachers
  • Stripe payments with coupons, orders and whole-school purchasing
  • Queued report generation via Laravel Horizon
  • PDF report rendering and spreadsheet export

The stack

Migration of the assessment logic off WordPress onto Laravel; a Vue results dashboard with cohort progress views for teachers; an organisation, group, participant and invitation model for school enrolment; Stripe payments with coupon and order handling for individual and school-wide access; queued workers via Laravel Horizon for report generation; and PDF report rendering with spreadsheet export for teachers.

Channels & edgeStudent & teacher portals
API & integrationPayments, school access
Applications & workflowsVue results dashboard
Data platformLaravel back end
Hosting & deliveryMonitoring, backups

The outcome

The rebuilt platform now serves more than 100,000 high school students with instant personalised results, removing the scalability ceiling the WordPress site had placed on new school contracts. Teachers enrol a cohort and watch progress across it rather than chasing individual completions, and report generation runs on background workers so a whole-of-school assessment never blocks anyone's browser.

Where it went next

MyStrengths continues to expand assessment offerings on the same Laravel and Vue platform as student numbers grow. The three-instrument structure means a new assessment is new content and scoring on existing rails, not another product build.

This case study describes real work delivered by National Digital for MyStrengths. Selected figures are indicative and rounded.

Key Takeaways

Rebuilding an assessment product for how schools actually buy

  • A content site could not carry assessment logic, cohort enrolment and payments at national scale.Critical

    WordPress was adequate for publishing but not for generating personalised results, controlling access school by school, or handling both individual and whole-school purchasing. The rebuild moved all of that onto Laravel as ordinary application concerns.

  • Modelling organisations, groups and participants mirrors how schools are actually structured.Critical

    Teachers invite a cohort rather than enrolling students one by one. Getting that hierarchy right in the data model is what makes whole-school rollout practical, and it is the difference between selling to a school and selling to individuals.

  • Instant results were a product requirement, not a performance nicety.Critical

    Students complete an assessment and see personalised strengths immediately. Manual processing would have broken the classroom use case entirely, so heavier work like report rendering runs on queued background workers rather than in the request path.

  • Three assessment instruments share one platform rather than three codebases.Important

    Strengths, character and wellbeing are separate instruments running on shared enrolment, payment and reporting infrastructure. Adding an assessment is new content and scoring on existing rails, not another product build.

  • Payments had to support both an individual student and a whole school.Important

    Stripe handles individual purchases, coupon redemption and whole-school orders through the same order model, so the commercial model is not constrained by what the platform is able to charge for.

MyStrengths moved off WordPress onto Laravel and Vue because assessment logic, cohort enrolment and school purchasing are application problems rather than content problems. More than 100,000 students have used the result.

Questions decision-makers ask about this build

Why rebuild rather than extend the WordPress site?
The requirements were application requirements, not content requirements. Generating personalised assessment results, controlling access school by school, handling both individual and whole-school payments and showing teachers cohort progress are all things a content management system has to be fought into doing. Rebuilding on Laravel meant those became ordinary application concerns rather than plugin workarounds layered onto a publishing tool.
How does a school enrol a whole cohort?
The data model mirrors how schools are structured: an organisation contains groups, and groups contain participants. A teacher invites a cohort rather than registering students one at a time, and progress is visible across the group as students complete. That hierarchy is what makes whole-school rollout practical - without it, every school sale would collapse back into individual signups and manual administration.
What makes the results instant?
Scoring runs in the application rather than through manual processing, so a student sees personalised strengths the moment they finish. The heavier work - rendering PDF reports and preparing cohort exports - runs on queued background workers via Laravel Horizon, so it never blocks the student's browser. Instant feedback is a product requirement in a classroom, where a lesson cannot wait on batch processing.
Is this one assessment or several?
Three instruments run on the platform: strengths, character and wellbeing. They are separate assessments with their own question sets and scoring, but they share enrolment, payment, reporting and access-control infrastructure. That structure means adding a new assessment is new content and new scoring on existing rails, rather than standing up another product from scratch.
How is purchasing handled for schools versus individuals?
Stripe sits behind a single order model covering an individual student buying one assessment, a coupon-based redemption, and a school buying access for a whole cohort. Keeping those on one path rather than three means the commercial model is not limited by what the platform can charge for, and a change to pricing or packaging does not require standing up a separate billing route.
What does the platform look like operationally?
It is a Laravel application on PHP 8.2 with a Vue front end, queued workers under Laravel Horizon for report generation and exports, and Stripe for payments. Reports render as downloadable PDFs and cohort data exports to spreadsheet for teachers. The application is installable as a progressive web app, so students on school devices get an app-like experience without going through an app store.

What's next

Replacing a site that outgrew itself?

MyStrengths moved off WordPress because assessment logic, cohort enrolment and school purchasing are application problems, not content problems. If you're weighing the same move, see how we approach custom web applications and customer portals, part of our wider digital product development work.

Want a platform like this for your business?

Tell us what you're building. We'll come back within one business day with what we'd do first and what it would take.