{"id":23740264,"url":"https://github.com/themeum/tutor","last_synced_at":"2026-02-03T07:06:17.713Z","repository":{"id":37432214,"uuid":"223336609","full_name":"themeum/tutor","owner":"themeum","description":"A complete WordPress LMS plugin to create any e-learning website easily.","archived":false,"fork":false,"pushed_at":"2025-03-25T07:10:25.000Z","size":70117,"stargazers_count":100,"open_issues_count":68,"forks_count":71,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-25T08:24:08.691Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://tutorlms.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/themeum.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-22T06:15:51.000Z","updated_at":"2025-03-25T04:30:27.000Z","dependencies_parsed_at":"2023-09-23T13:28:42.618Z","dependency_job_id":"7319cd0c-315e-4a45-ae8e-4c0505f93ac2","html_url":"https://github.com/themeum/tutor","commit_stats":null,"previous_names":[],"tags_count":144,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themeum%2Ftutor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themeum%2Ftutor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themeum%2Ftutor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themeum%2Ftutor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/themeum","download_url":"https://codeload.github.com/themeum/tutor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299830,"owners_count":20916190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-31T09:47:50.498Z","updated_at":"2026-02-03T07:06:17.706Z","avatar_url":"https://github.com/themeum.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\".github/tutor-github.png\" alt=\"TutorLMS\" width=\"100%\"/\u003e\n\n## What is Tutor LMS?\n\nTutor LMS is a complete, feature-packed, and robust WordPress LMS plugin to easily create \u0026 sell courses online. All the features of this learning management system hit all the checkpoints for a full-fledged online course marketplace.\n\n## \u003ca id=\"wpcs\"\u003e\u003c/a\u003eWPCS configuration\n\n\u003cb\u003eStep 1:\u003c/b\u003e Please install these two composer package.\n\n```\n1. composer global require squizlabs/php_codesniffer\n2. composer global require wp-coding-standards/wpcs\n```\n\n\u003cb\u003eStep 2:\u003c/b\u003e Set WordPress as default coding standard. `(change your_username)`\n\n```\nphpcs --config-set installed_paths /Users/your_username/.composer/vendor/wp-coding-standards/wpcs\nphpcs --config-set default_standard WordPress\n```\n\n\u003cb\u003eProblem Fix:\u003c/b\u003e\n\nIf phpcs and phpcbf command not found as command, set it to your path variable.\n\n`export PATH=\"/Users/your_username/.composer/vendor/bin:$PATH\"`\n\n## Development Setup\n\nFollow the steps\n\n1. [Configure WPCS](#wpcs) to write code that complies with the WordPress Coding Standard.\n2. Clone the repository `git clone https://github.com/themeum/tutor.git`.\n3. Checkout to `dev` brunch `git checkout dev`\n4. Make your own brunch `git checkout -b your_brunch_name`\n5. Go to vscode extension tab and install recommended extension.\n6. Run `composer install` for install PHP dependency.\n7. Run `npm install` for install js dependency.\n8. Run `npm run watch`\n9. Now open any SCSS file from assets directory and hit save.\n\n## Contribution Guide\n\n1. Make sure your code complies with the WordPress Coding Standard (WPCS) before open a PR.\n2. Open a pull request (PR) to the `dev` branch. PRs to other branches will be closed without any discussion.\n\n## Unit Testing\n\nTo run PHP unit testing in the development environment follow the below steps:\n\nGo to the terminal then hit commands:\n\n1. `composer install`\n2. `bash bin/install-wp-tests.sh db_name user_name password host latest` ( [checkout details](https://make.wordpress.org/cli/handbook/misc/plugin-unit-tests/) )\n3. `vendor/bin/phpunit --info`\n\nIf everything goes well then you should see the PHP unit info\n\n## Running Cypress Tests\n\nFollow these steps to run Cypress tests for the Tutor plugin:\n\n### Prerequisites\n\n1. Ensure Node.js is installed (v14+ recommended).\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n### Running Tests\n\n#### Open Cypress Test Runner\n\nTo open the Cypress interactive test runner:\n\n```bash\nnpm run cy:open\n```\n\nThis launches the Cypress UI where you can select and run tests interactively.\n\n#### Run All Tests Headlessly\n\nTo run all tests in headless mode:\n\n```bash\nnpm run test\n```\n\n#### Run Specific Test Files\n\nTo run specific test files:\n\n```bash\nnpx cypress run --spec \"cypress/e2e/backend/**/*.cy.ts\"\n```\n\n#### Run Tests with a Specific Browser\n\n```bash\nnpx cypress run --browser chrome\n```\n\n### Test Structure\n\n- **E2E Tests**: Located in `cypress/e2e/` directory.\n- **Backend Tests**: Located in `cypress/e2e/backend/`.\n- **Frontend Tests**: Located in `cypress/e2e/frontend/`.\n- **Course Builder Tests**: Located in `cypress/e2e/course-builder/`.\n- **Fixtures**: Test data in `cypress/fixtures/`.\n\n### Environment Configuration\n\n1. Create a `.env` file in the project root based on the `.env.example` template:\n\n   ```\n   # WordPress site URL\n   CYPRESS_base_url=\u003cYOUR WORDPRESS SITE\u003e\n\n   # Admin credentials\n   CYPRESS_admin_username=\u003cADMIN USERNAME\u003e\n   CYPRESS_admin_password=\u003cADMIN PASSWORD\u003e\n\n   # Zoom credentials\n   CYPRESS_instructor_zoom_account_id=\u003cYOUR ZOOM ACCOUNT ID\u003e\n   CYPRESS_instructor_zoom_client_id=\u003cYOUR ZOOM CLIENT ID\u003e\n   CYPRESS_instructor_zoom_client_secret=\u003cYOUR ZOOM CLIENT SECRET\u003e\n   ```\n\n2. Ensure your WordPress test site is running with the Tutor plugin installed and activated.\n\n### View Test Results\n\n- **Test Reports**: Generated in the `cypress/reports` directory.\n- **Screenshots**: Automatically saved to `cypress/screenshots` when tests fail.\n- **Videos**: Saved in `cypress/videos` when running headlessly.\n\n### Troubleshooting\n\n- If tests fail with authentication errors, check your credentials in the `.env` file.\n- Clear `cypress/screenshots` and `cypress/videos` directories if they become too large.\n- If tests hang, try running them separately or increasing the timeout: `npx cypress run --config defaultCommandTimeout=10000`.\n\n## System Requirements\n\n1. PHP – 7.0 (or later)\n2. Database – MariaDB – 10.1 or later / MySQL – 5.7 or later\n3. WordPress 5.5 or higher\n4. Browser – Chrome, Firefox, Safari\n5. Internet Explorer is not supported\n6. Server Modules – mod_rewrite, cURL, fsockopen\n\n7. Download the free Tutor LMS 2.0 Beta file\n   To get the free version of the Tutor LMS 2.0 :\n\n8. Navigate to the Tutor LMS GitHub.\n9. Download the Tutor 2.0 install zip file\n10. Create a backup version of your entire site before you plan to install it. Ideal usage, we reiterate, would be to install it on a test site to see and try out the new features without breaking anything.\n11. Download the [Pro Tutor LMS 2.0 Beta](https://www.themeum.com/account/downloads/) file\n12. Follow along to download the pro version of Tutor LMS 2.0.\n\nNote: The pro version is only available to the pro users of Tutor LMS and can only be availed by them. Check the previous section to download the free release if you do not own Tutor Pro.\n\nLog in to your Themeum account and navigate to the downloads page.\nClick on download under the release file and the zip file should start downloading for you.\nInstalling the Tutor LMS Beta Plugins (Both Free \u0026 Pro)\nThe installation process for both the free and pro versions is the same since we are installing a zip file. Once again we urge you to create a back of your site or use a test environment before going ahead with the installation.\n\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" width=\"33.3333%\"\u003e\n                \u003cimg src=\".github/addons/content-drip.png\" alt=\"Content Drip\" height=\"100px\" /\u003e\n                \u003ch4\u003eContent Drip\u003c/h4\u003e\n                Unlock lessons by schedule or when the student meets specific condition.\n            \u003c/td\u003e\n            \u003ctd align=\"center\" width=\"33.3333%\"\u003e\n                \u003cimg src=\".github/addons/enrollments.png\" alt=\"Enrollments\" height=\"100px\" /\u003e\n                \u003ch4\u003eEnrollments\u003c/h4\u003e\n                Take advanced control on enrollments. Enroll the student manually.\n            \u003c/td\u003e\n            \u003ctd align=\"center\" width=\"33.3333%\"\u003e\n                \u003cimg src=\".github/addons/gradebook.png\" alt=\"Gradebook\" height=\"100px\" /\u003e\n                \u003ch4\u003eGradebook\u003c/h4\u003e\n                Shows student progress from assignment and quiz\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" width=\"33.3333%\"\u003e\n                \u003cimg src=\".github/addons/calendar.png\" alt=\"Calendar\" height=\"100px\" /\u003e\n                \u003ch4\u003eCalendar\u003c/h4\u003e\n                Allow students to see everything in a calendar view.\n            \u003c/td\u003e\n            \u003ctd align=\"center\" width=\"33.3333%\"\u003e\n                \u003cimg src=\".github/addons/restrict-content-pro.png\" alt=\"Enrollments\" height=\"100px\" /\u003e\n                \u003ch4\u003eRestrict Content Pro\u003c/h4\u003e\n                Unlock Course depending on Restrict Content Permission.\n            \u003c/td\u003e\n            \u003ctd align=\"center\" width=\"33.3333%\"\u003e\n                \u003cimg src=\".github/addons/quiz-import-export.png\" alt=\"Quiz Export/Import\" height=\"100px\" /\u003e\n                \u003ch4\u003eQuiz Export/Import\u003c/h4\u003e\n                Save time by exporting/importing quiz data with easy options.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/pmpro.png\" alt=\"Paid Memberships Pro\" height=\"100px\" /\u003e\n                \u003ch4\u003ePaid Memberships Pro\u003c/h4\u003e\n                Maximize revenue by selling membership access to all of your courses.\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-assignments.png\" alt=\"Assignments\" height=\"100px\" /\u003e\n                \u003ch4\u003eAssignments\u003c/h4\u003e\n                Tutor assignments is a great way to assign tasks to students.\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-certificate.png\" alt=\"Certificate\" height=\"100px\" /\u003e\n                \u003ch4\u003eCertificate\u003c/h4\u003e\n                Students will be able to download a certificate after course completion.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-course-attachments.png\" alt=\"Course Attachments\" height=\"100px\" /\u003e\n                \u003ch4\u003eCourse Attachments\u003c/h4\u003e\n                Add unlimited attachments/ private files to any Tutor course\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-course-preview.png\" alt=\"Course Preview\" height=\"100px\" /\u003e\n                \u003ch4\u003eCourse Preview\u003c/h4\u003e\n                Unlock some lessons for students before enrollment.\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-email.png\" alt=\"E-Mail\" height=\"100px\" /\u003e\n                \u003ch4\u003eE-Mail\u003c/h4\u003e\n                Send email on various tutor events\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-multi-instructors.png\" alt=\"Multi Instructors\" height=\"100px\" /\u003e\n                \u003ch4\u003eMulti Instructors\u003c/h4\u003e\n                Start a course with multiple instructors by Tutor Multi Instructors\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-prerequisites.png\" alt=\"Prerequisites\" height=\"100px\" /\u003e\n                \u003ch4\u003ePrerequisites\u003c/h4\u003e\n                Specific course you must complete before you can enroll new course by Tutor Prerequisites\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-report.png\" alt=\"Report\" height=\"100px\" /\u003e\n                \u003ch4\u003eReport\u003c/h4\u003e\n                Check your course performance through Tutor Report stats.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/tutor-zoom.png\" alt=\"Tutor Zoom Integration\" height=\"100px\" /\u003e\n                \u003ch4\u003eTutor Zoom Integration\u003c/h4\u003e\n                Connect Tutor LMS with Zoom to host live online classes. Students can attend live classes right from the lesson page.\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/google-classroom.png\" alt=\"Google Classroom Integration\" height=\"100px\" /\u003e\n                \u003ch4\u003eGoogle Classroom Integration\u003c/h4\u003e\n                Helps connect Google Classrooms with Tutor LMS courses, allowing you to use features like Classroom streams and files directly from the Tutor LMS course.\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/wc-subscriptions.png\" alt=\"WooCommerce Subscriptions\" height=\"100px\" /\u003e\n                \u003ch4\u003eWooCommerce Subscriptions\u003c/h4\u003e\n                Capture Residual Revenue with Recurring Payments.\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/wpml.png\" alt=\"WPML Multilingual CMS\" height=\"100px\" /\u003e\n                \u003ch4\u003eWPML Multilingual CMS\u003c/h4\u003e\n                Create multilingual courses, lessons, dashboard and more for a global audience.\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/notifications.png\" alt=\"Notifications\" height=\"100px\" /\u003e\n                \u003ch4\u003eNotifications\u003c/h4\u003e\n                Get notifications on frontend dashboard for specified tutor events.\n            \u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cimg src=\".github/addons/buddypress.png\" alt=\"BuddyPress\" height=\"100px\" /\u003e\n                \u003ch4\u003eBuddyPress\u003c/h4\u003e\n                Discuss about course and share your knowledge with your friends through BuddyPress\n            \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## FAQ\n\n1. Is it safe to use Tutor LMS 2.0 Beta on your production site?\n\n   Tutor LMS 2.0 Beta is an experimental build meant for testing purposes. We strongly recommend you not to use Tutor LMS 2.0 Beta on your production sites. Use it on staging environments and remember to backup your entire website before updating.\n\n2. Will I get any support for Tutor LMS 2.0 Beta?\n\n   Since this is an experimental release and should not be used on production sites, we won’t be providing any support for Tutor LMS 2.0 Beta.\n\n3. Where can I report bugs or provide feedback?\n\n   In the description section, you’ll see a form with the text [Report an Issue](https://forms.gle/xHw7TQSLGAcmbySy9). In this form, you can fill in your issues or provide your feedback regarding the Beta release.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemeum%2Ftutor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemeum%2Ftutor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemeum%2Ftutor/lists"}