Skip to content

Key Concepts

A string ("k12", "dance", "music", "kindergarten", "tutoring") that drives all behavior.

A configuration object that declares: which modules are enabled, what scheduling pattern to use, what terminology to apply, and what theme to show. See PDC.

A different implementation of the same capability. "schedule-class" uses fixed-timetable for K-12 and time-slots for dance. See Strategies.

A footprintjs pipeline (Validate → Check → Create). Every stage is traced. See Flows.

A 10-method port interface. You implement it with your database (Prisma, Mongo, etc.). school-footprint never touches your DB directly.

type SchoolRepository = {
createStudent: (input) => Promise<Student>;
findStudents: (query) => Promise<Student[]>;
createScheduleEntry: (input) => Promise<ScheduleEntry>;
findConflicts: (input) => Promise<Conflict[]>;
// ... 6 more methods
};

16 configurable terms per school type. “Student” becomes “Dancer” for dance, “Child” for kindergarten. Applied throughout narrative, UI, and API responses.