Skip to content

freecodeschoolindy/student-management-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

About

Management system for students of our free coding school.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages