• Stars
    star
    142
  • Rank 257,022 (Top 6 %)
  • Language
    Python
  • License
    Mozilla Public Li...
  • Created over 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Management system for students of our free coding school.

Student Management System

This is a simple API for:

  • 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

About the Program

  • 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.

Table of Contents

Running Locally

  1. Must have Python 3 & Postgres version 12.x installed and running
  2. Clone the repo and cd into repo
  3. Create a virtual environment: python -m venv venv
  4. Go into your virtual environment: source venv/bin/activate
  5. Install dependencies: pip install -r requirements.txt
  6. Create an admin user for logging into the Django admin interface: python manage.py createsuperuser
  7. Setup Database
    1. Create the database: CREATE DATABASE freecodeschool;
    2. Create DB user: `CREATE USER fcs_admin;
    3. Grant privilages to user for our database: GRANT ALL PRIVILEGES ON DATABASE freecodeschool TO fcs_admin;
    4. Run migrations: python manage.py migrate
  8. Run the app: python manage.py runserver
  9. View the API at localhost:8000 and the admin interface at localhost:8000/admin

Requirements

  • 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
    • Email
    • 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

Schema

  • User

    • email
    • 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
    • email
    • 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
    • email
    • notes

API

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

Roadmap

Version 2

  • 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)