The Pingala dashboard is a Vite/React learning interface for the open AI and machine-learning curriculum. Curriculum text is stored as Markdown/YAML under content/ during the bootstrap phase and is validated into a generated runtime bundle before the app builds.
npm ci
npm run devUseful checks:
npm run content:validate
npm run typecheck
npm run typecheck:worker
npm run worker:check
npm run build
npm run lintThe local Vite server stays anonymous because Pages Functions are not mounted by Vite. Use npx wrangler pages dev dist to exercise the local API and D1 emulator.
Lesson text lives in content/courses/<course>/modules/<module>/topics/<topic>/. Each topic has:
metadata.ymlfor typed metadata, sources, license, and author attestation;content.mdfor safe Markdown, math, code, and callouts;checkpoints.ymlfor typed quiz questions.
Run npm run content:migrate only when intentionally regenerating the bootstrap content from the legacy TypeScript dataset. Run npm run content:sync to materialize the immutable commit configured in content-lock.json after the subject repository is split out.
The Pages Functions API is in functions/[[path]].ts and uses the D1 migration in migrations/0001_initial.sql.
Required runtime secrets:
GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET
SESSION_SECRET
Before deployment, replace the D1 placeholder in wrangler.jsonc, create the GitHub OAuth callback at /auth/github/callback, apply migrations, and configure the Cloudflare deployment secrets. See docs/github-org-setup.md.
Read CONTRIBUTING.md before proposing curriculum. All content changes are reviewed through GitHub pull requests, with automated schema/security checks and human review for correctness, citations, originality, and author understanding.