Live: english.digitcu.org
English majors at TCU choose from three degree tracks — English, Writing & Rhetoric, and Creative Writing — each with distinct requirement structures, lower-division caps, and elective rules. Advisors field the same mechanical questions every semester: "What counts toward my major?" "Am I on track?" "What should I take next?" These questions have deterministic answers that don't require a human, but currently only a human can answer them.
Engelina is a degree-planning wizard with a built-in AI chat assistant. Students walk through their completed coursework, plan upcoming semesters with real-time offering data, and get a progress dashboard — all without logging into any university system.
- For students: Self-service degree planning that validates requirements, flags scheduling issues, and answers questions about courses, careers, and degree progress via an AI assistant — available 24/7.
- For advisors: Students arrive at appointments with a pre-built degree plan (PDF or email), shifting conversations from mechanical audits to mentoring.
Engelina integrates an AI chat assistant powered by Sandra, the shared backend for the Advising Ecosystem. The AI receives live context from the wizard — completed courses, remaining requirements, progress, and current offerings — and uses this to provide grounded, program-specific responses rather than generic advice.
This repo holds the source of truth manifest schema at schemas/manifest.schema.json. Other wizards and Sandra validate against it.
- Requirements tracking with interactive checkboxes and progress visualization
- Term-aware planning — courses offered this semester are badged and sorted to top
- Semester-by-semester suggested plans calibrated to expected graduation date
- Prerequisite mapping with visual course sequence chains
- AI chat panel for questions about requirements, careers, and course selection
- PDF/email export of completed degree plans for advisor review
- Admin panel for managing courses, offerings, and analytics without code changes
- Privacy by design — no student login, no access to official student records, course planning stored locally in the browser
| Major | Total Hours | Max Lower-Division |
|---|---|---|
| English | 33 hrs | 9 hrs |
| Writing & Rhetoric | 33 hrs | 9 hrs (12 for Fall 2025 declares) |
| Creative Writing | 33 hrs | 3 hrs |
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production (includes manifest generation)
npm run build
# Preview production build
npm run previewThis wizard publishes an advising manifest consumed by Sandra, the shared AI chat layer in the Advising Ecosystem. Sandra powers the built-in chat panel where students can ask questions about requirements, careers, and course selection.
# Generate manifest only
npm run generate-manifestThe build script runs manifest generation automatically before vite build.
| File | Purpose |
|---|---|
scripts/generate-manifest.js |
Reads src/data/*.json, produces public/manifest.json |
schemas/manifest.schema.json |
Schema v1.0 (source of truth for all wizards) |
public/manifest.json |
Generated output — 3 programs |
src/data/offerings-sp26.json |
Spring 2026 course offerings (generated by course-scraper) |
src/data/contacts.json |
Department contacts |
src/data/career-options.json |
Career paths per major |
- This repo holds the source of truth schema at
schemas/manifest.schema.json - Other wizards and Sandra copy this schema and CI-check their version against it
A password-protected admin interface is available at /#/admin for managing data without code changes.
Live: https://english.digitcu.org/#/admin
| Tab | Firestore Doc | Description |
|---|---|---|
| Analytics | english_analytics, english_submissions |
Anonymous usage metrics — wizard starts, step funnel, program popularity, exports |
| Courses | english_config/courses |
Course catalog (194 courses: ENGL, WRIT, CRWT) |
| Programs | english_config/programs |
Degree requirements for all 3 majors |
| Offerings | english_config/offerings_* |
Per-semester course offerings |
| Frequency | english_config/frequency |
Course offering patterns across semesters |
- Google OAuth via shared Firebase project (
dcda-advisor-mobile) - Email whitelist:
c.rode@tcu.edu,0expatriate0@gmail.com
- Firestore-first with static JSON fallback — the student-facing wizard reads live from Firestore; if Firestore is unavailable (offline/PWA), it falls back to the bundled static JSON files in
src/data/ - All admin editors support Import/Export JSON for bulk data management
- React 19 + TypeScript 5.9
- Vite 7
- Tailwind CSS
- Radix UI (shadcn/ui)
- Firebase (Auth, Firestore, Hosting)
- Lucide React Icons
- Hosting: Firebase Hosting (site:
english-advising-wizard) - Live URL: https://english.digitcu.org
- Deploy:
npm run build && npx firebase-tools deploy --only hosting - CI/CD auto-deploys on push to
mainvia GitHub Actions
Course requirements are based on TCU English Department advising grids (Spring 2026). Official advising page: https://addran.tcu.edu/english/academics/advising/
- Updating Offerings for a New Semester: From
course-scraper/, runnode scrape.mjs -t "Fall 2026" -s ENGL,CRWT,WRIT -l 49999 -o ../english-advising-wizard/src/data/offerings-fa26.json. Then import the JSON via the admin Offerings tab (or updatesrc/services/courses.tsfor the static fallback). - Updating Requirements: Edit via the admin Programs tab, or edit
src/data/programs.jsondirectly. - Updating Contacts/Careers: Edit
src/data/contacts.jsonandsrc/data/career-options.json, then runnpm run generate-manifest. - Updating Course Catalog: Use the admin Courses tab to add/edit/remove courses, or import a JSON array via the Import button.
MIT — see LICENSE.