Designing sixty pages without designing sixty pages
Past a certain surface area, consistency stops being a preference and becomes the only way to finish. Notes from an LMS build.
NovaEdge Academy runs past sixty distinct pages: student dashboards, instructor views, course players, progress screens, community surfaces. It is the largest thing I have designed and built end to end.
The lesson showed up early. At that size, no single screen is the hard part. The hard part is that sixty pages designed one at a time turn into sixty dialects. Page four uses a 15px label. Page thirty uses 14px with a little more letter-spacing. Neither is wrong. Side by side they read as careless, and by the time you notice, reconciling them costs more than the pages did.
The system ships first
So the first deliverable was not a page. It was the type scale, the spacing steps, the surface treatments, and every component state: default, hover, focus, active, disabled, loading, empty, error.
That last list is the one people skip. Empty and error states are where a design system gets tested, because they are the states nobody mocks up and every developer ends up inventing at 11pm before a demo.
Constraint as speed
Once the system exists, most new pages become content plus configuration instead of new structure. Nested layouts carry the shell, a small set of section primitives carry the composition, and the page file itself stays short.
A design system is not there to make the tenth page pretty. It is there to make the fiftieth page possible.
Where I let it flex
The course player breaks the rules. While a lesson plays, navigation fades back to almost nothing and returns on intent. The dashboard does the reverse, and both are right: a learning surface should get out of the way, a dashboard should stay where you left it.
Systems earn exceptions. The exception just has to be argued for rather than drifted into.
Written by Amit Kumar Raikwar, full-stack engineer & product designer in Indore, India.