Arinit
Skip to content
Arinit

EdTech

EdTech Platform Rebuild

Rebuilt a legacy PHP learning platform into a modern Next.js + tRPC stack. Page load 5× faster, 40% increase in course completion rates.

webNext.jstRPCTypeScriptPostgreSQLStripeAWS
0×
Faster page loads (From 3.8s to 0.7s)
+40%
Course completion (Within 90 days)
0k
Active students (Post-migration)
0 weeks
Full migration (Including data)

The challenge

The client's online learning platform was built on a legacy PHP/jQuery stack from 2016. Page loads averaged 3.8 seconds, the video player buffered constantly, and the admin panel was so slow that instructors dreaded uploading content. Course completion rates had flatlined at 35% — students were abandoning courses not because of content quality, but because the platform was painful to use.

They had 25,000 active students and 500+ courses. A rewrite needed to migrate all existing data, maintain Stripe subscription continuity, and redirect every existing URL to prevent SEO loss.

Our approach

We chose Next.js with tRPC for end-to-end type safety — from database schema (Prisma) through API layer (tRPC) to frontend (React). This eliminated an entire category of data-shape bugs that plagued the old PHP/REST approach.

Video streaming moved from self-hosted MP4 files to Mux with adaptive bitrate, reducing buffering by 95%. We designed a custom video player with resume-from-where-you-left-off, speed control, and chapter markers.

Key technical decisions:

  • tRPC for type-safe API (no code generation, no schema files — just TypeScript)
  • Mux for video hosting and adaptive bitrate streaming
  • Chose NOT to do a gradual migration — the PHP codebase was too tightly coupled. Clean-room rebuild with parallel running.
  • Prisma for type-safe database access with migration tooling

What we built

A modern learning platform serving 25k+ students with dramatically better UX:

  • Course catalog with instant search, filtering, and SSR for SEO
  • Custom video player with adaptive streaming, chapters, and progress tracking
  • Student dashboard with learning streaks, progress analytics, and certificates
  • Instructor CMS for course creation, analytics, and student management
  • Stripe subscription management with plan upgrades, cancellations, and invoicing
  • Full data migration: 25k users, 500+ courses, 150k+ enrollment records

Technology stack

Frontend

Next.js 14React 18TypeScriptTailwind CSSRadix UI

Backend

tRPCPrismaPostgreSQLRedisStripeMux Video

Infrastructure

AWS ECSCloudFrontRDSS3GitHub Actions

Timeline

Week 1-2

Audit & Planning

Audited legacy PHP codebase, mapped 80+ pages, planned data migration.

Week 3-6

Core Platform

Auth, course catalog, video player, progress tracking, student dashboard.

Week 7-8

Payments & Admin

Stripe subscriptions, instructor dashboard, content management.

Week 9-10

Data Migration

Migrated 25k users, 500+ courses, enrollment history. Zero data loss.

Week 11

Launch

DNS cutover, monitoring setup, legacy redirect mapping.

Key learnings

tRPC eliminated an entire category of bugs

End-to-end type safety from database to UI meant we caught data shape mismatches at compile time, not in production. Our post-launch bug count was 60% lower than the old platform.

Video streaming optimization was the UX differentiator

We switched from self-hosted video to Mux with adaptive bitrate streaming. Buffering complaints dropped to near zero, and the native-feeling player (with resume, speed control, chapters) made students actually want to use the platform.

Start a conversation about your project.