A multi-course tutorial website built with the LocalM Tutorial Framework. Each site covers a single topic (e.g. Agentic AI) and hosts one or more courses under that topic.
Live site: nilayparikh.github.io/_tuts/
git clone --recurse-submodules https://github.com/nilayparikh/_tuts.git
cd _tuts
./scripts/run.ps1Or manually:
git clone --recurse-submodules https://github.com/nilayparikh/_tuts.git
cd _tuts
npm install
npm run dev # → http://localhost:3000- Topic home page (
/) — hero, course catalogue, instructor card - Course overview pages (
/[course]/) — hero, lesson list, instructor card - Lesson pages (
/[course]/[part]/) — sidebar navigation + content by type - 8 part types — video, video-code, reading, quiz, article, podcast, slideshow, lab
- Static export — deploys to GitHub Pages with zero server
- Dark theme — design-token-based, fully customizable
_common/ # Git submodule → nilayparikh/_tuts_common
├── frontend/
│ └── tutorial-framework/ # @localm/tutorial-framework (40+ components)
├── .github/ # Shared agent configs, instructions, skills
└── docs/ # Framework documentation
_brand/ # Git submodule → nilayparikh/_tuts_brand (brand source SVGs)
app/
├── layout.tsx # Root layout
├── page.tsx # Topic home — lists all courses
├── globals.css # Theme overrides
├── components/ # Site-specific UI (InstructorDetailCard)
├── [course]/
│ ├── page.tsx # Course overview (dynamic)
│ └── [part]/
│ └── page.tsx # Lesson pages (dynamic)
├── examples/page.tsx # Code examples (aggregated from all courses)
├── privacy/page.tsx # Privacy policy
└── terms/page.tsx # Terms of use
config/site.ts # Site name, nav, social links
data/
├── courses/
│ ├── types.ts # Shared TypeScript interfaces
│ ├── index.ts # Course registry + helpers
│ └── a2a.ts # A2A course data (first course)
scripts/
├── run.ps1 # Dev launcher
└── sync-common.ps1 # Sync _common submodule
docs/ # Site documentation
.github/
├── agents/ # Copilot agent definitions
├── instructions/ # AI coding rules (auto-applied)
├── prompts/ # Reusable prompt templates
├── skills/ # Copilot agent skills
└── workflows/ # GitHub Actions (deploy)
| Route | Page | Data source |
|---|---|---|
/ |
Topic home (course list) | data/courses/index.ts |
/[course]/ |
Course overview | data/courses/<slug>.ts |
/[course]/[part]/ |
Lesson page | Course parts[] array |
/examples/ |
Code examples | All courses aggregated |
The shared component library (@localm/tutorial-framework) and AI agent configurations live in nilayparikh/_tuts_common, included as a git submodule at _common/.
- Always clone with submodules:
git clone --recurse-submodules <url> - Sync updates:
./scripts/sync-common.ps1 - Full guide:
docs/common-submodule.md
- Create
data/courses/<slug>.tsexporting aCourseDefinition - Import it in
data/courses/index.tsand add toALL_COURSES - The site automatically generates pages at
/<slug>/and/<slug>/<part>/ - Run
npm run buildto verify
- Fork this repo (or "Use this template"), then
git submodule update --init --recursive - Edit
data/courses/index.ts— updateSITE_TOPICfor your topic - Create course data files under
data/courses/ - Edit
config/site.tswith your branding npm run build→ deployout/to GitHub Pages
See docs/README.md for the full guide.
Brand system docs:
npm run build # → out/ directory
npx serve out # Preview locallyFor GitHub Actions CI/CD, see docs/deployment.md.
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Components | @localm/tutorial-framework |
| Language | TypeScript (strict) |
| Output | Static HTML (output: 'export') |
| Hosting | GitHub Pages |
© 2026 LocalM™. All rights reserved.