Headmaster II is a full stack application catered toward managing students in a software development learning environment. Instructors are able to track student activity through Github commit data and keep tabs on individuals and their specific learning challenges through a timeline of feedback touchpoints.
-
Ensure PostgreSQL has been installed on your machine
-
(Optional) Run the following commands in the PostgreSQL shell to create the
headmaster2
database andtestUser
role.
CREATE DATABASE headmaster2
CREATE USER testUser WITH PASSWORD 'password'
GRANT ALL PRIVILEGES ON DATABASE headmaster2 to testUser
-
Clone the repository and run
npm install
in the root directory to install dependencies for server. -
Install Knex globally by running
npm install knex -g
-
If using different database credentials from 2 (default), modify
knexfile.js
to properly include your PostgreSQL connection settings -
Use the start script
npm run initalize
to initialize a blank database -
If desired, use
npm run seedRandom
to initialize a database with random test data. -
Add yourself as a superuser by running
npm run addSuperUser --github={your_github_username} --role=superadmin
. Other roles are also available - simply replace--role=superadmin
with one of the following:
superadmin
: View and edit all cohorts, create new cohorts, create and edit students in any cohort, add touchpoints for any studentadmin
: View and edit user assigned cohorts, create new cohorts, create and edit students in user assigned cohorts, add touchpoints for user assigned studentsuser
: View user assigned cohorts, edit students in user assigned cohorts, add touchpoints for user assigned students
-
Register a new Github OAuth App to allow authentication on the domain
http://localhost:3000
. The callback will behttp://localhost:3000/auth/callback
. -
Fill out the relevant parameters in your .env file as per your Github App and other paremeters
-
Deploy locally using
npm run dev
to start application in nodemon ornpm start
to run application using NodeJS.
Currently Headmaster II may be deployed directly to Heroku by creating a new Heroku project with the Heroku Postgres
add on attached from the heroku-deploy
branch. You will also need to create a new Github OAuth App with your deployed domain name.
See the instructions here on how to deploy a Heroku app using the Heroku CLI.
Headmaster is useful for tracking student activity and progress throughout a course.
Users must have a valid github account and be added in the database with a defined role in order to log in. Once logged in, the user may log out by clicking the User Menu on the right side of the Menu bar and selecting Logout
This view will show all of an instructor's assigned cohorts. If the instructor has an admin
or superadmin
role, it also allows creation of new cohorts.
This page contains all cohort information and students.
In this view, each card shows a concise summary of each student's information, current status, and activity. Users can quickly add touchpoints for multiple students from this view. Cards can be sorted or hidden by various criteria using the controls in the top right.
This view shows a list view of students. The list can be sorted by type by clicking on the headers. New students may be added by clickin the +
icon in the upper right hand corner.
In progress
In progress
In progress
- New features will be tracked on the project Kanban Board
- Bugs are tracked using the Issue Tracker
This project is currently a work in progress and many features have not yet been implemented. If a critical feature is missing or not functioning properly, please open an issue.
© 2019
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.