Development Branch: https://github.com/forma-cristata/SHA_Authenticator
720p.mp4
This full-stack application gives students an extra layer of protection when submitting code assignments via SHA for an organization.
- Fetch assignments from GitHub Classroom
- Cache assignments locally
- Responsive UI with various interactive elements
- Concurrent server processes
- Client-side: Angular, TypeScript, CSS
- Server-side: Node.js, Express, Octokit
- Build Tools: npm, Parcel, Nodemon, Concurrently
-
Clone the repository:
git clone https://github.com/yourusername/your-repo-name.git cd your-repo-name -
Install dependencies for the server:
cd server npm install -
Install dependencies for the client:
cd ../client npm install
To start the full app locally, run the following command in the client directory:
concurrently \"ng serve\" \"cd ../server && npm start\"To start the server, run the following command in the server directory:
npm startTo start the client, run the following command in the client directory:
ng serveOpen your web browser and navigate to http://localhost:4912.
Ensure you have a app.config.json file in the root directory with the following structure:
{
"gitHubAccessToken" : "INSERT ORG TOKEN HERE",
"pollTime" : "00:01",
"organization": "ORG NAME"
}- If the app does not load correctly, you should delete your local cookies and ensure app.config.json has valid values for all keys.
- Configure the names of your GitHub access token, poll time that you prefer, and your organization as it appears in GitHub inside of app.config.json.
The server utilizes terminal messages to display information about the server's status and the data being fetched from GitHub. The color codes used are as follows:
- File write success: \x1b[32m (green)
- Error: \x1b[31m (red)
- Request: \x1b[36m (cyan)
- Server listening: \x1b[34m (blue)
This project helps students verify their GitHub SHA (commit ID) before submitting assignments. New coding students often struggle with GitHub's complex interface, leading them to submit incorrect commit IDs to Canvas—resulting in lost credit and frustrated teachers. Our application provides a simplified interface where students can verify that their chosen commit originates from the correct assignment.
The setup requires a teacher to configure and host two servers using their organization's authentication token and name. Teachers can set a polling schedule in app.config.json to update the database when new assignments are released. Once hosted, students can browse their organization's classes and assignments. When they select an assignment, the system uses their username to verify if their entered commit ID matches their cloned repository.
For local testing, you can run the application by executing npm install followed by start. The application uses Concurrently to launch both servers and the client simultaneously.
your-repo-name/
├── client/
│ ├── src/
│ │ ├── app/
│ │ │ ├── class-choice-view/
│ │ │ │ ├── class-choice-view.component.css
│ │ │ │ ├── class-choice-view.component.html
│ │ │ │ ├── class-choice-view.component.ts
│ │ │ ├── ...
│ ├── index.html
│ ├── ...
├── server/
│ ├── modules
│ ├── server.mjs
│ ├── package.json
│ ├── ...
├── app.config.json
├── ...
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Please open an issue or submit a pull request.
For any inquiries, please contact kaci.a.craycraft@gmail.com