MCPcopy Index your code
hub / github.com/classroomio/classroomio

github.com/classroomio/classroomio @v0.3.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.2 ↗ · + Follow
6,926 symbols 16,929 edges 935 files 193 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ClassroomIO is a no-code tool that allows you build and scale your online bootcamp with ease.

ClassroomIO.com

The Open Source Learning Management System for Companies



<a href="https://classroomio.com">Website</a>  |  <a href="https://dub.sh/ciodiscord">Join Discord community</a>

Codacy Badge

✨ About ClassroomIO.com

ClassroomIO Courses page

Streamline training for everyone with ClassroomIO.com. Our all-in-one platform empowers bootcamps, educators, and businesses to manage training programs easily. With our platform, anyone can run multiple classes and cohorts all from one UI. The application is mobile-first, which means that students can access your lesson materials from any device.

Mission: Provide Students with the Best Learning Experience

At ClassroomIO, our mission is to provide students with the best possible learning experience. We believe in empowering educators with the tools they need to deliver high-quality education that is accessible, engaging, and effective.

Key Features

  1. 📚 Advanced Course Management: You can create unlimited courses, create lessons, invite students, add assignments, grade their assignments, and even generate certificates.
  2. 👨‍👩‍👦 Multi-Teacher Management: You can invite other teachers into your organization and assign them individual courses.
  3. 🤖 AI Integration: We've got OpenAI integration for quick course creation where you can generate course content, lesson outlines, and even generate assignments right from your lesson notes.
  4. 💬 Forum: Students can ask questions in your dedicated community and get answers from either you or other students.
  5. 💻 Dedicated Student Dashboard: Once you create an account, you get a dedicated dashboard where your students can access all their courses, assignments, and more.
  6. 🔒 Fully open source: You can self-host the entire stack on your servers.

Roadmap Features

  1. Forms: Instead of using Google Forms to collect vital information from your students, you will be able to create forms directly within the dashboard.
  2. Course Templates: You can clone a full course or share templates with other people.
  3. Analytics: You can track data about your students across multiple courses.
  4. Run Courses on Messengers: Students can just join a channel on slack/discord/telegram and a bot automatically sends daily lesson content to your students without you doing anything.

Please reach out to me on twitter if you have any feature request.

Built With

Get a Demo

You can book a quick 15 min demo to see if ClassroomIO is a good fit for you

Book a Call with ClassroomIO.com

Getting Started

To get a local copy up and running, please follow these simple steps.

Prerequisites

Here is what you need to be able to run ClassroomIO.com

Project Structure

This repo is a monorepo that consists of these primary apps:

  1. website: The landing page of ClassroomIO hosted here
  2. api: The api service that handles PDF, video processing, Emailing and Notifications.
  3. dashboard: The web application that runs the learning management system hosted here.
  4. docs: Official documentation of ClassroomIO hosted here

The repository also contains shared packages under packages/ (for example packages/db, packages/utils, and packages/ui).

Development

Local Setup

  1. Fork the repo, then clone it:

bash git clone https://github.com/classroomio/classroomio.git

  1. Go to project folder:

bash cd classroomio

  1. Set up Node (using nvm):

bash nvm use

You first might need to install the specific version and then use it:

bash nvm install && nvm use

You can install nvm from here.

  1. Install dependencies:

bash pnpm i

  1. Set up your .env files:

  2. Go to apps/dashboard and apps/api.

  3. Duplicate the .env.example file and rename it to .env
  4. Populate them with required values (at minimum):
    • apps/api/.env: DATABASE_URL, REDIS_URL, AUTH_BEARER_TOKEN, BETTER_AUTH_SECRET
    • apps/dashboard/.env: PUBLIC_SERVER_URL, PRIVATE_SERVER_KEY, PUBLIC_IS_SELFHOSTED
  5. Optional for self-hosted Enterprise-only features (SSO, token-auth, no-tracking): set LICENSE_KEY in apps/api/.env

  6. Start local infrastructure for API (Postgres + Redis) and seed the DB:

bash docker compose -f docker/docker-compose.yaml up -d postgres redis db-init

  • Connect with DATABASE_URL=postgresql://postgres:postgres@localhost:5432/classroomio
  • Connect with REDIS_URL=redis://localhost:6379
  • The db-init container runs migrations/seed once Postgres is healthy.

  • (Optional) Start MinIO locally for object storage (media/documents):

