• v1.0.0 10b56789e2

    v1.0.0 Stable

    Bill released this 2026-03-01 11:35:55 -05:00 | 8 commits to main since this release

    Initial 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