Web app for generating class and staff timetables.
- 3 years with 2 sections each
- 6-day order
A-F - 5 sessions per day
- 55-minute class periods
- Staff max load check (
18hours) - Student timetable view
- Staff timetable view
- Reserved class slots and reserved staff slots
- Cloud save/load with version history restore
- Timetable dirty-state warning after planning edits
- Lock/pin timetable cells and manual lock editor
- Inline edit for teaching loads and reserved classes
- Constraint toggles (first/last hour, same-subject/day, max consecutive)
- Room support and room heatmap
- Role modes (admin/editor/viewer) and finalize-date lock
- Firestore cloud save/load
- Netlify-ready Vite build
npm install
npm run devnpm run build- Create Firebase project.
- Enable Firestore Database.
- Enable Authentication -> Anonymous sign-in.
- Copy
.env.exampleto.env. - Fill Vite Firebase variables.
- Optional: deploy Firestore rules with
firebase deploy --only firestore.
Firestore document used:
- Collection:
timetables - Default document:
main - Default versions:
timetables/main/versions/*
Namespace document used (institution + department + semester):
- Document:
timetables/<institution>__<department>__<semester> - Versions:
timetables/<institution>__<department>__<semester>/versions/*
Security model:
- Firestore reads/writes require authenticated user.
- App signs in users anonymously for cloud operations.
npm run test- Push repo to GitHub.
- Import repo in Netlify.
- Build command:
npm run build - Publish directory:
dist - Add same Firebase env vars in Netlify project settings.
netlify.toml already included.
Recommended repo name:
time-table-generator
If GitHub CLI is installed locally:
git init
git add .
git commit -m "feat: add timetable generator web app"
gh repo create time-table-generator --public --source . --remote origin --push