Search iThub

Search tools, categories and collections. Type at least two characters.

Explore all tools
↑ ↓ to explore resultsEnter to open · Esc to close

TutorLoom

Self-hosted multi-tenant LMS with course builder, trainer and student portals, batches and a Flutter learner app

Visit website Save

TutorLoom is an Apache-2.0, self-hosted, multi-tenant learning management system by Pace Wisdom Solutions, built with Django and React. It covers course building, batches, grading, progress, certificates and a REST API.

Pricing
Freemium
Deployment
Self-hosted
Platforms
Web
92stars18forks
0views
Updated

What is TutorLoom?

TutorLoom is a self-hosted, multi-tenant learning management system for training institutes, colleges and company training teams. One installation serves several organisations, and the README states that every query is scoped to the organisation so trainers and learners only see their own data. Organisations onboard trainers and learners, group learners into batches, build courses from videos, documents, tasks and quizzes, grade submissions and follow progress. TutorLoom is built and maintained by Pace Wisdom Solutions Pvt. Ltd. and released under the Apache License 2.0.

The repository holds the Community edition, which is free and open source. The project also offers an Enterprise edition that adds modules such as Google and Microsoft sign-in, coding questions with AI-generated test cases, a coding judge in 7 languages, assessments, no-login coding interviews for candidates, a Super Admin console, audit logs, organisation branding, leaderboards, badges and calendars. According to the TutorLoom website, Enterprise is custom priced based on the number of learners and organisations, with quotes sent on request.

The backend is a REST API built with Python 3.13, Django 6 and Django REST Framework 3.16, using PostgreSQL, Redis and Celery for background tasks. The web frontend uses React 19, TypeScript, Vite and Tailwind CSS 4. A learner-only Flutter app for Android and iOS lives in student_mobile_app/ and talks to the same API; its README documents building release packages from source, and the project does not list a store distribution. Uploads go to local disk or Amazon S3, and email is sent through Amazon SES or any Django mail backend such as SMTP.

The latest release is v1.0.3, published November 10, 2026. According to the changelog, it checks that a learner is enrolled in the course before accepting an assignment submission and updates several dependencies. Versions 1.0.1 and 1.0.2 of the same day restricted submissions to active learners of the course organisation and removed a task grade endpoint that let any signed-in user grade task submissions. Version 1.0.0, released October 19, 2026, was the first stable open-source release, with certificates, the mobile app, Docker Compose for local runs and GitHub Actions CI.

The project documentation lists 117 features across both editions and four portals behind one login. Similar open-source learning platforms in this directory include LearnHouse, CourseLit and ClassroomIO.

Inside the application

TutorLoom screenshots

Explore the interface. Open a screenshot to view it at full size.

TutorLoom Organization Admin dashboard with batch, staff, student and course counts and status donut charts
TutorLoom screenshot 1

Institute Admin dashboard with analytics for batches, staff, students and assigned courses. Official README screenshot with demo data.

TutorLoom course builder listing four course levels with Edit and Delete buttons and an Add Chapter control
Course builder

Course builder showing the levels of a course and the Levels and Programs section where chapters are added. Official README screenshot.

TutorLoom Trainer dashboard with student, batch and course counts, pending evaluations and average completion
Trainer dashboard

Trainer dashboard with pending evaluations, completion percentage and shortcuts to content, learner progress and grading. Official README screenshot; the demo user name in the header is masked.

TutorLoom student course roadmap with overall progress bar and a module of learning items and a quiz
Student course roadmap

Student course roadmap with overall progress and the steps of the first module. Official README screenshot; the demo user name in the header is masked.

TutorLoom student progress page with overall completion, per-course breakdown and an earned certificate with View and Download buttons
Progress and certificates

Learning progress with a course-wise breakdown and a completion certificate available for download. Official README screenshot; the demo user name in the header is masked.

TutorLoom Flutter mobile app showing a course roadmap with completed lessons, a quiz and a task
Mobile course roadmap

Learner mobile app course roadmap with completed steps. Official README screenshot.

Source: official TutorLoom project page.

