This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Marketing/lead-generation website for Righttway, a coaching (tutoring) centre in Kunnamkulam, Thrissur, Kerala. It is a static-content Next.js App Router site (no backend, no database, no API routes) — a multi-page brochure with an enquiry form and content pages for courses, results, and web coaching.
npm run dev # start dev server (http://localhost:3000)
npm run build # production build
npm start # serve the production build
npm run lint # ESLint (eslint-config-next)There is no test suite.
- Next.js 16 App Router + React 19 + TypeScript (strict). Path alias
@/*maps to the repo root. app/layout.tsxis the root shell: it renders<Navbar>+{children}+<Footer>, sets page metadata, and loads the Inter / DM Sans Google Fonts. Every route page returns only the content between navbar and footer.- Routes are folders under
app/(about,courses,results,web-coaching,contact), each apage.tsx. The home page composesapp/components/HomePage.tsx. Shared UI lives inapp/components/(Navbar,Footer,HomePage,ScrollPopup). - All pages/components with hooks, scroll listeners, or form state are Client Components (
'use client'). Server Components are essentially unused because the interactive pieces dominate. - Content is hardcoded in-file, not fetched — course lists, testimonials, results, FAQs, and stats are plain arrays/constants at the top of each page/component. To change site copy or listings, edit these arrays directly.
Styling is inconsistent by design/history — match whatever the file you're editing already uses:
- Inline
style={{...}}objects are the dominant approach (Navbar, HomePage, contact page, etc.). Colors are written as raw hex literals inline (#020817,#2132B9,#EAB308). - Global utility classes in
app/globals.css(.btn-primary,.btn-ghost-dark,.card,.badge,.badge-warning,.section-label,.input-field,.container-max) — reuse these instead of re-styling buttons/cards from scratch. The brand palette is also defined here as CSS variables (--brand-navy,--royal-blue,--warm-gold, etc.) and the hero collage animations live here. - Tailwind CSS v4 is installed (
@tailwindcss/postcss) and used with utility classes in a few places (notablyScrollPopup.tsx). Notetailwind.config.tsdefines a matching color theme (navy,royal,gold), but most code bypasses it in favor of inline hex.
Brand colors: navy #020817, royal blue #2132B9, warm gold #EAB308.
ScrollPopup(rendered insideHomePage) shows a full-screen student-achievements modal 3 seconds after load; dismissed state is component-local (re-appears on reload — no persistence).- Contact form (
app/contact/page.tsx) validates client-side (name required, 10-digit phone, grade required) and only sets a localsubmittedflag — it does not send data anywhere. Wiring up real submission requires adding a handler/endpoint. - Remote images:
next.config.tsallow-listsgithub.com/user-attachments,*.githubusercontent.com, and*.s3.amazonaws.com. Result/testimonial/popup images are hotlinked from GitHub user-attachments URLs; local images live inpublic/images/. Add any new remote image host toremotePatternsor the build/render will reject it.
Configured for Vercel (Vercel assets present). No environment variables are required.