# CVIM / IELTS Masterclass Learning Hub

Local URL: http://localhost:3000/cvim/resources

The hub includes 16 modules, 64 original topic guides, 16 module self-checks and 81 indexable pages including the hub. It uses the Algebra/TESOL burgundy, cream and gold content design, with searchable categories, three starting pathways, Aisha's guidance card, local notes and completion tracking, sample-response reveal and print styles. The hub and every module and guide use the main website's shared `CVHeader` and `CVFooter`, including the standard navigation and promotion banner. They sit outside the resource typography scope and are hidden when printing a guide.

All three supplied PDFs (31 + 10 + 39 = 80 pages) were reviewed using rendered previews and OCR because the files contain scanned slides. Relevant page ranges appear on each module and guide. Additional General Training, language-awareness and learner-support content is explicitly original supplementary material. Listening examples are labelled read-aloud scripts; no audio files or official mock tests are claimed.

SEO includes server-rendered guide content, unique page titles and descriptions, canonical URLs, Article/LearningResource and breadcrumb structured data, a hub collection schema, organisation authorship, dates, related guides, previous/next links, social-card images and all 81 pages in the sitemap. IELTS facts and changing delivery guidance link to official IELTS references. Aisha is presented as a course advisor, not an asserted author, examiner or reviewer.

## Files to deploy

The complete, path-by-path upload checklist is in `reports/cvim/deploy-files.txt` (31 files, including the three source PDFs).

Upload these complete new directories, preserving their paths:

- `app/cvim/resources/` (hub page, module route, guide route and social-image route)
- `components/cvim-resources/` (all nine component/style/store files)
- `data/cvim/` (all eight data files)

Upload this new helper:

- `lib/cvimResourceSeo.mjs`

Upload these updated existing files:

- `components/layout/CVHeader.jsx`
- `components/self-paced/IELTSTrainerLanding.jsx`
- `components/self-paced/SelfPacedProgrammesLanding.jsx`
- `components/courses/masterclass/IeltsMasterclassCoursePage.jsx`
- `app/free-resources/page.jsx`
- `app/sitemap.ts`

Ensure these source PDFs exist on the live server, with the same names:

- `uploads/pdf/cvim/IELTS Masterclass.pdf`
- `uploads/pdf/cvim/Triple Crown_ TESOL + VnA + IELTS (1).pdf`
- `uploads/pdf/cvim/Triple Crown_ TESOL + VnA + IELTS.pdf`

The existing `app/uploads/[...path]/route.js` serves the PDFs. The existing `components/layout/CVFooter.jsx`, global font configuration, Next Image configuration, and `components/algebra1/config.js` WhatsApp setting are reused. They were not changed for this hub; include them only if the server does not already have the current versions. No new npm dependency was added.

Rebuild the Next.js app with `npm run build`, then restart its existing Node process using the server's normal deployment procedure. Do not upload the local `.next` development output, `.artifacts/cvim/` OCR files or local logs. For a standalone deployment, use the normal generated standalone/static assets procedure after rebuilding.

## Database

No SQL, tables, migrations, Zoho changes or environment-variable changes are required. Resource content is stored in the source data files. Notes, progress and self-check results use the separate `cv-cvim-learning-v1` localStorage key and remain in the learner's browser; they do not sync between devices or create CRM contacts.

## Validation

Latest header/footer update: targeted ESLint passed, and `header-footer-checks.json` confirms that all 81 resource pages render exactly one main website header and footer, with the former custom CVIM navigation removed. For this update alone, upload `components/cvim-resources/CvimShell.jsx` and `components/cvim-resources/CvimResources.module.css`, then rebuild and restart the live app. The full production-build results below describe the initial hub release before this header/footer follow-up.

- `node scripts/test-cvim-resources.mjs`: validates content completeness, unique guides/routes/descriptions, assessment answer indexes, all source PDF coverage, slide page ranges, pathway links and metadata/schema consistency. Passed for all 16 modules and 64 guides.
- `python scripts/check-cvim-pages.py`: checked all 81 local pages, metadata, canonicals, social tags, advisor links, article sections, missing-route 404s and all three PDF responses. Passed without errors.
- `npm run build`: completed successfully, including all 702 static-generation tasks for the existing application. The repository's existing `typescript.ignoreBuildErrors` setting skips TypeScript validation; this result is not a separate type-check pass.
- `python scripts/check-cvim-pages.py --base http://localhost:3012 --report production-http-checks.json`: all 81 resource pages and all three PDF responses passed against a temporary production server after the build. The server was stopped after verification; the normal development server remains on port 3000.
- Targeted ESLint across all new files and updated integration files passed without errors.
- Final review isolates quiz and completion-message state when navigating between resources, preserves guide-card heading sizes and prevents wide article content from stretching the layout. Representative hub, module and guide responses were rechecked after those fixes.
- The dynamic share-image route returned a valid 1200×630 PNG; the generated image was visually inspected.
- `integration-checks.json` records live local checks of entry points and sitemap inclusion when available.

Browser interaction and viewport screenshots could not be completed: the in-app browser backend was unavailable, and native Computer Use stopped because it could not verify the browser URL with enough confidence. No UI input continued after that block. Responsive and print styles are implemented but are not claimed as visually verified in a browser this session.

The validation scripts and JSON reports in `scripts/` and `reports/cvim/` are optional deployment documentation, not runtime dependencies.
