Public portfolio repository for a professional rebuild of Pushkin's School, a parent-facing Russian language school website.
The project demonstrates how a real business website can be rebuilt with a modern, data-driven architecture while keeping sensitive migration material, business details, and child-facing media under careful review.
- Type: business website rebuild and portfolio case study
- Audience: parents, carers, school staff, recruiters, and technical reviewers
- Framework: Next.js App Router
- UI: React, TypeScript, Tailwind CSS
- Deployment target: Vercel
- Data approach: typed local content registries under
src/data/ - Status: polished public-safe rebuild with launch details still awaiting business confirmation
- A route structure for a multi-location education website.
- Parent-facing admissions, curriculum, FAQ, policy, gallery, and contact flows.
- Strong separation between public-ready content and private migration material.
- Typed data files that make content review easier than scattering copy through page components.
- Public media handling with approved image metadata, captions, alt text, and usage notes.
- Vercel-ready sitemap, robots, manifest, generated Open Graph image, and production build checks.
/- homepage with school network overview and parent journey/about- school philosophy, education principles, and public school imagery/schools- location overview, cards, and branch comparison table/schools/[slug]- reusable detail template for known network areas/curriculum- curriculum pathways and placement guidance/admissions- admissions, enquiry, fees, and payment-status guidance/faq- parent FAQ hub/policiesand/policies/[slug]- policy index and document shells/galleryand/gallery/[category]- curated public gallery collections/contact- server-validated initial enquiry flow with safe disabled defaults/admin/*and/register/*- prototype/admin planning surfaces kept conservative until real authorization and business approval are in place
Start here when trying to understand the project:
src/app/contains App Router pages, layouts, metadata routes, and server actions.src/components/site/contains reusable public website components.src/components/admin/contains disabled-by-default admin workflow prototypes.src/data/public/is the main public content and configuration layer.src/features/admin/data/contains sample-only admin planning data.src/features/enquiries/contains enquiry form validation and submission helpers.src/features/gallery/data/contains reviewed media manifests, with limited-use archive assets kept separate from featured public media.src/lib/contains shared helpers, including Supabase environment handling.public/images/contains approved, optimized public images used by the site.docs/is ignored locally and may contain private migration/source material.
The safest way to understand content behavior is to inspect src/data/ before
editing page components. Most routes render typed records rather than hardcoded
business facts.
src/data/public/site.ts- shared site metadata and absolute URL helperssrc/data/public/navigation.ts- primary navigation and route labelssrc/data/public/schools.ts- branch status, location, timetable, and venue notessrc/data/public/curriculum.ts- learning pathways and placement guidancesrc/data/public/admissions.ts- admissions steps, age ranges, and enquiry promptssrc/data/public/contact.ts- public contact details and payment categoriessrc/data/public/policies.ts- policy groups, publication states, and shellssrc/data/public/gallery.ts- public gallery collection structuresrc/features/gallery/data/media-assets.ts- featured approved public image registrysrc/features/gallery/data/extended-gallery-assets.ts- limited-use archive gallery tilessrc/data/public/trust.ts- public-safe trust signals and pending proof points
Do not commit:
.env.local- secrets, tokens, private keys, or service credentials
- private business documents
- raw source screenshots or migration archives
- unpublished client, child, parent, or staff information
- unreviewed policy documents, fees, timetables, or staff details
- unapproved school images
Approved public images may live under public/images/ so GitHub and Vercel
deployments can render the website correctly. Raw originals and source material
must stay outside Git or in ignored local folders until reviewed.
npm install
npm.cmd run devThe development server is pinned to this project at
http://localhost:3023, using the port configured in package.json.
Create .env.local from .env.example only when the required services are
ready. Never commit .env.local.
Run these before opening a PR or publishing deployment changes:
npm.cmd run lint
npm.cmd run typecheck
npm.cmd run buildThe combined check is also available:
npm.cmd run checkThe implementation is intentionally cautious. Before a production launch, the business still needs to confirm current branch statuses, timetable details, fee values, policy documents, payment provider settings, and final image approval.
Public pages avoid exact unconfirmed values and use conservative wording where the source material still needs business review.
PROJECT-DECISIONS.md- business decisions and open questionsCONTENT-VERIFICATION.md- public content verification notesASSET-WORKFLOW.md- approved public photo ingestion processLAUNCH-AUDIT.md- launch-readiness review and blockersADMIN-SECURITY.md- admin safety model and authorization notesPAYMENT-ARCHITECTURE.md- payment integration planningREGISTRATION-WORKFLOW.md- registration flow planningENQUIRY-WORKFLOW.md- enquiry flow planning
All rights reserved. This repository is public for viewing and educational
purposes only. See LICENSE for the full terms.