Import from Github Classroom
Bring your existing Github Classroom classrooms, assignments, rosters, and grades into Classmoji
Already ran your course on Github Classroom? If you exported its data while Githubâs Classroom export utility was still available, Classmoji can import those classrooms, assignments, student rosters, repositories, and recorded grades in a few clicks.
How it works
Section titled âHow it worksâThe import reads an export of your Github Classroom data. It makes zero Github API calls and nothing is sent to Github. Your export is read entirely in your browser, then the normalized data is saved to your Classmoji account.
You donât need to install the Classmoji Github app to import. Classrooms come in fully usable. Install the app later to light up the Github-connected features (no re-import needed):
- Repository syncing to keep imported repos in step with Github.
- Live submissions: push and issue webhooks from the student repos.
- Publishing repositories and creating student repositories.
- Roster syncing and team management.
Step 1: Locate your export
Section titled âStep 1: Locate your exportâGithub has retired the Classroom export utility and the Classroom API it relied on, so a new export can no longer be produced. The import works only with an export you already made.
Look for a folder named like classroom-export-20260619-190913. It should contain a classrooms.json file at its root and one subfolder per classroom, each holding classroom.json, assignments.json, and a folder per assignment with assignment.json, accepted-assignments.json, and grades.csv.
Zip that folder so you have a single .zip to upload. Zipping the folder itself or just its contents both work.
Step 2: Upload the export
Section titled âStep 2: Upload the exportâHead to app.classmoji.io and click Import from Github Classroom on your classrooms screen. Then drag your .zip onto the upload area (or click to browse).
Classmoji parses the archive in your browser and shows what it found. If the file isnât a valid export, or classrooms.json is missing, youâll get a clear error explaining whatâs wrong.
Step 3: Select classrooms
Section titled âStep 3: Select classroomsâA single export can contain many classrooms. Pick the ones you want to bring over. Each row shows the classroom name, its Github organization, and how many assignments, students, and grades it has.
Step 4: Review and import
Section titled âStep 4: Review and importâFor each selected classroom you can edit its slug (the part of the URL, e.g. cs-101). Slugs are auto-generated from the classroom name and must be unique across Classmoji; if yours is taken, the wizard suggests a variation. Any warnings from the export (skipped files, students with grades but no repo) are listed here too.
Click Import and Classmoji creates everything. A single classroom drops you straight into its admin dashboard; importing several returns you to your classrooms list.
What gets imported
Section titled âWhat gets importedâ- Classrooms under the matching Github organization.
- One module, titled GitHub Classroom import and already published. Every imported assignment lands in it; split it into your own modules afterwards.
- A repository per Github Classroom assignment, pointing at its starter repo as the template, Individual or Group to match, and published since the student repositories already exist on Github.
- An assignment per Github Classroom assignment, submitting through that repository, published, with the Github Classroom deadline as its student deadline, a weight of 0, and push submission mode.
- Students, enrolled as classroom members. Because they already accepted in Github Classroom, theyâre added as active members, not pending invites.
- Student repositories, linked to each student (individual assignments) or to a recovered team (group assignments).
- Teams, for group assignments. Members are enrolled into the team and the shared repository is linked to it.
- Grades and submission info (points awarded/available, commit count, submitted/passing status, original repo URL), stored read-only on each studentâs repository.
Things to know
Section titled âThings to knowâ- Grades are read-only. Imported scores are kept for viewing only. They are not turned into Classmoji grades, so they wonât conflict with grading you do afterwards.
- Assignments start unweighted. Imported assignments have a grading weight of
0. Set weights from Edit on each assignment row; see Grade assignments. - Assignments arrive in push mode. Nothing is opened on Github by the import. Students keep submitting the way they did in Github Classroom: a push to their repository is the submission. If youâd rather have Classmoji open an issue per student, switch the assignment to issue mode in Edit before anyone submits; the mode locks once a submission exists.
- Group assignments are imported with their teams. Each teamâs members are enrolled and the shared repository is linked to the team.
- Re-importing is safe. The import is idempotent. Uploading the same export again updates records in place rather than creating duplicates, and it wonât overwrite edits youâve made in Classmoji.
- Students with grades but no repository (graded in Github Classroom but never accepted the assignment) are skipped, with a warning so you know who was left out.
Organize into modules
Section titled âOrganize into modulesâEverything arrives in one published module, GitHub Classroom import. To give students a guided path, create your own modules and move the assignments into them, adding pages and slides alongside.