-
Define key user stories
-
Define MVP scope
-
Create mocks for the MVP - very simple one page app. ------> ended up not being so simple...
-
Define a simple databse schema
-
Look into the hashing algorithm for student IDs
-
Set up the react app
-
Define the states and functionality
-
Breakdown tasks
-
V1
-
create file uploader component - no need to create - already have one
-
create input form component
-
create a hidden success screen
-
[IP ] figure out where the file gets uploaded to google cloudno longer needed as we are not storing files any more. -
need to implement a backend: Python with Flask - as it's lightweight and minimalistic. I dont' think I will see super high traffic with this app.
-
[IP] how to implement the logic of parsing the uploaded csv info
-
set up Heroku SQL with created tables
-
logic to send data to SQL
-
create qureies for matching + update
-
NOTE: Not only look up the course in this term, but connect you with students of next term as well. I think this is not rly a V5 but it's something very easy that MVP should be able to do.
-
-
V2
- add the logic for getting the stats bar component
-
V3
- add privacy note pop up
-
V4
- Add styling to everything...
-
Constraints: - [ ] File has to be xlsx - [ ] User has to have at least 1 way of contact info - [ ] The file has to match the current format (can make it less generic i guess)
-
Define test flows - this should have been done first. Honestly. MY BAD.
- [ ] testflow1: missing information in the form - [ ] testflow2: excel format updated due to workday updates so processing logic breaks - [ ] testflow3: wrong excel file - [ ] testflow4: user update their file after iniital upload - [ ] testflow5: user update their contact info - [ ] testflow6: user upload a different student's schedule - [ ] testflow7: -
Carry out the test flows
-
Invite beta testers
-
Iterate based on feedback
-
Clean up readme file...
- As a new BCS student, I want to be able to find folks in my cohorts, who are in the same course as well as the same lecture, lab and discussion sections as me so that I can connect with them and form study groups, or pair up as lab / porject partners.
- Students should be able to upload their course schedule and get notified of other students who are in their course, as well as who share the same lecture, lab and discussion sections.
- Students should be able to share their contact information if they wish to be contacted by other users.
- There's a button to upload a schedule.
- The data base work and update student schedule correctly.
- There's a status bar to show how many people have uploaded their schedules, and list of courses and number of people in each course.
- There's a blurb that talk about the purpose of app and how it works (aka people get email at 5pm daily of updates).
- MVP Note! It is posisble the email update feature will be hard to implement...if it's hard...we could forgo this and just display information on the app... and we could display a message to the user to check back the next day if they don't see any matches.
- Or send email to users when 'five' more folks have uploaded their schedules./ when the database has new matches for a given users / Users get an email with new matches
Student Table
COLUMN | DATA TYPE | NOTES |
---|---|---|
first_name | VARCHAR | first name of the student |
last_name | VARCHAR | first name of the student |
hashed_student_id | VARCHAR | unique hashed student id for security and for identification usage |
VARCHAR | required | |
phone_number | VARCHAR | optional |
VARCHAR | optional | |
discord_handle | VARCHAR | optional |
facebook name | VARCHAR | optional |
instagram_handle | VARCHAR | optional |
CourseSection Table
COLUMN | DATA TYPE | NOTES |
---|---|---|
course_code | VARCHAR | Course ID (e.g. 'CPSC_V 121') |
course_name | VARCHAR | Course Name (e.g. 'Models of Computation') |
section_ID | VARCHAR | section ID ('101') |
(course_code, section_ID) | VARCHAR | Composite primary key |
instruction_format | VARCHAR | Lab or tutorial or lecture |
meeting_patterns | VARCHAR | Meeting times (e.g., "MWF 9:00-10:00") |
Delivery_Mode | VARCHAR | In-person, online, etc. |
start_date | DATE | course start date |
end_date | DATE | course end date |
Enrollment Table
COLUMN | DATA TYPE | NOTES |
---|---|---|
enrollment_id | VARCHAR | Composite key of student_id, course_id, section_id, course_start_date. One stuent can only enroll in a course once in the same term, but could enroll in the same course twice in different terms. |
hashed_student_id | VARCHAR | unique hashed id of the student id for security |
registeration_status | VARCHAR | registered or waitlisted |
course_code | VARCHAR | Course code |
section_code | VARCHAR | 'L1D' |
enrollment_date | DATE | when this was added to the database |
Notes on the data processing flow:
- User fills out the form and uploads the file.
- The frontend sends a POST request to the backend, containing the form data (firstName, lastName, etc.) and the file.
- The backend processes the file to extract the student ID and course information, generates the hashedID, and return a success msg / error to the front end.
- Why? Seperation of concenrs... Security... file never stays on the frontend
- Try ORM python libraries