TutorLoom
기업·대학·교육기관을 위한 학습 플랫폼, 무료 오픈소스이며 엔터프라이즈 버전 제공
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Sapiqo LMS — a self-hosted PHP learning management system. © 2026 Miguel Guhlin, CC BY-SA 4.0.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A focused, self-hostable learning management system. Pure PHP + PDO (SQLite by default, MySQL/MariaDB for production) — no framework, no Composer, no npm. Drop in courses, author in the browser, enroll learners, run assessments and forums, and issue badges and CPE certificates.
Project website · Download · User manual · Code audit · Planned roadmap
Version 1.13.1. Original project material: © 2026 Miguel Guhlin · CC BY-SA 4.0.
GitHub Pages hosts the project introduction. To run the LMS, install it on a PHP server or use Docker; Pages cannot execute PHP or store learner accounts.
The publication includes a source audit and regression tests for authentication,
course access, progress, quizzes, archives, and backups. Read the
audit findings and limitations and security policy.
Use HTTPS, your own administrator credentials, MFA, and a canonical public_url.
See 1.13 verification, operations,
and the compatibility matrix before enabling integrations.
sapiqo/ The application (replaceable on upgrade). Code, admin,
course creator, CLI tools in bin/.
sapiqo-data/ Persistent, writable data — the SQLite DB, uploads, badges,
branding, LTI keys. Starts empty; created on first run.
content/ Your courses, one folder per course (each with a course.json).
Starts blank except content/assets/ (the shared reader).
installer/ Turnkey install for Linux, Windows, and Docker.
Linux/macOS:
bash installer/install.sh # checks PHP, sets up data + admin account
bash installer/serve.sh # http://localhost:8000
Windows (PowerShell):
.\installer\install.ps1
.\installer\serve.bat
Docker (bundles every extension):
export ADMIN_EMAIL='[email protected]'
read -rsp 'Administrator password: ' ADMIN_PASSWORD; echo
export ADMIN_PASSWORD
docker compose -f installer/docker-compose.yml up -d --build
# Open http://localhost:8080
Run the pre-flight check any time:
php installer/preflight.php
Sapiqo ships with an empty database and no default login — the admin account is created the first time you install, from credentials you provide. There is no built-in username/password to guess.
Installer (install.sh / install.ps1): you pass the admin email and
password, e.g.
bash installer/install.sh --email [email protected] --password 'ChangeMe123!' \
--first Admin --last User
Run it with no flags for an interactive prompt. If you use --yes without a
--password, a strong random password is generated and printed once — copy it.
Docker: requires ADMIN_EMAIL and ADMIN_PASSWORD environment variables.
No default administrator password is shipped. Port 8080 binds to localhost;
use a configured HTTPS reverse proxy for public access.
Manual / scripted: create (or reset) an admin any time with
php sapiqo/bin/setup.php --email [email protected] --password 'ChangeMe123!' \
--first Admin --last User
Re-running is safe — an existing admin email is updated, not duplicated.
Whatever method you use, change the password after first sign-in and run
over HTTPS in production. See installer/README.md for the full install matrix
and sapiqo/README.md for the security overview.
Author one Markdown file and build it into a course folder:
python3 sapiqo/creator/build_course.py my-course.md
# -> writes content/my-course/ (course.json + reader shell + media)
Sapiqo auto-discovers any subfolder of content/ that has a course.json. You can also import Common Cartridge (.imscc), SCORM, and course packages from Admin -> Imports.
Everything visual is white-label. Sign in as the admin and open Admin -> Settings to set the organization name, logo, colors, theme, default language, and certificate signatory / CPE provider line.
Sapiqo LMS © 2026 Miguel Guhlin, licensed under
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
You may share and adapt it, including commercially, as long as you give
attribution to "Sapiqo LMS by Miguel Guhlin" and license your derivatives under
the same terms. See LICENSE for details.
Bundled third-party fonts retain their own licenses and notices; see THIRD_PARTY_NOTICES.md.
python3 tests/run.py
The suite uses temporary data and a localhost PHP server. See
CONTRIBUTING.md for requirements and verification scope.
GitHub Actions runs checks and deploys only site/ to Pages after they pass.