-
v1.0.0 Stable
released this
2026-03-01 11:35:55 -05:00 | 8 commits to main since this releaseInitial release of the EMBA Specialization Solver.
Features
- Optimization engine — LP-based credit allocation solver with two modes:
- Maximize Count — finds the largest feasible set of specializations, using ranking as tiebreaker
- Priority Order — greedily adds specializations in user-ranked order
- Course selection UI — select one course per elective set across 12 sets (Spring, Summer, Fall terms)
- Drag-and-drop specialization ranking — reorder the 14 specializations by priority with touch and keyboard support
- Decision tree analysis — Web Worker enumerates remaining course combinations to compute ceiling outcomes per choice
- Status tracking — each specialization classified as achieved, achievable, missing required course, or unreachable
- Mode comparison — displays what the alternative optimization mode would produce
- Credit bars and allocation breakdowns — visual progress toward the 9-credit threshold with expandable per-course detail
- Responsive layout — two-panel grid on desktop/tablet, single-column on mobile with floating status banners
- CSS transitions and animations — smooth UI interactions respecting prefers-reduced-motion
- State persistence — rankings and selections saved to localStorage
- Docker deployment — multi-stage Dockerfile (Node 22 build → Nginx Alpine serve) with Docker Compose, configurable port (default 8080)
- Full test suite — data integrity, feasibility solver, optimizer, and decision tree tests via Vitest
Constraints Modeled
- Credit non-duplication (2.5 credits per course shared across specializations)
- Maximum 3 specializations (30 total credits, 9 required each)
- Required course prerequisites for 4 specializations
- Strategy S1/S2 tier system (at most 1 S2 course contributes to Strategy)
- Mutual exclusion from same-set conflicts
Downloads
- Optimization engine — LP-based credit allocation solver with two modes: