Skip to main content

🧱 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​

Create Module

To create a module, you'll define:

  • Title – the name of the module (e.g., react-intro)
  • Type – Individual or Team
  • 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
info

πŸ“ 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.

Create Assignment

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
info

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​

Publish 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
warning

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:

  1. You update the template repo (add new files, fix instructions, change tests β€” whatever you need).
  2. For each student repo, we create a new branch (e.g., update-2025-05-06-add-new-files).
  3. We pull in changes from the updated template repo into that branch.
  4. 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.