DragonFlow is a student success planner built for Drexel University students. It optimizes academic planning through personalized course recommendations, schedule building, and success metrics tailored to your major, GPA, and preferences. You can explore courses, see professor ratings, predict your likelihood of success, and plan terms with CO-OP in mind—all in one place.
- Smart Course Planning: Personalized recommendations, major requirement tracking, CO-OP integration, conflict detection
- Success Metrics: Course success prediction, GPA projections, workload analysis, term balance
- Professor Insights: Rating integration, teaching style, historical grade distributions
- Backend: Python Flask, SQLAlchemy, Flask-Login, Flask-JWT-Extended
- Frontend: Svelte 5, TypeScript, DaisyUI, Shadcn-UI
- Validation: Marshmallow
| Contributor | Role |
|---|---|
| Rikhil Amonkar | Product Owner; ML model; Frontend visualization |
| Andrey Barriga | Full stack; design & API routing; database models; authentication |
| Matt Bunkin | Full stack; auth; RMP API integration; course filtering |
| Soumil Patel | Frontend & styling |
Developed for Drexel University's CI 102 and 103 course sequence.
- Node.js (for frontend)
- Python 3.11+ (for backend)
- PostgreSQL
- npm
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtCopy backend/.env.example to backend/.env and set:
DATABASE_URL– PostgreSQL connection string (e.g.postgresql://user:password@localhost:5432/dragonflow)DATA_FILE– Path toscripts/course_data.json(default:scripts/course_data.json)SECRET_KEY– Flask session secret (use a long random string)JWT_SECRET_KEY– JWT signing secret (use a long random string)
Generate secrets: python -c "import secrets; print(secrets.token_hex(32))"
Create the DB and run migrations:
createdb dragonflow
export FLASK_APP=run.py
flask db upgradeStart the backend:
python run.pyBackend runs at http://127.0.0.1:5000.
# From project root
npm install
npm run devFrontend runs at http://localhost:5173. Use that URL in the browser.
Keep the backend terminal open with python run.py, and in a second terminal run npm run dev from the project root. The app talks to the API at http://127.0.0.1:5000 by default. Override with VITE_API_URL in a root .env if needed.
- Never commit
backend/.env. Usebackend/.env.exampleas a template. - Keep
SECRET_KEYandJWT_SECRET_KEYlong, random, and private. - Use strong
DATABASE_URLcredentials in production.
- Early January 2025 — First planning
- Jan 22, 2025 — First GitHub commit
- May 15, 2025 — Last commit (course sequence)
- Jan 25, 2026 — Newest updates (cleanup, security, docs)