The problem
Lumen's course pages were client-rendered. Google indexed an empty shell, so the school was paying for every visitor through ads. They also needed Bangla and English side by side without maintaining two sites.
What I built
- Server-rendered course pages with ISR, so a syllabus edit is live in sixty seconds without a rebuild.
CourseandFAQPagestructured data on every course, which is what put them into rich results.- Bilingual routing with a shared content model — one course record, two locales, no duplicated pages.
- A lesson player that remembers your position per device and degrades to audio-only on a slow connection.
- A syllabus that renders fully on the server, so the table of contents is in the HTML for crawlers.
Decisions worth explaining
Server components for content, client components for the player. The split is boring and that is the point: the heavy interactive code loads only on the one screen that needs it.
Translation keys live with the content, not in a giant JSON file. Editors change Bangla copy in the CMS without a deploy.
Results
- Organic sessions to course pages up 3.4× in five months.
- Four courses appearing in Google rich results within six weeks.
- Lesson start time on 3G down from 8.2 s to 2.4 s.