@oaknational/oak-curriculum-schema
v2.5.0
Published
Contract tests to ensure data integrity between Oak apps and their data
Maintainers
Keywords
Readme
@oaknational/oak-curriculum-schema
Zod schemas and TypeScript types for Oak National Academy's curriculum data.
Installation
pnpm add @oaknational/oak-curriculum-schema zodUsage
Every entity is available in both snake_case (matching database columns) and camelCase variants:
import {
lessonSchema,
lessonSchemaCamel,
type Lesson,
type LessonCamel,
} from "@oaknational/oak-curriculum-schema";
// Validate snake_case data (e.g. directly from the database)
const lesson = lessonSchema.parse(rawData);
// Validate snake_case data and transform to camelCase (e.g. when you want camelCase in your app)
const lessonCamel = lessonSchemaCamel.parse(apiResponse);Available schema categories
- Public schemas -- core curriculum entities (lessons, units, assets, questions, threads, unit variants)
- Published schemas -- contracts for materialized views and aggregated data shapes
Non-conformant camelCase schemas
Most *SchemaCamel exports are derived via zodToCamelCase, which accepts snake_case input and transforms keys to camelCase during .parse(). The following schemas are exceptions -- they are manually defined with camelCase keys and therefore expect camelCase input directly. This will be fixed in a future major version.
contentGuidanceSchemaCamelkeyLearningPointsSchemaCamellessonOutlineSchemaCamelteacherTipsSchemaCamel
