syllabusobject
v2.0.1
Published
A deterministic builder for static syllabus structures with filename-safe output.
Downloads
27
Maintainers
Readme
📘 SyllabusObject v2 — Developer README
🧱 Purpose
A micro-library for building static, deterministic syllabus structures — optimized for file-based linking, Svelte integration, and AI tooling.
This is not a CMS. This is a builder for encoding fixed subject outlines — like school textbooks — into stable, queryable JSON.
✅ Installation
npm install syllabusobject✅ Basic Usage
import { SubjectBuilder } from "syllabusobject";
const sb = new SubjectBuilder({
tcodeName: "fbise9physics",
filename: "fbise9physics",
description: "Federal Board Grade 9 Physics",
image: "/images/fbise9physics.png",
chapters: [
{
filename: "ch1_motion",
name: "Motion",
exercises: [
{ filename: "ex1_intro", name: "Introduction" },
{ filename: "ex2_numericals", name: "Numericals" }
]
}
]
});
sb.getChExByFilename("ch1_motion", "ex1_intro").addQuestion({
filename: "q001_velocity",
name: "Define velocity",
type: "md"
});
const syllabus = sb.toJSON();🔑 Output Format (Tcode Object)
{
"tcodeName": "fbise9physics",
"filename": "fbise9physics",
"description": "...",
"image": "...",
"chapters": [
{
"filename": "ch1_motion",
"name": "Motion",
"exercises": [
{ "filename": "ex1_intro", "name": "Introduction" },
{ "filename": "ex2_numericals", "name": "Numericals" }
]
}
],
"questions": [
{
"filename": "q001_velocity",
"name": "Define velocity",
"type": "md",
"chapterFilename": "ch1_motion",
"exerciseFilename": "ex1_intro",
"tcodeName": "fbise9physics"
}
]
}🧠 Design Principles
- All IDs (
filename) are permanent and file-safe - Structure is declared once, then frozen
- No dynamic
.addChapter()or.addExercise() - All questions must be added through validated context
- The only output is
.toJSON()— no runtime logic or mutation
🔧 Limitations
- For v2:
chaptersandexercisesdo not supportdescription,image— these will be added in v3
📁 Suggested Content File Layout
For use in SvelteKit or static builds:
src/lib/content/
├── fbise9physics/
│ ├── ch1_motion_ex1_intro_q001_velocity.js
│ ├── ch1_motion_ex2_numericals_q002_acceleration.js
├── fbise9math/
│ ├── ch1_algebra_ex1_intro_q007_factorization.jsUse tcodeName + filename to build paths in the frontend.
📬 License
MIT
Built for deterministic educational content at scale.
