{"id":16711247,"url":"https://github.com/regisb/oxct","last_synced_at":"2025-03-15T03:28:48.660Z","repository":{"id":50820246,"uuid":"355959477","full_name":"regisb/oxct","owner":"regisb","description":"Open edX Community Tools","archived":false,"fork":false,"pushed_at":"2021-05-28T19:51:01.000Z","size":23,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-01-21T19:17:00.370Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/regisb.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2021-04-08T15:24:25.000Z","updated_at":"2021-11-15T08:03:45.000Z","dependencies_parsed_at":"2022-09-02T22:40:45.593Z","dependency_job_id":null,"html_url":"https://github.com/regisb/oxct","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/regisb%2Foxct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/regisb%2Foxct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/regisb%2Foxct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/regisb%2Foxct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/regisb","download_url":"https://codeload.github.com/regisb/oxct/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243680707,"owners_count":20330148,"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-10-12T20:11:19.975Z","updated_at":"2025-03-15T03:28:48.640Z","avatar_url":"https://github.com/regisb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"OXCT: Open edX Community Tools\n==============================\n\nWARNING: this is a work-in-progress. If you are an active Open edX community member and you have ideas to improve this repo, please feel free to open a pull request!\n\nThis package includes tools to publish information about the Open edX community.\n\nInstallation\n------------\n\n::\n\n    pip install https+git://github.com/openedx/oxct.git\n\nUsage\n-----\n\nList community members::\n\n    oxct community members list\n\nList core committers::\n\n    oxct community members list --tag=corecommitter\n\nDisplay a particular community member::\n\n    oxct community members show nedbat\n\nRunning in production\n---------------------\n\n::\n\n    docker-compose build\n    docker-compose up -d\n\nThen point a webserver to localhost:5000. Note that the cache will certainly have to be warmed up. To do so, hit the following endpoint: /community/members.\n\nDevelopment\n-----------\n\nRun a local Redis instance::\n\n    make dev-redis\n\nRun a development web server::\n\n    make dev-server\n\nCheck that the server works by running::\n\n    curl localhost:5000/community/members/nedbat\n\nPoint the ``oxct`` client to your local instance::\n\n    oxct --host=http://localhost:5000 community members show nedbat\n\nRun tests (requires a running Redis instance)::\n\n    make test\n\nServer API endpoints\n--------------------\n\nThe oxct server exposes the following endpoints:\n\n* ``/community/members``: it's possible to search members by tag by passing the ``?tag=...`` query string. For instance: ``?tag=corecommitter``.\n* ``/community/members/\u003cusername\u003e``\n* ``/community/tags``\n\nArchitecture\n------------\n\nThe oxct server relies on a Redis cache to store information collected from the `Open edX forums \u003chttps://discuss.openedx.org\u003e`__. Basically, the Discourse API is crawled to extract community information. To make sure that the server cache is always fresh, all cache entries expire with a TTL between 10 seconds and 24 hours. An asynchronous pub/sub worker listens for expire events to recompute data on-the-fly.\n\nTODO\n----\n\n- Get rid of all TODO statements\n- Better client output\n- ... whatever you can think of to improve this!\n\nLicense\n-------\n\nThis work is licensed under the terms of the `GNU Affero General Public License (AGPL) \u003chttps://www.gnu.org/licenses/agpl-3.0.en.html\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fregisb%2Foxct","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fregisb%2Foxct","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fregisb%2Foxct/lists"}