bash docker compose -f docker/docker-compose.yaml --profile minio up -d minio minio-init

  • Console: http://localhost:9001 (user/pass default minioadmin / minioadmin)
  • S3 endpoint: http://localhost:9000
  • Buckets created by minio-init: videos, documents, media
  • Add to apps/api/.env when using MinIO locally:

    • OBJECT_STORAGE_ENDPOINT=http://localhost:9000
    • OBJECT_STORAGE_PUBLIC_ENDPOINT=http://localhost:9000
    • OBJECT_STORAGE_ACCESS_KEY_ID=minioadmin
    • OBJECT_STORAGE_SECRET_ACCESS_KEY=minioadmin
    • OBJECT_STORAGE_FORCE_PATH_STYLE=true
    • OBJECT_STORAGE_MEDIA_PUBLIC_BASE_URL=http://localhost:9000/media
  • Run the local app services in separate terminals:

bash pnpm api:dev

bash pnpm dashboard:dev

  1. Default local URLs:

  2. api: http://localhost:3002

  3. dashboard: http://localhost:5173

  4. Optional: run other apps:

  5. website: pnpm website:dev

  6. docs: pnpm dev --filter=@cio/docs

  7. Login into dashboard:

    To learn more about how to login with a dummy account, go here.

Docker Compose (Full Stack)

cp .env.example .env   # copy env template, edit for your domain
./run-docker-full-stack.sh

The script reads root .env via docker compose --env-file .env and auto-generates secure values for AUTH_BEARER_TOKEN and PRIVATE_SERVER_KEY when missing.

See .env.example for the full list of environment variables with required/optional grouping, and docker/docs/SELF_HOST.md for the complete Docker self-hosting guide.

Extension points exported contracts — how you extend this code

QuestionStoryFixture (Interface)
(no doc)
packages/storybook/src/molecules/exercise-question/question-fixtures.ts
EmailResponse (Interface)
(no doc)
packages/email/src/utils/types.ts
CopyFolderParams (Interface)
(no doc)
packages/course-app/utils/types.ts
RendererOptions (Interface)
(no doc)
packages/ui/src/custom/editor/svelte-renderer.ts
ExerciseQuestionOption (Interface)
(no doc)
packages/question-types/src/exercise-types.ts
SeedGroupmember (Interface)
(no doc)
packages/db/src/utils/seed/groupmember.ts
TopCourse (Interface)
(no doc)
apps/api/src/types/dash.ts
Tool (Interface)
(no doc)
apps/website/src/lib/utils/constants/tools.ts

Core symbols most depended-on inside this repo

handleError
called by 158
apps/api/src/utils/errors.ts
get
called by 107
apps/dashboard/src/lib/features/course/api/lesson.svelte.ts
mapZodErrorsToTranslations
called by 58
apps/dashboard/src/lib/utils/validation/validation.ts
get
called by 56
apps/dashboard/src/lib/features/org/api/quiz.svelte.ts
get
called by 48
packages/email/src/core/registry.ts
execute
called by 42
apps/dashboard/src/lib/utils/services/api/base.svelte.ts
isActive
called by 32
apps/dashboard/src/lib/features/org/store/sso.svelte.ts
has
called by 27
packages/email/src/core/registry.ts

Shape

Method 3,615
Function 1,629
Class 1,476
Interface 203
Enum 3

Languages

TypeScript100%

Modules by API surface

apps/dashboard/static/js/pdf.js/pdf.worker.min.js3,500 symbols
apps/dashboard/static/js/pdf.js/pdf.min.js1,372 symbols
packages/ui/src/custom/image-cropper/image-cropper.svelte.ts38 symbols
packages/db/src/scripts/backfill-lesson-assets.ts37 symbols
packages/db/src/queries/course/course.ts30 symbols
apps/dashboard/src/lib/features/course/api/lesson.svelte.ts29 symbols
packages/db/src/queries/organization/organization.ts27 symbols
packages/db/src/queries/exercise/exercise.ts27 symbols
apps/api/src/services/course/invite.ts27 symbols
packages/db/src/queries/tag/tag.ts23 symbols
packages/ui/src/base/password/password-util.svelte.ts21 symbols
packages/ui/src/custom/file-drop-zone/file-drop-zone-util.svelte.ts20 symbols

For agents

$ claude mcp add classroomio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page