Monorepo for an ESAT prep platform with two apps:
esat-data-pipeline
Data processing/classification tooling for question content.esat-practice-website
Learner-facing ESAT practice app.
- Repository Layout
- Quick Start
- Commands
- Pipeline to Website Workflow
- Screenshots
- Contributing
- License
esat-practice/
|- esat-data-pipeline/
`- esat-practice-website/
Prerequisites:
- Node.js 20+
- npm 10+
Install dependencies:
cd esat-data-pipeline
npm install
cd ../esat-practice-website
npm installRun both apps (in separate terminals):
# Terminal 1
cd esat-data-pipeline
npm run dev
# Terminal 2
cd esat-practice-website
npm run data:prepare
npm run devnpm run dev- local website dev servernpm run data:prepare- generatepublic/data/manifest.json+ data packsnpm run verify:loader- validate loader and data shapenpm run build- data prepare + type-check + production build
npm run dev- local pipeline dev servernpm run check:question-counts- validate extraction countsnpm run build- type-check + production build
- Process/refine source data in
esat-data-pipeline. - Update the website's source data inputs.
- In
esat-practice-website, run:npm run data:preparenpm run verify:loadernpm run build
- Deploy website artifacts.
Notes:
- Generated website data artifacts are intentionally ignored in git:
esat-practice-website/public/data/packs/esat-practice-website/public/data/manifest.json
- Branch from
main. - Keep commits scoped and descriptive.
- Before opening a PR, run build checks for changed projects:
esat-practice-website: npm run buildesat-data-pipeline: npm run build
- For UI changes, include before/after screenshots in the PR.
Licensed under MIT. See LICENSE.


