{"id":20156098,"url":"https://github.com/openfun/jitsi-magnify","last_synced_at":"2025-07-08T08:34:20.021Z","repository":{"id":36961566,"uuid":"465350555","full_name":"openfun/jitsi-magnify","owner":"openfun","description":"An authentication and room management system for Jitsi built with Django/React","archived":false,"fork":false,"pushed_at":"2025-07-01T14:43:35.000Z","size":4337,"stargazers_count":22,"open_issues_count":17,"forks_count":6,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-07-01T15:40:42.415Z","etag":null,"topics":["django","jitsi","jitsi-meet","react","reactjs","video-communication","video-conferencing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openfun.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-03-02T14:57:25.000Z","updated_at":"2025-02-26T21:42:24.000Z","dependencies_parsed_at":"2024-01-03T16:27:21.378Z","dependency_job_id":"98c99963-8070-4565-9377-732f34ee5682","html_url":"https://github.com/openfun/jitsi-magnify","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/openfun/jitsi-magnify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfun%2Fjitsi-magnify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfun%2Fjitsi-magnify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfun%2Fjitsi-magnify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfun%2Fjitsi-magnify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openfun","download_url":"https://codeload.github.com/openfun/jitsi-magnify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfun%2Fjitsi-magnify/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264232025,"owners_count":23576762,"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":["django","jitsi","jitsi-meet","react","reactjs","video-communication","video-conferencing"],"created_at":"2024-11-13T23:37:34.075Z","updated_at":"2025-07-08T08:34:19.952Z","avatar_url":"https://github.com/openfun.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jitsi Magnify\n\nAn authentication, room and meeting management system for Jitsi based on Django/React.\n\nJitsi Magnify is built with [ReactJS](https://fr.reactjs.org/) for the frontend, and\n[Django](https://www.djangoproject.com/) for the backend.\n\n## Getting started\n\n### Prerequisite\n\nMake sure you have a recent version of Docker and\n[Docker Compose](https://docs.docker.com/compose/install) installed on your laptop:\n\n```bash\n$ docker -v\n  Docker version 20.10.2, build 2291f61\n\n$ docker compose version\n  Docker Compose version v2.17.3 \n```\n\n\u003e⚠️ You may need to run the following commands with `sudo` but this can be\n\u003eavoided by assigning your user to the `docker` group.\n\n### Project bootstrap\n\nThe easiest way to start working on the project is to use our `Makefile` :\n```bash\n$ make bootstrap\n```\n\nThis command builds the `app` container, installs dependencies and performs database migrations.\nIt's a good idea to use this command each time you are pulling code from the project repository\nto avoid dependency-releated or migration-releated issues.\n\nWhen the command stops, check that all services are running as expected:\n\n```bash\n$ docker compose ps\n```\n\nYou should now be able to access the demo site at [localhost:8070](http://localhost:8070).\n\nFinally, you can see all available commands in our `Makefile` with :\n\n```bash\n$ make help\n```\n\n### Django admin\n\nYou can access the Django admin site at [localhost:8071/admin](http://localhost:8071/admin/).\n\nTo access the Django admin, you will first need to create a superuser account:\n\n```bash\n$ make superuser\n```\n\n## Running Magnify in production\n\n### Configure a Jitsi instance\n\nBefore running Magnify, you will need a Jitsi instance with JWT authentication activated:\n\n```\nENABLE_AUTH=1\nAUTH_TYPE=jwt\nJWT_APP_ID=magnify\nJWT_APP_SECRET={JWT_JITSI_APP_SECRET}\n```\n\nIn the Prosody configuration, you should also set the variable:\n`XMPP_DOMAIN={JWT_JITSI_XMPP_DOMAIN}`.\n\nThe `JWT_JITSI_APP_SECRET` and `JWT_JITSI_XMPP_DOMAIN` variables should be set to the same value\nin your Jitsi instance and in Magnify.\n\n### Configure Magnify\n\nThe easiest way to run Magnify in production is to use the [official Docker image][1].\n\nConfiguration is done via environment variables as detailed in our\n[configuration guide](docs/env.md).\n\n\n## Frontend\n\n#### Architecture\n\nThe front project is split into two parts.\n\n- A first part in `src/frontend/packages/core` contains all the components, services, repositories, and even complete\n  pages required to build a magnify application. It also includes an AppRouter component that creates an app and\n  its default routes\n\n\n- Then a sandbox application (`src/frontend/sandbox`) which aims to demonstrate how to use the core package.\n\n#### Configuration variables\n\nA set of configuration variables is required. All variables can be configured directly through the environment\nvariables of the Django project. They are served to the client via the `/config.json` API route.\n\nHere is the list of all the available variables :\n\n```\n{\n  \"API_URL\": \"http://localhost:8071/api\" // URL of magnify api,\n  \"JITSI_DOMAIN\": \"exemple.test\",\n  \"KEYCLOAK_CLIENT_ID\": \"magnify-front\",\n  \"KEYCLOAK_EXPIRATION_SECONDS\": 1800,\n  \"KEYCLOAK_REALM\": \"magnify\",\n  \"MAGNIFY_SHOW_REGISTER_LINK\": true,\n  \"KEYCLOAK_URL\": \"http://localhost:8080\"\n}\n\n```\nYou can mock these variables by adding a `config.json` file in the public folder of the sandbox application.\n\n#### Development mode\n\nWe have added a compilation option that allows the compiler to directly access the project sources when it encounters\nan import from the `@openfun/jitsi-magnify` package.\n\nAs a result, to use package components in the sandbox, you don't need to build the package. You just need to export them.\n\nTo learn how to export new components, please open the `src/frontend/packages/core/index.ts` file.\n\nYou can now navigate to the `src/frontend/sandbox` folder and run the `yarn dev` command directly. Hot reload will\nwork when you modify a component in the `package/core`.\n\n\n#### Customization\n\nIn order to make magnify customizable, we opted to add the @openfun/cunningham-react package.\n[cunningham documentation](https://github.com/openfun/cunningham)\n\nHowever, cunningham does not contain all the necessary components. So we are still using Grommet for now. We need to do\na mapping between the different cunningham tokens and the Grommet theme configuration.\n\nTo see how this mapping works, go to `src/frontend/packages/core/themes/theme.ts` file.\n\n\n## Contributing\n\nThis project is intended to be community-driven, so please, do not hesitate to\nget in touch if you have any question related to our implementation or design\ndecisions.\n\nWe try to raise our code quality standards and expect contributors to follow\nthe recommandations from our\n[handbook](https://handbook.openfun.fr).\n\n## License\n\nThis work is released under the MIT License (see [LICENSE](./LICENSE)).\n\n[1]: https://hub.docker.com/r/fundocker/jitsi-magnify\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenfun%2Fjitsi-magnify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenfun%2Fjitsi-magnify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenfun%2Fjitsi-magnify/lists"}