docs: add content to stubbed pages

This commit is contained in:
Rotimi Best
2026-06-10 09:32:45 +01:00
parent dcb5cfbc7b
commit 4e24e3cb63
7 changed files with 389 additions and 18 deletions
+46 -3
View File
@@ -1,10 +1,53 @@
---
title: Audience
description: Information about ClassroomIO's target audience.
description: Manage all students in your organization — view status, assign to courses, and handle invites from one place.
---
import { Callout } from 'fumadocs-ui/components/callout';
<Callout type="warn" title="Work in Progress">
This page is a work in progress. Help us expand it by contributing!
**Audience** is your org-wide student directory. It shows every person who belongs to your organization — whether they signed up themselves, accepted a course invite, or were added directly. From here you can search, sort, bulk-assign to courses, and manage pending invites.
## What Audience shows
Audience is separate from course-level **People**. Course People shows who is enrolled in a specific course. Audience shows everyone in your organization regardless of which courses they have joined.
| Column | What it means |
| --- | --- |
| **Name** | Student's display name |
| **Email** | Account email address |
| **Status** | Current membership state (see below) |
| **Date Joined** | When the student joined the organization |
### Status values
| Status | Meaning |
| --- | --- |
| **Active** | Student has a verified account and is a member of your org |
| **Pending** | Invite was sent but the student has not yet accepted it |
| **Expired** | The invite link passed its expiry before the student accepted |
| **Revoked** | The invite was manually revoked by an admin |
## Assign students to courses
Select one or more students using the checkboxes, then click **Assign to Courses**. You can pick multiple courses at once. This enrolls the selected students immediately — no action needed from them.
## Manage pending invites
For students with **Pending** status, you can:
- **Resend invite** — sends a fresh invite email to that address
- **Revoke invite** — cancels the invite so the link no longer works
## Import and export
Use **Import Users** to bulk-add students from a CSV file. Use **Export** to download the current audience list.
<Callout type="info" title="Plan limits">
Your plan sets a maximum audience size. When you reach the limit, a banner appears and you cannot invite more students until you upgrade or remove existing members.
</Callout>
## Related guides
- [How Course Enrollment Works](/docs/how-to-guides/course-enrollment) — how students join courses
- [How to Invite Students](/docs/how-to-guides/invite-students) — send course-specific invites
- [Roles and Permissions](/docs/how-to-guides/roles-and-permissions) — difference between students and team members
+25 -3
View File
@@ -1,10 +1,32 @@
---
title: Community
description: Join the ClassroomIO community.
description: An org-wide Q&A forum where students and instructors can ask questions, share answers, and discuss topics across all courses.
---
import { Callout } from 'fumadocs-ui/components/callout';
<Callout type="warn" title="Work in Progress">
This page is a work in progress. Help us expand it by contributing!
**Community** is an org-wide Q&A forum. Anyone in your organization can post a question, answer others, or leave comments. Questions can be tied to a specific course or posted for the whole organization to see.
## How it works
- Anyone in the org (students, tutors, and admins) can ask a question and participate in discussions.
- When asking, you can optionally link the question to a course so students in that course can find it easily.
- Other members can answer and comment on each thread.
- You can search for questions using **Find Question**.
## Asking a question
From the **Community** section in the sidebar, click **Ask Community**. Fill in a title and the question body, optionally select a course, and click **Publish**. The question is immediately visible to your org.
## Moderating questions
Admins can delete any question or comment. Authors can edit or delete their own posts.
<Callout type="info" title="Community vs course Newsfeed">
Community is org-wide and searchable across all courses. The **Newsfeed** tab inside each course is a course-scoped activity feed for announcements and updates — it is not a Q&A forum.
</Callout>
## Related guides
- [Course](/docs/course) — course-level features including Newsfeed
- [Roles and Permissions](/docs/how-to-guides/roles-and-permissions) — who can post and moderate
@@ -1,10 +1,64 @@
---
title: How to Create Certificates
description: Learn how to create certificates for your course.
description: Configure certificate rules for a course, set completion requirements, and let students download their certificates.
---
import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';
<Callout type="warn" title="Work in Progress">
This page is a work in progress. Help us expand it by contributing!
Certificates recognize students for completing a course. You configure the rules on a per-course basis — what score is required, whether a final exercise must be passed, and when certificates expire. Students can then download their certificate from the **Certificates** tab in the LMS.
## Configure certificate rules
Open your course in the admin dashboard and go to the **Certificates** tab.
<Steps>
<Step>
### Enable downloadable certificates
Turn on **Allow students to download their certificate**. When this is off, no certificate is generated even if students meet the requirements.
</Step>
<Step>
### Set a completion threshold
Enter a percentage in **Minimum score to receive certificate**. A student must reach this overall course score to qualify. Defaults to 100%.
</Step>
<Step>
### Require a final exercise (optional)
Select an exercise from **Final exercise**. When set, the student must pass that specific exercise in addition to meeting the overall threshold. Set **Minimum exercise score** to the minimum passing score for that exercise.
</Step>
<Step>
### Set a deadline (optional)
Enter a date and time in **Certificate deadline**. Students who complete the course after this date do not receive a certificate.
</Step>
<Step>
### Add a custom email message (optional)
Enter text in the email message field. This message is included in the notification email sent to students when they earn their certificate.
</Step>
</Steps>
## What students see
Once a student meets all the configured requirements, their certificate appears in the **Certificates** tab when they open the course in the LMS. They can view and download it from there.
<Callout type="info" title="Issuing certificates manually">
Admins can also issue a certificate to a specific student manually using the **Issue Certificate** button at the top of the Certificates tab, regardless of whether the student met the automatic requirements.
</Callout>
<Callout type="warn" title="Paid plan required">
Certificate features require a paid plan. The controls are visible on free plans but disabled.
</Callout>
## Related guides
- [Creating Your First Course](/docs/how-to-guides/create-first-course) — course setup overview
- [How to Create an Exercise](/docs/how-to-guides/create-exercise) — create the exercise you reference as a final exercise
- [How to Grade an Exercise](/docs/how-to-guides/grade-exercise) — grade submissions before certificates are issued
- [Student Dashboard](/docs/student-dashboard) — where students access their certificates
@@ -1,11 +1,71 @@
---
title: How to Grade an Exercise
description: Learn how to grade exercises submitted by students.
description: Review student submissions, move them through the grading workflow, score answers, and leave feedback.
---
import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';
When students submit exercises, their work appears in the **Submissions** tab of the course dashboard. Exercises move through a three-stage workflow: **Submitted → In Progress → Graded**.
<Callout type="warn" title="Work in Progress">
This page is a work in progress. Help us expand it by contributing!
## Grading workflow
| Stage | Meaning |
| --- | --- |
| **Submitted** | Student has submitted; not yet reviewed |
| **In Progress** | You have opened the submission for review |
| **Graded** | Review is complete and the grade is recorded |
Submissions are displayed as cards on a board. Drag a card between columns or open it to change its status manually.
<Callout type="info" title="Auto-graded exercises">
Exercises that use only objective question types (multiple choice, etc.) are auto-graded when submitted. They move directly to **Graded** without manual review. Exercises with open-ended or video questions require manual review and are flagged **Manual grading required**.
</Callout>
## Grade a submission
<Steps>
<Step>
### Open the Submissions tab
From the course dashboard, click **Submissions** in the top navigation.
</Step>
<Step>
### Open a submission
Click any card in the **Submitted** column. The grading modal opens showing the student's answers, a score breakdown, and a comment field.
</Step>
<Step>
### Review and score
Each question shows the student's answer alongside the expected answer or rubric. Scores are calculated automatically where possible. Adjust individual question scores if needed.
</Step>
<Step>
### Leave a comment (optional)
Type feedback in **Add comment**. The student can see this after grading is complete.
</Step>
<Step>
### Submit the grade
Click **Submit Grades**. The card moves to **Graded** and the student's score is recorded.
</Step>
</Steps>
## Grade with AI
Click **Grade with AI** inside the grading modal to get an AI-suggested score and rationale for open-ended answers. Review the suggestion and click **Accept** to apply it or **Reject** to discard it and grade manually.
<Callout type="warn" title="Review AI grades before submitting">
AI grading is a suggestion. Always review the reasoning before accepting, especially for nuanced or context-dependent answers.
</Callout>
## Related guides
- [How to Create an Exercise](/docs/how-to-guides/create-exercise) — create and configure exercises
- [How to Create Certificates](/docs/how-to-guides/certificates) — certificates that depend on exercise scores
- [Course](/docs/course) — course overview including the Submissions tab
@@ -1,11 +1,75 @@
---
title: Inviting a Team Member
description: Learn how to invite team members to your organization.
description: Add admins and tutors to your organization by email invite or a reusable invite link.
---
import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';
Team members are people who help you run your organization — **Admins** have full access, **Tutors** can manage the courses they are assigned to. Both are different from students, who use the LMS and cannot access the admin dashboard.
<Callout type="warn" title="Work in Progress">
This page is a work in progress. Help us expand it by contributing!
To invite a team member, go to **Settings → Organization**, then click **Manage Team**.
## Invite by email
<Steps>
<Step>
### Enter email addresses
Type one or more email addresses into the invite field. Separate multiple addresses with commas.
</Step>
<Step>
### Select a role
Choose **Admin** or **Tutor** from the role dropdown.
</Step>
<Step>
### Send the invite
Click **Send invite**. Each recipient receives an email with a link to join your organization at the selected role.
</Step>
</Steps>
Invited members appear in the team list with an **Invite Sent** badge until they accept. You can remove a pending or accepted member at any time using the **Remove** button next to their name.
## Invite by link
A link invite lets you share one URL that anyone can use to join your org at a specific role — useful for onboarding multiple people at once without entering individual email addresses.
<Steps>
<Step>
### Select a role for the link
Choose **Admin** or **Tutor**.
</Step>
<Step>
### Generate the link
Click **Generate**. A shareable URL appears.
</Step>
<Step>
### Copy and share
Click **Copy** and share the link however you prefer. Anyone who opens it and signs in (or signs up) joins your org at the selected role.
</Step>
<Step>
### Disable the link when done
Toggle the link off to stop accepting new members through it. You can re-enable it later or generate a new link.
</Step>
</Steps>
<Callout type="warn" title="Paid plan required">
Email invites and link invites for team members require a paid plan.
</Callout>
## Related guides
- [Roles and Permissions](/docs/how-to-guides/roles-and-permissions) — what admins and tutors can do
- [How to Invite Students](/docs/how-to-guides/invite-students) — invite students to a specific course (separate from team invites)
- [Organization](/docs/organization) — org settings overview
@@ -1,11 +1,33 @@
---
title: How to Take Attendance
description: Learn how to take attendance for your classes.
description: Record lesson attendance for each student in a course using the Attendance tab.
---
import { Callout } from 'fumadocs-ui/components/callout';
The **Attendance** tab in a course lets you track which students attended each lesson. Only students who are enrolled in the course appear in the attendance grid — enroll them first via **People** if they are missing. It displays a grid with students as rows and lessons as columns. A checked box means the student was present; unchecked means absent.
<Callout type="warn" title="Work in Progress">
This page is a work in progress. Help us expand it by contributing!
## Mark attendance
From the course dashboard, open the **Attendance** tab.
- Check the box at the intersection of a student and a lesson to mark them **Present**.
- Uncheck the box to mark them **Absent**.
Changes save immediately — there is no separate save button.
Use the search bar to filter students by name if the course has a large group.
<Callout type="info" title="Students see read-only attendance">
Students can view their own attendance record in the Attendance tab when they open the course in the LMS, but they cannot edit it.
</Callout>
## Pagination
The table shows 10 students per page. Use the page controls at the bottom to move between pages.
## Related guides
- [Creating Your First Course](/docs/how-to-guides/create-first-course) — adding lessons to a course
- [How Course Enrollment Works](/docs/how-to-guides/course-enrollment) — how students join a course
- [Course](/docs/course) — course overview and available tabs
+106
View File
@@ -0,0 +1,106 @@
---
name: write-docs
description: Write accurate, product-grounded documentation pages for ClassroomIO. Use when adding content to stub pages, expanding thin docs, or creating new guide pages under apps/docs/content/docs/.
---
You are writing documentation for ClassroomIO — an LMS platform that lets organizations create and run training academies. Documentation lives in `apps/docs/content/docs/` and is rendered by Fumadocs.
## Research before writing
Every page must reflect how the feature actually works in the product. Before writing, read the relevant source:
- **UI components / pages**: `apps/dashboard/src/lib/features/{domain}/pages/`
- **Settings pages**: `apps/dashboard/src/lib/features/settings/pages/`
- **API routes**: `apps/api/src/routes/{domain}/` and `apps/api/src/services/{domain}/`
- **DB schema**: `packages/db/src/schema.ts` — column names and types reveal the data model
- **Translations**: `apps/dashboard/src/lib/utils/translations/en.json` — use the exact UI label text from here, not guesses
Never describe behavior you haven't verified in the source code or UI.
## Terminology (use these terms everywhere)
| Term | Meaning |
|---|---|
| **academy** | The public-facing org site (`<siteName>.myclassroomio.com` or custom domain) |
| **LMS** | The authenticated student learning area (Home, My Learning, Explore, Programs) |
| **organization** | The admin workspace holding courses, people, settings, branding |
| **student** | A user enrolled in courses — never "learner" |
| **Open Academy** | The button/link that opens the public academy |
| **Academy subdomain** | The org's site name / slug field in settings |
| **academy landing page** | The public homepage for the org (not "org landing page") |
| **course landing page** | The per-course public page |
## Settings navigation paths
These are the exact sidebar paths in the admin dashboard:
- `Settings → Profile` — personal profile settings
- `Settings → Organization` — org name, logo, theme, and links to Custom Domain and Teams sub-pages
- `Settings → Organization → Custom Domain` — navigated to via "Edit domain" button inside Organization
- `Settings → Organization → Teams` — navigated to via "Manage Team" button inside Organization
- `Settings → Landing Page` — academy landing page editor
- `Settings → Authentication` — signup rules, SSO, token auth; sub-tabs: General, SSO, Token Auth
- `Settings → Authentication → General` — signup toggle, Internal Enrollment Only
- `Settings → Billing` — plan and billing
- `Settings → AI Credits` — token usage
- `Settings → AI Tutor` — per-org AI tutor toggle
## MDX format conventions
All pages use Fumadocs components. Available imports:
```mdx
import { Callout } from 'fumadocs-ui/components/callout';
import { Step, Steps } from 'fumadocs-ui/components/steps';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
```
**Callout types**: `info`, `warn`, `error`
**Frontmatter** (required on every page):
```mdx
---
title: Page Title
description: One sentence — shown in search results and link previews.
---
```
## Writing style
- Address the reader as "you" (the admin/instructor).
- Short, direct sentences. No filler. No "In this guide, we will…" preambles.
- Use **bold** for UI element names exactly as they appear in the product (match translations).
- Use `code` for paths, values, slugs, and field names.
- Tables for comparisons and reference lists.
- Steps component for sequential procedures (not numbered markdown lists).
- End every substantive page with a `## Related guides` section linking to connected pages.
- Remove the "Work in Progress" callout when replacing it with real content.
## Page structure patterns
**Reference page** (what a feature is):
1. One-paragraph description of the feature
2. Key concepts or table
3. How it fits with related features
4. Related guides
**How-to guide** (how to do something):
1. One-sentence context (what and why)
2. Prerequisites if any
3. Steps component with the procedure
4. Common scenarios or edge cases (Callout blocks)
5. Related guides
**Overview/index page** (org, course, programs):
1. Short description
2. Table: area | where | guide
3. Related guides
## Things to avoid
- Don't describe UI that doesn't exist yet
- Don't say "workspace" — use "organization"
- Don't use "learner" — use "student"
- Don't say "org site" — say "your academy"
- Don't hardcode customer site names — use `<siteName>.myclassroomio.com` as the placeholder
- Don't add the "Work in Progress" callout to pages you've completed