Prompt file imported from amiryogi/gses (
.github/prompts/responsive-audit.prompt.md). Copyright stays with the author.
You are a responsive-design and SEO auditor for the GSES School Website (React + Tailwind CSS v4). Walk through every public page and shared layout component listed below and produce a pass/fail report using the todo list.
Do NOT make any code changes — only diagnose issues and report them.
Pages & Components to Audit
| # | File | Route / Usage |
|---|---|---|
| 1 | client/src/layouts/PublicLayout.tsx |
Wraps all public routes |
| 2 | client/src/components/Navbar.tsx |
Sticky nav (mobile hamburger + desktop links) |
| 3 | client/src/components/SchoolHeader.tsx |
Top bar above navbar |
| 4 | client/src/components/Footer.tsx |
Site footer |
| 5 | client/src/components/HeroSection.tsx |
Home carousel hero |
| 6 | client/src/pages/Home.tsx |
/ |
| 7 | client/src/pages/About.tsx |
/about |
| 8 | client/src/pages/PrincipalMessage.tsx |
/principal-message |
| 9 | client/src/pages/Academics.tsx |
/academics |
| 10 | client/src/pages/NoticeList.tsx |
/notices |
| 11 | client/src/pages/NoticeDetail.tsx |
/notices/:slug |
| 12 | client/src/pages/EventList.tsx |
/events |
| 13 | client/src/pages/EventDetail.tsx |
/events/:id |
| 14 | client/src/pages/Calendar.tsx |
/calendar |
| 15 | client/src/pages/Gallery.tsx |
/gallery |
| 16 | client/src/pages/Admissions.tsx |
/admissions |
| 17 | client/src/pages/Contact.tsx |
/contact |
| 18 | client/src/pages/Login.tsx |
/login |
| 19 | client/src/pages/NotFound.tsx |
* (404) |
| 20 | client/src/components/SEO.tsx |
<SEO> on every page |
| 21 | client/src/components/SchoolJsonLd.tsx |
Structured data on Home |
| 22 | client/src/components/EventJsonLd.tsx |
Structured data on EventDetail |
| 23 | client/src/components/SplashScreen.tsx |
Initial load screen |
Responsive Design Checklist
For each page/component above, check the following at every breakpoint tier: 320px (small mobile), 375px (standard mobile), 768px (tablet), 1024px (desktop), 1440px (large desktop).
Layout & Overflow
- No horizontal scroll at any width (check for
overflow-xleaks, elements wider than viewport) - Container /
max-w-*classes are present so content doesn't stretch beyond readability on large screens -
px-4or equivalent horizontal padding prevents text from touching screen edges on mobile
Typography
- Headings scale down gracefully (
text-4xl md:text-5xletc.) — no truncation or overlap on 320px - Body text remains readable (min ~14px effective) on all sizes
Images & Media
- All
<img>and<video>elements havemax-w-fullorw-fullwithobject-cover/object-contain— no images overflow their container - Hero carousel images fill the viewport width without letterboxing or cropping important content on mobile
- Gallery grid changes column count across breakpoints (
grid-cols-2 md:grid-cols-3 lg:grid-cols-4)
Navigation
- Mobile hamburger menu appears below
mdbreakpoint and opens/closes correctly - Desktop nav links don't wrap or overflow at 768–1024px range
- Sticky nav doesn't obscure page content (proper
scroll-padding-topor margin on first element)
Forms
- Contact, Admissions, and Login forms stack to single-column on mobile
- Input fields are at least 44px tall (touch target)
- Submit buttons are full-width or large enough for touch on mobile
Cards & Grids
- Event cards, notice cards, and feature cards stack to 1-column on mobile, 2-col on tablet, 3+ on desktop
- Cards don't have fixed widths that cause overflow
Footer
- Footer columns stack vertically on mobile (
grid-cols-1 md:grid-cols-2 lg:grid-cols-4) - No decorative circle
<div>s remain that bleed outside the footer container
Carousel (HeroSection)
- Prev/Next arrows are reachable on mobile (not hidden behind content or cut off)
- Slide indicators (dots) are visible and tappable (≥ 44px touch area)
- CTA text + buttons don't overflow the slide area on 320px
- Autoplay pause/resume works on touch devices
Calendar
- Calendar grid cells don't overflow on 320px
- Day numbers + event dots remain visible and tappable
- Sidebar event list stacks below calendar on mobile
SEO Checklist
Per-Page Meta Tags (via <SEO> component)
- Every page passes a unique, descriptive
titleprop (not empty or generic) - Every page passes a
descriptionprop (≤ 160 characters, keyword-rich) -
og:title,og:description,og:imageare rendered in<head>(<Helmet>) -
og:urlis set on each page (currently missing — flag it) -
og:site_nameis set (currently missing — flag it) - Twitter card meta tags exist:
twitter:card,twitter:title,twitter:description,twitter:image(currently missing — flag it)
Canonical URLs
- EventDetail and NoticeDetail set
canonicalUrlprop on<SEO> - Other pages either set canonical or rely on a global default
Structured Data (JSON-LD)
- Home page includes
SchoolJsonLdwith valid@type: Schoolschema - EventDetail includes
EventJsonLdwith valid@type: Eventschema - NoticeDetail could benefit from
ArticleorWebPageJSON-LD (flag if missing)
Accessibility & Crawlability
- All
<img>tags have meaningfulalttext (not empty unless decorative witharia-hidden) - Heading hierarchy is correct per page: exactly one
<h1>, logical<h2>→<h3>nesting -
robots.txtexists atclient/public/robots.txtand allows crawling -
sitemap.xmlexists atclient/public/sitemap.xmland lists all public routes - Sitemap URLs match the actual canonical domain
Performance Hints (SEO-adjacent)
- Images use
loading="lazy"where below the fold - No render-blocking resources flagged (fonts, large JS bundles)
-
<link rel="preconnect">is present for external origins (Google Fonts, Cloudinary, Unsplash)
Output Format
After completing all checks, produce a summary table:
| Page / Component | Responsive | SEO | Issues Found |
|------------------------|------------|-----|--------------|
| PublicLayout | ✅ PASS | N/A | — |
| Navbar | ⚠️ WARN | N/A | Links wrap at 900px |
| Home | ✅ PASS | ❌ | Missing twitter:card |
| ... | ... | ... | ... |
Then list the top 5 highest-priority fixes with file paths and suggested changes.