A web application for managing academic plans with course requirements, prerequisites, and graduation tracking.
react-flask/client-side/- React frontend applicationreact-flask/flask-server/- Flask backend API with MySQL databasedoc/- Project documentation and design documents
Frontend:
- React 18 with React Router
- JWT authentication
- Responsive UI with glassmorphic design
Backend:
- Flask with Flask-JWT-Extended
- MySQL database (Aiven cloud-hosted)
- SQLAlchemy ORM
- bcrypt password hashing
- Node.js and npm
- Python 3.8+
- MySQL database (local or cloud)
- Navigate to the Flask server directory:
cd react-flask/flask-server- Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install Python dependencies:
pip install -r requirements.txt- Create a
.envfile with your database credentials:
MYSQL_HOST=your-host
MYSQL_PORT=your-port
MYSQL_DATABASE=your-database
MYSQL_USER=your-user
MYSQL_PASSWORD=your-password
JWT_SECRET_KEY=your-secret-key
JWT_ACCESS_TOKEN_EXPIRES=3600
FLASK_ENV=development
FLASK_DEBUG=True
- Initialize the database (first time only):
python init_mysql_db.py- Run the Flask server:
PORT=5001 python server_mysql.pyThe backend will be available at http://localhost:5001
- Navigate to the client directory:
cd react-flask/client-side- Install dependencies:
npm install- Create a
.envfile:
REACT_APP_API_URL=http://localhost:5001
- Start the development server:
npm startThe frontend will be available at http://localhost:3000
- User authentication with JWT tokens
- Academic plan creation and management
- Course prerequisite tracking
- Graduation requirement verification
- Major and program support
- Secure password storage with bcrypt
The application uses 8 main tables:
User- Authentication credentialsStudent- Student informationAcademic_Plan- Student academic plansCourse_Catalog- Available coursesPlanned_Course- Courses in student plansPrerequisite- Course prerequisitesRequirement- Graduation requirementsAP_Credit- AP/transfer credits
This project was developed as part of CS411 coursework. Additional Contributions made by Karthik Bagavathy out of pure interest.