- creating a unified interface for keeping track of freeCodeSchool students
- accounts for students to login and see their own pages
- admins can login and see everyone via the Django admin interface
- it will be able to use Github OAuth
- freeCodeSchool is a non-profit coding program that teaches people coding basics for free.
- It's set up to offer 3-month long classes in two different levels, 1 and 2. When students pass level 1 - HTML, CSS, and JS, they can move onto level 2 - Node, Express, and Mongo.
- Must have Python 3 & Postgres version 12.x installed and running
- Clone the repo and cd into repo
- Create a virtual environment:
python -m venv venv
- Go into your virtual environment:
source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
- Create an admin user for logging into the Django admin interface:
python manage.py createsuperuser
- Setup Database
- Create the database:
CREATE DATABASE freecodeschool;
- Create DB user: `CREATE USER fcs_admin;
- Grant privilages to user for our database:
GRANT ALL PRIVILEGES ON DATABASE freecodeschool TO fcs_admin;
- Run migrations:
python manage.py migrate
- Create the database:
- Run the app:
python manage.py runserver
- View the API at
localhost:8000
and the admin interface atlocalhost:8000/admin
-
Students and Organizers/Admin accounts login using GitHub OAUTH
-
Private Student Profile: Visible to only the user and organizers/admins
- FreeCodeCamp.org progress page url: freecodecamp.org/codecafecentral
- Discord Name
- Phone
- Attendenance (not editable by students)
- List of labs:
- Link to the lab starter
- input field for a link to their completed version
-
Admin Dashboard
- Student Progress/Outcomes
- Grouped by enrollment period (semester)
- Show all students in a table to track progress/outcomes
- Be able to edit any part of the table
- Similar to: https://docs.google.com/spreadsheets/d/1M2rAQSHNFqZlhAV0i1fKfVLBpx4CqRMUzowoGWS_KKQ/edit#gid=0
- Grouped by enrollment period (semester)
- Volunteer management
- Be able to view volunteers listed in a table
- Waitlist
- Table of all those on the waitlist
- Student Progress/Outcomes
-
User
- password
- groups: student, admin, or volunteer (can only belong to one)
-
StudentProfile
- first_name
- last_name
- preferred_name
- discord_name
- github_username
- codepen_username
- fcc_profile_url
- current_level
- phone
- timezone
-
Volunteer
- first_name
- last_name
- hours_available
-
VolunteerHours
- volunteer: FK
- start: DateTime
- end: DateTime
-
Lecture
- date
- title
- description
- lecturer_name
- slides_url
- duration
- level
- required: BooleanField
-
Attendance
- lecture_id
- student_id
-
Project (labs)
- title
- description
- url
- level
- required
-
StudentSubmission
- student_id
- project_id
- url: CharField
- feedback: TextField (for comments from reviewers)
- approved: BooleanField
-
StudentCertificate
- student_id
- certificate_id
-
Certificate
- name
- description
-
Waitlist
- first_name
- last_name
- notes
Prefix: /api/v1
/users
- get (temporary, only for testing)
- post
/users/:id
- get
- patch
- delete
/users/:id/profile
- get
example response:
{
"user": 6,
"name": "Daneel Olivaw",
"bio": "hello there...",
"preferred_name": null,
"avatar_url": "http://example.com",
"discord_name": null,
"github_username": "rdaneel",
"codepen_username": null,
"fcc_profile_url": null,
"current_level": 1,
"phone": null,
"timezone": null
}
- post
/users/:id/certificates
- get
/users/:id/assignments
- get
- post
/certificates
- get
/projects
- get
-
Students will be able to have public profiles with this information:
- First Name
- Last Name
- Preferred Name
- GitHub Username
- Codepen Username
- Certificates/Badges
-
Area where volunteers can view their own information and update their hours
- Create an hours available table for volunteers so they can denote exact hours
-
Set type of lecture (add type field to Lecture model)