π§± Creating Modules & Assignments
In Classmoji, each module is a GitHub repository created for a student (or team), and each assignment is a GitHub issue within that repo.
This structure mirrors real-world development workflows while enabling flexible grading, feedback, and versioning.
π¦ What Is a Module?β
A module represents a unit of coursework (like a lab or project). When you publish a module:
- A GitHub repository (module) is created for each student or team
- One or more issues (assignments) are created inside that repository
- Students complete assignments by pushing code and closing issues
π§° Creating a Moduleβ

To create a module, you'll define:
- Title β the name of the module (e.g.,
react-intro
) - Type β
Individual
orTeam
- Weight β how much this module contributes to a student's final grade in the class
- Extra Credit? β mark if this is optional bonus work
- Template Repository β the starting code (structure, files, branches) used to generate student repos
π Student repo naming format: moduleName-studentGithubUsername
(e.g., react-intro-adaLovelace
)
π Adding Assignments to a Moduleβ
Each assignment is a GitHub issue that lives inside the module repository. You can add multiple assignments per module.

Propertiesβ
- Title β the issue title (e.g., βBuild the API endpointsβ)
- Weight β % contribution to the module grade
- Release Date β when the issue/assignment should be created in the module repository
- Student Deadline β when students must close the issue
- Grader Deadline β when TAs should finish grading
- Tokens per Hour β how many tokens students need to extend their deadline by one hour
- Description β full instructions shown to the student in the GitHub issue
Publishing a Module: Classmoji automatically creates repositories for each student or team and generates all assignments (issues) with release dates on or before today's date. Assignments require a Release Date to be created and are released daily at 12:01 AM EST.
π Publishing a Moduleβ

When you publish a module, Classmoji:
- Creates a repository for each student or team
- Adds students and TAs to each repo
- Generates all assignments (issues) with current or past release dates
Template Repos Cannot Be Changed after publishing. Choose carefully before publishing!
π Syncing a Moduleβ
Use the Sync Module feature to:
- Create repos and issues for students who joined late or missed the initial publishing
- Add newly released issues (assignments) to existing repos (modules)
ποΈ Deleting a Moduleβ
Deleting a module in Classmoji removes it from your dashboard, but does not delete associated GitHub repositories or issues.
π Updating Student Repos After Publishingβ
Many instructors miss using GitHub's template repository approach rather than the official GitHub Classroom fork-based model. While this is a good attempt to solve the problem of updating repositories after they've been created,it does leave a common question:
How do I update assignment files after the repos have already been created in an easy way?
Hereβs how we handle it in Classmoji:
- You update the template repo (add new files, fix instructions, change tests β whatever you need).
- For each student repo, we create a new branch (e.g.,
update-2025-05-06-add-new-files
). - We pull in changes from the updated template repo into that branch.
- Then, we open a pull request from that branch into the student's main.
This doesnβt overwrite student work. It keeps everything separate, lets them resolve merge conflicts cleanly, and shows the exact changes youβre trying to bring in.
It works and itβs a whole lot cleaner than trying to reset or re-clone every repo.