Table of Contents
Link to the wireframes for the website.
- Wireframes
- Add basic Angular frontend skeleton
- User authentication set-up
- Django models and APIs setup
- Django login/logout with access & refresh tokens
- Angular login
- Google authentication (Bugs: Angularx Social Login package button does not work after signing in)
- Create Python scripts to import CSV into database
- Set up Django APIs to send answers to questions
- Render questions, assignments, roster
- Integrate text editor to answer submission
- Render answer on the front-end, post answer to database
- Fix some issues with permissions. The general plan is to first configure the right way to secure the APIs based on user role in Django, then move on to Angular (show/hide content based on the role).
- Generate clusters. Save those to the database
- Clean question data (Remove n/a's) before saving it into database
- Render clusters to the frontend.
- Add option to claim questions in the clusters. Reserve claimed questions. Save info to database.
- Add option to answer multiple questions at once.
- Add option to unclaim questions
See the open issues for a full list of proposed features (and known issues).
- Django 5.0.3
- Angular 16.2.12
- MySQL 8.3.0
- MailHog (for testing emails)
More information on packages can be found in requirements.txt
.
- Clone the repo
git clone https://github.com/LynnHaDo/QnA-Website.git
Set up email testing
- Navigate to
backend
folder - Activate Mailhog
cd backend
mailhog
Set up the backend
- Run on server
python3 manage.py runserver
Set up the frontend
- Navigate to
frontend
folder - Before
npm install
to install packages, make sure the correct version of Angular is installed. - Run on server
cd ../frontend
npm install
ng s
Refer to backend/samples
for sample .csv
files
- Import course
cd backend
python3 manage.py runscript import_course --script-args [PATH/TO/COURSE.csv FILE]
- Import assignments
python3 manage.py runscript import_assignment --script-args [PATH/TO/ASSIGNMENT.csv FILE]
- Import questions
python3 manage.py runscript import_questions --script-args [PATH/TO/QUESTIONS.csv FILE] [ASSIGNMENT_ID]
- Delete questions of an assignment
python3 manage.py runscript delete_questions --script-args [ASSIGNMENT_ID]
- Generate clusters for all questions in an assignment
Note: Clustering results differ each time this is invoked since the algorithm is non-deterministic.
python3 manage.py runscript create_clusters --script-args [ASSIGNMENT_ID]