IT Step School
Migration of IT Step School’s website from WordPress to a modern Next.js stack — faster pages, a cleaner editorial workflow, and a maintainable foundation for the school’s growth.
My Role
Tech Lead — owned the migration strategy at Koober Coders: architecture, content modeling, the build and deployment pipeline, and performance targets.
Project Type
Client Project — WordPress-to-Next.js migration for a private IT school in Tbilisi.
Tools Used
Next.js, React, TypeScript, headless git-based CMS, multi-language localization, performance optimization, Docker, Nginx, custom CI/CD
Live Link
https://itstep.school.ge
Read the write-up
Leaving WordPress Without Losing the Editors
Problem & Solutions
Leaving WordPress Without Losing the Editors
Problem
WordPress gave the school’s staff a familiar editing experience, but it dragged down performance, security, and development velocity — and a rewrite risked taking the editors’ workflow away with it.
Solution
A headless approach kept both sides happy: a typed, componentized Next.js frontend for the team, and a git-based CMS that still gives editors visual, in-context editing.
Performance as a Requirement, Not a Wish
Problem
The legacy theme and plugin stack made every page heavy — and for prospective students browsing on phones, slow pages read as an outdated school.
Solution
Static generation, image optimization, and a minimal-JavaScript budget per page turned speed into a property of the architecture instead of an afterthought.
Migrating Content Without a Content Freeze
Problem
Years of WordPress pages, news posts, and media had to move to a new content model while the school kept publishing — a broken URL or a missing article during enrollment season was not acceptable.
Solution
Content was mapped field by field into the git-based CMS, migrated with scripts, and verified against the old site before cut-over; redirects preserved every indexed URL so search rankings carried over.
Architecture
Editors commit through TinaCMS into the Git repository; every commit builds a static Next.js site served by Nginx, with a redirect map preserving the old WordPress URLs.
Decision log
The calls that shaped the build — what was decided, why, and what it cost.
A git-based CMS instead of headless WordPress
Decision. Move content into the repository with TinaCMS as the editing UI.
Context. Editors needed a visual editor; the team needed versioned content and one deployment path.
Consequence. Every change is a commit and every rollback a revert. Publishing waits for a build, kept short and previewable.
Static generation
Decision. Generate pages at build time and serve them as files through Nginx.
Context. Page weight and a plugin attack surface were the two things wrong with the old site.
Consequence. No server-side process to exploit and nothing to slow down under load; content changes trigger a rebuild rather than appearing instantly.
The redirect map is a deliverable
Decision. Treat URL preservation as reviewed work, not cleanup.
Context. Search rankings were the school's lead source during enrollment season.
Consequence. No indexed URL 404s after cut-over; the map was diffed against a crawl of the old site before DNS switched.
A Program Catalog That Loads Instantly
Art-directed program pages rendered by Next.js — the playful 3D visual identity kept intact, with none of the WordPress weight behind it.

A Self-Service News Hub
Editors publish STEM articles and campaign banners through the git-based CMS — the site picks them up and ships them as fast static pages, subscribe funnel included.

The Campus, Front and Center
An image-heavy environment gallery stays quick through Next.js image optimization — every photo served responsively.

Growth & Outcome
The school now runs on a modern, fast stack: editors kept a friendly editing experience while page loads, security, and maintainability improved dramatically over the legacy WordPress site.
Gallery