Key capabilities

  • Multi-tenant organisations A single installation hosts many organisations, each with its own trainers, learners, batches and courses. A user who belongs to several organisations picks one from an organisation picker after sign-in.
  • Roles and portals The Community edition has three roles: Institute Admin (org_admin), who runs one organisation; Trainer (teacher), who delivers assigned courses and grades work; and Student, who follows course roadmaps. Enterprise adds a Super Admin console for every organisation and External Candidates who take coding interviews through a private link. One account can hold several roles and switch portals without signing out.
  • Course builder Courses are organised into levels, chapters and steps, where steps are videos, documents, tasks or quizzes. Prerequisites and sequential unlocking control the order in which learners reach content.
  • Batches Learners are grouped into time-boxed batches with their own dates, and trainers are assigned to them. Students are added to a batch according to the batch lifecycle.
  • Bulk onboarding Trainers and students can be invited one by one or uploaded in bulk from CSV or Excel files, with downloadable templates. Invited users receive an email invite and accept it through the invite flow.
  • Grading and feedback Trainers review task submissions in one queue and approve or reject them with a score and written feedback. Learner progress can be exported to Excel.
  • Learner roadmap and progress Students follow a step-by-step roadmap per course on the web or in the mobile app and see overall and per-course completion. Points and levels are included in the Community edition.
  • Completion certificates Certificates are generated automatically when a course is completed and can be exported as PDF from the learner progress page.
  • Dashboards and analytics Admin, trainer and student dashboards show batch, staff and student status, pending evaluations and completion rates. Batch analytics include task and quiz scores. A daily analytics task exists, but the README notes that no beat schedule ships, so it must be scheduled separately.
  • Authentication Users sign in with email and password, with invites and password reset. Tokens are JWTs from djangorestframework-simplejwt with rotating refresh tokens and a blacklist. Google and Microsoft sign-in are Enterprise features.
  • Branded email notifications Email goes through Amazon SES when SES credentials are set, otherwise through the configured Django mail backend, such as SMTP or the console backend that is the default. Sending is handled by a Celery worker.
  • Documented REST API The API is described with OpenAPI 3 through drf-spectacular, with Swagger UI at /api/docs/, ReDoc at /api/redoc/ and the schema at /api/schema/. All endpoints except login, invite and password reset need a bearer token, and lists are paginated at 20 items. The project overview contains the full endpoint reference.
  • Learner mobile app The Flutter app (MVVM with Provider, go_router, Dio and Hive) covers courses, roadmap, lessons, tasks, quizzes, progress, certificates and switching organisations. The coding module was removed from the mobile app in 1.0.0. Release builds are produced with Flutter for Android and iOS against a backend URL passed at build time.
  • Docker Compose stack Running docker compose up --build starts PostgreSQL, Redis, the Django API, a Celery worker and the web app. The web app listens on port 5173 and the API on 8010; PostgreSQL and Redis are not published to the host, and migrations run on every backend start.
  • Manual and production setup Manual setup needs Python 3.13, Poetry 2.x, PostgreSQL, Redis, Node.js and npm. The README states that the backend image starts the Django development server and that production should run gunicorn behind a TLS-terminating proxy, with DEBUG=False, explicit hosts and origins, S3 for uploads, SES for email and a Celery worker. The web frontend is a static Vite build deployed separately.
  • Configuration through environment variables Settings come from environment variables or a .env file, including the database URL, Redis and Celery broker, CORS and CSRF origins, S3 storage and email. Settings can also be loaded from AWS Secrets Manager.
Advertisements

Where TutorLoom fits

Running courses for a training institute

An Institute Admin creates batches, invites trainers and bulk-uploads students from a spreadsheet, then builds a course in levels, chapters and steps and assigns it. Students follow the roadmap on the web or in the mobile app, and the admin dashboard shows batch, staff and student status. The project website describes the same four-step flow from invites to certificates.

Onboarding new hires in a company

The project website describes putting new joiners into a company-wide batch, with steps that unlock in order and deadline reminders 15, 7 and 2 days before the batch end date. Progress can be followed from the whole batch down to one person and exported to Excel.

Grading tasks and quizzes

Trainers open the pending evaluations queue from their dashboard, review task submissions and approve or reject them with a score and feedback. Quizzes are submitted through their own endpoint. Since v1.0.3, assignment submissions are only accepted from learners enrolled in the course.

Serving several organisations from one installation

One deployment hosts several organisations, for example separate campuses or client companies, each with its own data scope. A user with roles in more than one organisation chooses the organisation after sign-in and can switch between admin and trainer portals from the account menu.

Integrating with other systems through the API

External tools use the same REST API as the web and mobile apps. A client signs in through POST /api/auth/login/, sends the access token as a bearer header and works with organisation, batch, course, progress and submission endpoints. The Swagger UI on a running server lets developers try authenticated endpoints after authorising with a token.

Running the stack locally with Docker

Cloning the repository and running Docker Compose brings up the full stack. The quickstart then uses the create_initial_organization management command to create the first organisation, its first batch and the Institute Admin, who also gets Django admin access unless --no-superuser is passed.

Reviews of TutorLoom

No reviews yet

Be the first to share your experience with TutorLoom.

Loading review form…

Alternatives to TutorLoom

Compare TutorLoom with these tools →