Naalya Handbook

School Website

The public website for the Naalya schools — server-rendered React, editorial content from Sanity, application data from the REST API.

This is the public-facing website for the Naalya schools — the site a prospective parent lands on, reads about the campuses, browses the blog, and fills in an application. It is one project with one job: present the school well, and make it easy to take the next step.

Under the hood it is a server-rendered React app. Two very different kinds of data feed it, and keeping them straight is the single most useful mental model you can carry into this section. Editorial content — pages, blog posts, site settings, the words and images an editor controls — comes from a Sanity CMS. Application data — everything that lives in the school's own systems — comes from the Naalya Schools REST API through a fully type-safe, generated client. Sanity is what the marketing team edits; the API is what the school runs on.

New to the codebase? Start with Getting Started to get it running locally, then read How It's Built for the full architecture — the data-flow diagram, the two-application layout, and the key facts you'll reach for constantly all live there.

One repo, two applications

The source folder holds two independent apps: the website frontend at the repository root, and the Sanity Studio nested in sanity/ with its own dependencies. They deploy separately and the Studio is not part of the pnpm workspace — so you install and run it from inside its own folder. How It's Built explains why, and Sanity Setup walks the details.


Where to go next

This section runs from setup, through the frontend, into the CMS. You can start anywhere, but if you're unsure, these are the doors most people walk through first.

Building the frontend

The content layer

When something goes wrong

On this page