{"id":20037764,"url":"https://github.com/openedx/frontend-app-learning","last_synced_at":"2025-05-15T20:00:46.268Z","repository":{"id":36980670,"uuid":"184327255","full_name":"openedx/frontend-app-learning","owner":"openedx","description":"Front-end for the Open edX course experience, implemented using React and Paragon.","archived":false,"fork":false,"pushed_at":"2025-05-12T15:50:29.000Z","size":16855,"stargazers_count":61,"open_issues_count":66,"forks_count":249,"subscribers_count":52,"default_branch":"master","last_synced_at":"2025-05-12T15:53:02.613Z","etag":null,"topics":["frontend-app","pr-sandboxes-enabled","tutor-supported"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"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":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,"zenodo":null}},"created_at":"2019-04-30T20:28:43.000Z","updated_at":"2025-05-12T14:36:52.000Z","dependencies_parsed_at":"2025-03-28T22:28:15.775Z","dependency_job_id":"bdb951b1-8971-41c1-8525-108fd0612215","html_url":"https://github.com/openedx/frontend-app-learning","commit_stats":{"total_commits":1005,"total_committers":99,"mean_commits":"10.151515151515152","dds":0.881592039800995,"last_synced_commit":"39d89bee9e3f42cedef4784d076a0f5787fb0316"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-learning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-learning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-learning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-learning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openedx","download_url":"https://codeload.github.com/openedx/frontend-app-learning/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254414457,"owners_count":22067263,"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":["frontend-app","pr-sandboxes-enabled","tutor-supported"],"created_at":"2024-11-13T10:21:53.885Z","updated_at":"2025-05-15T20:00:45.991Z","avatar_url":"https://github.com/openedx.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"frontend-app-learning\n#####################\n\n|codecov| |license|\n\nPurpose\n*******\n\nThis is the Learning MFE (micro-frontend application), which renders all\nlearner-facing course pages (like the course outline, the progress page,\nactual course content, etc).\n\n.. |codecov| image:: https://codecov.io/gh/edx/frontend-app-learning/branch/master/graph/badge.svg?token=3z7XvuzTq3\n   :target: https://codecov.io/gh/edx/frontend-app-learning\n.. |license| image:: https://img.shields.io/badge/license-AGPL-informational\n   :target: https://github.com/openedx/frontend-app-account/blob/master/LICENSE\n\nGetting Started\n***************\n\nPrerequisites\n=============\n\n`Tutor`_ is currently recommended as a development environment for the Learning\nMFE. Most likely, it already has this MFE configured; however, you'll need to\nmake some changes in order to run it in development mode. You can refer\nto the `relevant tutor-mfe documentation`_ for details, or follow the quick\nguide below.\n\n.. _Tutor: https://github.com/overhangio/tutor\n\n.. _relevant tutor-mfe documentation: https://github.com/overhangio/tutor-mfe#mfe-development\n\n\nCloning and Setup\n=================\n\n1. Clone your new repo:\n\n.. code-block:: bash\n\n    git clone https://github.com/openedx/frontend-app-learning.git\n\n2. Use the version of Node specified in ``.nvmrc``.\n\n  Using other major versions of node *may* work, but this is unsupported.  For\n  convenience, this repository includes an ``.nvmrc`` file to help in setting the\n  correct node version via `nvm \u003chttps://github.com/nvm-sh/nvm\u003e`_.\n\n3. Stop the Tutor devstack, if it's running: ``tutor dev stop``\n\n4. Next, we need to tell Tutor that we're going to be running this repo in\n   development mode, and it should be excluded from the ``mfe`` container that\n   otherwise runs every MFE. Run this:\n\n.. code-block:: bash\n\n    tutor mounts add /path/to/frontend-app-learning\n\n5. Start Tutor in development mode. This command will start the LMS and Studio,\n   and other required MFEs like ``authn`` and ``account``, but will not start\n   the learning MFE, which we're going to run on the host instead of in a\n   container managed by Tutor. Run:\n\n.. code-block:: bash\n\n    tutor dev start lms cms mfe\n\nStartup\n=======\n\n1. Install npm dependencies:\n\n.. code-block:: bash\n\n  cd frontend-app-learning \u0026\u0026 npm ci\n\n2. Start the dev server:\n\n.. code-block:: bash\n\n  npm run dev\n\nThen you can access the app at http://local.openedx.io:2000/learning/\n\nTroubleshooting\n---------------\n\nIf you see an \"Invalid Host header\" error, then you're probably using a different domain name for your devstack such as\n``local.edly.io`` or ``local.overhang.io`` (not the new recommended default, ``local.openedx.io``). In that case, run\nthese commands to update your devstack's domain names:\n\n.. code-block:: bash\n\n  tutor dev stop\n  tutor config save --set LMS_HOST=local.openedx.io --set CMS_HOST=studio.local.openedx.io\n  tutor dev launch -I --skip-build\n  tutor dev stop learning  # We will run this MFE on the host\n\nLocal module development\n=========================\n\nTo develop locally on modules that are installed into this app, you'll need to create a ``module.config.js``\nfile (which is git-ignored) that defines where to find your local modules, for instance:\n\n.. code-block:: js\n\n   module.exports = {\n     /*\n     Modules you want to use from local source code.  Adding a module here means that when this app\n     runs its build, it'll resolve the source from peer directories of this app.\n\n     moduleName: the name you use to import code from the module.\n     dir: The relative path to the module's source code.\n     dist: The sub-directory of the source code where it puts its build artifact.  Often \"dist\", though you\n       may want to use \"src\" if the module installs React as a peer/dev dependency.\n     */\n     localModules: [\n        { moduleName: '@openedx/paragon/scss', dir: '../paragon', dist: 'scss' },\n        { moduleName: '@openedx/paragon', dir: '../paragon', dist: 'dist' },\n        { moduleName: '@openedx/frontend-enterprise', dir: '../frontend-enterprise', dist: 'src' },\n        { moduleName: '@openedx/frontend-platform', dir: '../frontend-platform', dist: 'dist' },\n     ],\n   };\n\nSee https://github.com/openedx/frontend-build#local-module-configuration-for-webpack for more details.\n\nDeployment\n==========\n\nThe Learning MFE is similar to all the other Open edX MFEs. Read the Open\nedX Developer Guide's section on\n`MFE applications \u003chttps://openedx.github.io/frontend-platform/\u003e`_.\n\nPlugins\n=======\nThis MFE can be customized using `Frontend Plugin Framework \u003chttps://github.com/openedx/frontend-plugin-framework\u003e`_.\n\nThe parts of this MFE that can be customized in that manner are documented `here \u003c/src/plugin-slots\u003e`_.\n\nEnvironment Variables\n=====================\n\nThis MFE is configured via environment variables supplied at build time.\nAll micro-frontends have a shared set of required environment variables,\nas documented in the Open edX Developer Guide under\n`Required Environment Variables \u003chttps://openedx.github.io/frontend-platform/\u003e`_.\n\nThe learning micro-frontend also supports the following additional variables:\n\nCREDIT_HELP_LINK_URL\n  A link to resources to help explain what course credit is and how to earn it.\n\nENABLE_JUMPNAV\n  Enables the new Jump Navigation feature in the course breadcrumbs, defaulted to  the string 'true'.\n  Disable to have simple hyperlinks for breadcrumbs. Setting it to any other value but 'true' ('false','I love flags', 'etc' would disable the Jumpnav).\n  This feature flag is slated to be removed as jumpnav becomes default. Follow the progress of this ticket here:\n  https://openedx.atlassian.net/browse/TNL-8678\n\nSOCIAL_UTM_MILESTONE_CAMPAIGN\n  This value is passed as the ``utm_campaign`` parameter for social-share\n  links when celebrating learning milestones in the course. Optional.\n\n  Example: ``milestone``\n\nSUPPORT_URL_CALCULATOR_MATH\n  A link that explains how to use the in-course calculator. You can use the\n  one in the example below if you don't want to have your own branded version.\n\n  Example: https://support.edx.org/hc/en-us/articles/360000038428-Entering-math-expressions-in-assignments-or-the-calculator\n\nSUPPORT_URL_ID_VERIFICATION\n  A link that explains how to verify your ID. Shown in contexts where you need\n  to verify yourself to earn a certificate. The example link below is probably too\n  edx.org-specific to use for your own site.\n\n  Example: https://support.edx.org/hc/en-us/articles/206503858-How-do-I-verify-my-identity\n\nSUPPORT_URL_VERIFIED_CERTIFICATE\n  A link that explains what a verified certificate is.  You can use the\n  one in the example below if you don't want to have your own branded version.\n  Optional.\n\n  Example: https://support.edx.org/hc/en-us/articles/206502008-What-is-a-verified-certificate\n\nTWITTER_HASHTAG\n  This value is used in the Twitter social-share link when celebrating learning\n  milestones in the course. Will prefill the suggested post with this hashtag.\n  Optional.\n\n  Example: ``brandedhashtag``\n\nTWITTER_URL\n  A link to your Twitter account. The Twitter social-share link won't appear\n  unless this is set. Optional.\n\n  Example: https://twitter.com/openedx\n\nGetting Help\n============\n\nIf you're having trouble, we have `discussion forums`_\nwhere 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 workspace`_.  Because this is a\nfrontend repository, the best place to discuss it would be in the `#wg-frontend\nchannel`_.\n\nFor anything non-trivial, the best path is to open an issue in this repository\nwith as many details about the issue you are facing as you can provide.\n\nhttps://github.com/openedx/frontend-app-learning/issues\n\nFor more information about these options, see the `Getting Help`_ page.\n\n.. _Slack invitation: https://openedx.org/slack\n.. _community Slack workspace: https://openedx.slack.com/\n.. _#wg-frontend channel: https://openedx.slack.com/archives/C04BM6YC7A6\n.. _Getting Help: https://openedx.org/community/connect\n.. _discussion forums: https://discuss.openedx.org\n\nContributing\n============\n\nContributions are very welcome. Please read `How To Contribute`_ for details.\n\n.. _How To Contribute: https://openedx.org/r/how-to-contribute\n\nThis project is currently accepting all types of contributions, bug fixes,\nsecurity fixes, maintenance work, or new features.  However, please make sure\nto discuss your new feature idea with the maintainers before\nbeginning development to maximize the chances of your change being accepted.\nYou can start a conversation by creating a new issue on this repo summarizing\nyour idea.\n\nThe Open edX Code of Conduct\n============================\n\nAll community members are expected to follow the `Open edX Code of Conduct`_.\n\n.. _Open edX Code of Conduct: https://openedx.org/code-of-conduct/\n\nLicense\n=======\n\nThe code in this repository is licensed under the AGPLv3 unless otherwise\nnoted.\n\nPlease see `LICENSE \u003cLICENSE\u003e`_ for details.\n\nReporting Security Issues\n=========================\n\nPlease do not report security issues in public. Please email security@openedx.org.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Ffrontend-app-learning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenedx%2Ffrontend-app-learning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Ffrontend-app-learning/lists"}