{"id":13689566,"url":"https://github.com/openedx/edx-platform","last_synced_at":"2025-05-14T11:07:05.591Z","repository":{"id":8720268,"uuid":"10391073","full_name":"openedx/edx-platform","owner":"openedx","description":"The Open edX LMS \u0026 Studio, powering education sites around the world!","archived":false,"fork":false,"pushed_at":"2025-05-07T08:25:20.000Z","size":2262511,"stargazers_count":7698,"open_issues_count":442,"forks_count":4027,"subscribers_count":425,"default_branch":"master","last_synced_at":"2025-05-07T10:52:35.144Z","etag":null,"topics":["backend-service","hacktoberfest","pr-sandboxes-enabled"],"latest_commit_sha":null,"homepage":"https://openedx.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"egoist/vbuild","license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openedx.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-05-30T20:20:38.000Z","updated_at":"2025-05-07T06:55:05.000Z","dependencies_parsed_at":"2023-01-16T21:15:51.586Z","dependency_job_id":"c34929bc-e9d1-45f6-988a-3ff391127117","html_url":"https://github.com/openedx/edx-platform","commit_stats":{"total_commits":42881,"total_committers":1145,"mean_commits":37.45065502183406,"dds":0.9740910892936265,"last_synced_commit":"808390ace8acde8048b7ed3d44e4384249d8f1a8"},"previous_names":["edx/edx-platform"],"tags_count":5887,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fedx-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fedx-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fedx-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fedx-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openedx","download_url":"https://codeload.github.com/openedx/edx-platform/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129479,"owners_count":22019628,"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":["backend-service","hacktoberfest","pr-sandboxes-enabled"],"created_at":"2024-08-02T15:01:53.144Z","updated_at":"2025-05-14T11:07:00.581Z","avatar_url":"https://github.com/openedx.png","language":"Python","readme":"Open edX Platform\n#################\n| |License: AGPL v3| |Status| |Python CI|\n\n.. |License: AGPL v3| image:: https://img.shields.io/badge/License-AGPL_v3-blue.svg\n  :target: https://www.gnu.org/licenses/agpl-3.0\n\n.. |Python CI| image:: https://github.com/openedx/edx-platform/actions/workflows/unit-tests.yml/badge.svg\n  :target: https://github.com/openedx/edx-platform/actions/workflows/unit-tests.yml\n\n.. |Status| image:: https://img.shields.io/badge/status-maintained-31c653\n\nPurpose\n*******\nThe `Open edX Platform \u003chttps://openedx.org\u003e`_ enables the authoring and\ndelivery of online learning at any scale.  The platform is written in\nPython and JavaScript and makes extensive use of the Django\nframework. At the highest level, the platform is composed of a\nmodular monolith, some independently deployable applications (IDAs), and\nmicro-frontends (MFEs) based on the ReactJS.\n\nThis repository hosts the monolith at the center of the Open edX\nplatform.  Functionally, the edx-platform repository provides two services:\n\n* CMS (Content Management Service), which powers Open edX Studio, the platform's learning content authoring environment; and\n* LMS (Learning Management Service), which delivers learning content.\n\nDocumentation\n*************\n\nDocumentation can be found at https://docs.openedx.org/projects/edx-platform.\n\nGetting Started\n***************\n\nFor Production\n==============\n\nInstalling and running an Open edX instance is not simple.  We strongly\nrecommend that you use a service provider to run the software for you.  They\nhave free trials that make it easy to get started:\nhttps://openedx.org/get-started/\n\nHowever, if you have the time and expertise, then it is is possible to\nself-manage a production Open edX instance. To help you build, customize,\nupgrade, and scale your instance, we recommend using `Tutor`_, the\ncommunity-supported, Docker-based Open edX distribution.\n\nYou can read more about getting up and running with a Tutor deployment\nat the `Site Ops home on docs.openedx.org`_.\n\nFor Development\n===============\n\nTutor also features a `development mode`_ which will also help you modify,\ntest, and extend edx-platform. We recommend this method for all Open edX\ndevelopers.\n\nBare Metal (Advanced)\n=====================\n\nIt is also possible to spin up an Open edX platform directly on a Linux host.\nThis method is less common and mostly undocumented. The Open edX community will\nonly be able to provided limited support for it.\n\nRunning \"bare metal\" is only advisable for (a) developers seeking an\nadventure and (b) experienced system administrators who are willing to take the\ncomplexity of Open edX configuration and deployment into their own hands.\n\nSystem Dependencies\n-------------------\n\nOS:\n* Ubuntu 22.04\n\n* Ubuntu 24.04\n\nInterperters/Tools:\n\n* Python 3.11\n\n* Node 18\n\nServices:\n\n* MySQL 8.0\n\n* Mongo 7.x\n\n* Memcached\n\nLanguage Packages:\n\n* Frontend:\n\n  - ``npm clean-install`` (production)\n  - ``npm clean-install --dev`` (development)\n\n* Backend build:\n\n  - ``pip install -r requirements/edx/assets.txt``\n\n* Backend application:\n\n  - ``pip install -r requirements/edx/base.txt`` (production)\n  - ``pip install -r requirements/edx/dev.txt`` (development)\n\n  Some Python packages have system dependencies. For example, installing these packages on Debian or Ubuntu will require first running ``sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config`` to satisfy the requirements of the ``mysqlclient`` Python package.\n\nCodejail Setup\n--------------\n\nAs a part of the baremetal setup, you will need to configure your system to\nwork properly with codejail.  See the `codejail installation steps`_ for more\ndetails.\n\n.. _codejail installation steps: https://github.com/openedx/codejail?tab=readme-ov-file#installation\n\nBuild Steps\n-----------\n\nCreate two MySQL databases and a MySQL user with write permissions to both, and configure\nDjango to use them by updating the ``DATABASES`` setting.\n\nThen, run migrations::\n\n  ./manage.py lms migrate\n  ./manage.py lms migrate --database=student_module_history\n  ./manage.py cms migrate\n\nBuild static assets (for more details, see `building static\nassets`_)::\n\n  npm run build  # or, 'build-dev'\n\nDownload locales and collect static assets (can be skipped for development\nsites)::\n\n  make pull_translations\n  ./manage.py lms collectstatic\n  ./manage.py cms collectstatic\n\nSet up CMS SSO (for Development)::\n\n  ./manage.py lms manage_user studio_worker example@example.com --unusable-password\n  # DO NOT DO THIS IN PRODUCTION. It will make your auth insecure.\n  ./manage.py lms create_dot_application studio-sso-id studio_worker \\\n      --grant-type authorization-code \\\n      --skip-authorization \\\n      --redirect-uris 'http://localhost:18010/complete/edx-oauth2/' \\\n      --scopes user_id  \\\n      --client-id 'studio-sso-id' \\\n      --client-secret 'studio-sso-secret'\n\nSet up CMS SSO (for Production):\n\n* Create the CMS user and the OAuth application::\n\n    ./manage.py lms manage_user studio_worker \u003cemail@yourcompany.com\u003e --unusable-password\n    ./manage.py lms create_dot_application studio-sso-id studio_worker \\\n        --grant-type authorization-code \\\n        --skip-authorization \\\n        --redirect-uris 'http://localhost:18010/complete/edx-oauth2/' \\\n        --scopes user_id\n\n* Log into Django admin (eg. http://localhost:18000/admin/oauth2_provider/application/),\n  click into the application you created above (``studio-sso-id``), and copy its \"Client secret\".\n* In your private LMS_CFG yaml file or your private Django settings module:\n\n * Set ``SOCIAL_AUTH_EDX_OAUTH2_KEY`` to the client ID (``studio-sso-id``).\n * Set ``SOCIAL_AUTH_EDX_OAUTH2_SECRET`` to the client secret (which you copied).\nRun the Platform\n----------------\n\nFirst, ensure MySQL, Mongo, and Memcached are running.\n\nStart the LMS::\n\n  ./manage.py lms runserver 18000\n\nStart the CMS::\n\n  ./manage.py cms runserver 18010\n\nThis will give you a mostly-headless Open edX platform. Most frontends have\nbeen migrated to \"Micro-Frontends (MFEs)\" which need to be installed and run\nseparately. At a bare minimum, you will need to run the `Authentication MFE`_,\n`Learner Home MFE`_, and `Learning MFE`_ in order meaningfully navigate the UI.\n\n.. _Tutor: https://github.com/overhangio/tutor\n.. _Site Ops home on docs.openedx.org: https://docs.openedx.org/en/latest/site_ops/index.html\n.. _development mode: https://docs.tutor.edly.io/dev.html\n.. _building static assets: ./docs/references/static-assets.rst\n.. _Authentication MFE: https://github.com/openedx/frontend-app-authn/\n.. _Learner Home MFE: https://github.com/openedx/frontend-app-learner-dashboard\n.. _Learning MFE: https://github.com/openedx/frontend-app-learning/\n\nLicense\n*******\n\nThe code in this repository is licensed under version 3 of the AGPL\nunless otherwise noted. Please see the `LICENSE`_ file for details.\n\n.. _LICENSE: https://github.com/openedx/edx-platform/blob/master/LICENSE\n\n\nMore about Open edX\n*******************\n\nSee the `Open edX site`_ to learn more about the Open edX world. You can find\ninformation about hosting, extending, and contributing to Open edX software. In\naddition, the Open edX site provides product announcements, the Open edX blog,\nand other rich community resources.\n\n.. _Open edX site: https://openedx.org\n\n\nGetting Help\n************\n\nIf you're having trouble, we have discussion forums at\nhttps://discuss.openedx.org where you can connect with others in the community.\n\nOur real-time conversations are on Slack. You can request a `Slack\ninvitation`_, then join our `community Slack team`_.\n\nFor more information about these options, see the `Getting Help`_ page.\n\n.. _Slack invitation: https://openedx.org/slack\n.. _community Slack team: http://openedx.slack.com/\n.. _Getting Help: https://openedx.org/getting-help\n\n\nIssue Tracker\n*************\n\nWe use Github Issues for our issue tracker. You can search\n`previously reported issues`_.  If you need to report a bug, or want to discuss\na new feature before you implement it, please `create a new issue`_.\n\n.. _previously reported issues: https://github.com/openedx/edx-platform/issues\n.. _create a new issue: https://github.com/openedx/edx-platform/issues/new/choose\n\n\nHow to Contribute\n*****************\n\nContributions are welcome! The first step is to submit a signed\n`individual contributor agreement`_.  See our `CONTRIBUTING`_ file for more\ninformation – it also contains guidelines for how to maintain high code\nquality, which will make your contribution more likely to be accepted.\n\nNew features are accepted. Discussing your new ideas with the maintainers\nbefore you write code will also increase the chances that your work is accepted.\n\nCode of Conduct\n***************\n\nPlease read the `Community Code of Conduct`_ for interacting with this repository.\n\nReporting Security Issues\n*************************\n\nPlease do not report security issues in public. Please email\nsecurity@openedx.org.\n\n.. _individual contributor agreement: https://openedx.org/cla\n.. _CONTRIBUTING: https://github.com/openedx/.github/blob/master/CONTRIBUTING.md\n.. _Community Code of Conduct: https://openedx.org/code-of-conduct/\n\nPeople\n******\n\nThe current maintainers of this repository can be found on `Backstage`_.\n\n.. _Backstage: https://backstage.openedx.org/catalog/default/component/edx-platform\n\n","funding_links":[],"categories":["hacktoberfest","Python","网络服务","Learning Management Systems (LMS)","App"],"sub_categories":["网络服务_其他"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fedx-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenedx%2Fedx-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fedx-platform/lists"}