{"id":20037838,"url":"https://github.com/openedx/frontend-app-admin-portal","last_synced_at":"2025-05-05T06:31:37.233Z","repository":{"id":37080934,"uuid":"132906257","full_name":"openedx/frontend-app-admin-portal","owner":"openedx","description":"edx-portal is a frontend that provides branded learning experiences.","archived":false,"fork":false,"pushed_at":"2025-05-02T07:39:55.000Z","size":23613,"stargazers_count":23,"open_issues_count":44,"forks_count":32,"subscribers_count":64,"default_branch":"master","last_synced_at":"2025-05-02T08:41:20.426Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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.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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-05-10T13:44:58.000Z","updated_at":"2025-04-30T16:57:24.000Z","dependencies_parsed_at":"2024-01-01T01:26:44.305Z","dependency_job_id":"8898ee86-a7af-406d-889b-4120470209d8","html_url":"https://github.com/openedx/frontend-app-admin-portal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-admin-portal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-admin-portal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-admin-portal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Ffrontend-app-admin-portal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openedx","download_url":"https://codeload.github.com/openedx/frontend-app-admin-portal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252451527,"owners_count":21749950,"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-11-13T10:23:15.993Z","updated_at":"2025-05-05T06:31:36.340Z","avatar_url":"https://github.com/openedx.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# frontend-app-admin-portal\n\n![Build Status](https://github.com/openedx/frontend-app-admin-portal/actions/workflows/ci.yml/badge.svg)\n![Codecov](https://codecov.io/gh/edx/frontend-app-admin-portal/branch/master/graph/badge.svg)\n\n# Purpose\nfrontend-app-admin-portal is a frontend that provides branded learning experiences as well as a dashboard for enterprise learning administrators.\n\n# Getting Started\n\n## Setting up a dev environment\n\n### The Short Story\n\n1. Set up docker devstack locally, and start the service containers (see https://github.com/openedx/devstack)\n\n2. Set up and run the edx-analytics-data-api (https://github.com/openedx/edx-analytics-data-api) locally\n\n3. Clone this repo and install npm requirements:\n\n```\n$ git clone git@github.com:edx/frontend-app-admin-portal.git\n$ cd frontend-app-admin-portal\n$ nvm use (if using nvm) OR install and switch to version of node/npm as per the .nvmrc file to avoid issues during npm install or npm start (and to use the same version of node/npm as used by team plus CI builds)\n$ npm install\n$ npm start # or \"npm run start:with-theme\" if you want edX branding\n```\n\nThe application is now running and can be accessed in a web browser at http://localhost:1991/\n\n\n#### Themes\n\nBy default, the core Paragon theme is installed and used with the `npm start` command. If you'd like to use the @edx/brand-edx.org theme, use the `npm run start:with-theme` command.\n\n\n#### Sign-in and access\n\nSign in using the `enterprise_openedx_operator` created by running `./manage.py lms seed_enterprise_devstack_data` in the lms shell.\nAfter sign-in, you may have to navigate back to `localhost:1991`.\n\nIn the lms django admin, click on \"Enterprise Customers\" then \"Test Enterprise\" (or the enterprise you're working with). Check the\nappropriate boxes to gain access to the appropriate admin screens.\n\n\n### The Longer Story\n\nFor the frontend-app-admin-portal to function properly locally, the following parts need to be set up:\n\n1. At least 1 enterprise customer should exist in `edx-platform`. This customer can be created using created by running `./manage.py lms seed_enterprise_devstack_data` in the lms shell.\n2. `edx-analytics-data-api` needs data that would normally be piped from `edx-platform` via data pipelines\n\n#### Enterprise Customer\n\nThe `frontend-app-admin-portal` displays information about enterprise customers in `edx-platform`, so you will need to create a customer in `edx-platform`. You can create a customer by doing the following:\n\n1. Navigate to http://localhost:18000/admin/enterprise/enterprisecustomer/\n2. Click \"Add Enterprise Customer\"\n3. Complete this form, at very least filling in the Name, Slug, and Site\n4. Click \"Save\"\n\nOnce created, make a note of the UUID field in the admin for the enterprise customer you created. This is needed to map the data in `edx-platform` to the data in `edx-analytics-data-api`.\n\n#### Analytics-data-api Data Prep\n\nFollow the instructions for how to get data into the edx-analytics-data-api in the repo README here: https://github.com/openedx/edx-analytics-data-api, using the UUID for the enterprise customer you just created.\n\n#### Bringing it all together\n\nAt this point, if the LMS *and* `data-analytics-api` are running, you should then be able to:\n\n1. Run the `frontend-app-admin-portal` locally\n\n```\n$ npm install\n$ npm start\n```\n\n2. Login with credentials that you could log into your local edx-platform with\n\n3. See data displayed in the admin portal\n\n### Using local frontend libraries\nIn order to use a local version of a frondend library, such as Paragon, you must create a `module.config.js` file in the root directory of your repo.\nIt should contain aliases that webpack will use to resolve modules locally rather than using the module in `node_modules`.\n\nSample `module.config.js` file:\n```\nmodule.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  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\".\n*/\n  localModules: [\n    { moduleName: '@edx/brand', dir: '../brand-edx.org' },\n    { moduleName: '@openedx/paragon/scss/core', dir: '../paragon', dist: 'scss/core' },\n    { moduleName: '@openedx/paragon', dir: '../paragon', dist: 'dist' },\n  ],\n};\n```\n\nNB: In order for webpack to properly resolve scss imports locally, you must use a `~` before the import, like so: `@import \"~@edx/brand/paragon/fonts\";`\n\n### Running tests\n\nYou can run all tests as follows:\n```\nnvm use\nnpm install\nnpm run test\n```\n\nAdditionally, you can run a single test file with\n```\nnpm run test -- ProvisioningFormSubmissionButton.test.jsx\n```\n\nor run a given test function by appending a `.only` to the test function (or appending `.skip` to do the inverse).\nFor example: `test.only('your test function', () =\u003e {...})`.\n\nYou can use watch mode with tests as follows:\n```\nnpm run test:watch BudgetDetailPage.test.jsx\n# or to skip coverage reporting\nnpm run test:watch-no-cov BudgetDetailpage.test.jsx\n```\nNote the watcher has its own set of commands to help run test functions that match a regex (`t my regex`), etc.\nUse the `w` command to get a list of valid watch commands.\n\n## Getting Help\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 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-admin-portal/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\n## Contributing\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 have a discussion about your new feature idea with the maintainers prior to\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\n## The Open edX Code of Conduct\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\n## License\n\nThe code in this repository is licensed under the AGPLv3 unless otherwise\nnoted.\n\nPlease see `LICENSE \u003cLICENSE\u003e`_ for details.\n\n## Reporting Security Issues\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-admin-portal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenedx%2Ffrontend-app-admin-portal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Ffrontend-app-admin-portal/lists"}