https://github.com/regisb/oxct
Open edX Community Tools
https://github.com/regisb/oxct
Last synced: over 1 year ago
JSON representation
Open edX Community Tools
- Host: GitHub
- URL: https://github.com/regisb/oxct
- Owner: regisb
- License: agpl-3.0
- Created: 2021-04-08T15:24:25.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-05-28T19:51:01.000Z (about 5 years ago)
- Last Synced: 2025-01-21T19:17:00.370Z (over 1 year ago)
- Language: Python
- Size: 22.5 KB
- Stars: 0
- Watchers: 5
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE.txt
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
OXCT: Open edX Community Tools
==============================
WARNING: 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!
This package includes tools to publish information about the Open edX community.
Installation
------------
::
pip install https+git://github.com/openedx/oxct.git
Usage
-----
List community members::
oxct community members list
List core committers::
oxct community members list --tag=corecommitter
Display a particular community member::
oxct community members show nedbat
Running in production
---------------------
::
docker-compose build
docker-compose up -d
Then 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.
Development
-----------
Run a local Redis instance::
make dev-redis
Run a development web server::
make dev-server
Check that the server works by running::
curl localhost:5000/community/members/nedbat
Point the ``oxct`` client to your local instance::
oxct --host=http://localhost:5000 community members show nedbat
Run tests (requires a running Redis instance)::
make test
Server API endpoints
--------------------
The oxct server exposes the following endpoints:
* ``/community/members``: it's possible to search members by tag by passing the ``?tag=...`` query string. For instance: ``?tag=corecommitter``.
* ``/community/members/``
* ``/community/tags``
Architecture
------------
The oxct server relies on a Redis cache to store information collected from the `Open edX forums `__. 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.
TODO
----
- Get rid of all TODO statements
- Better client output
- ... whatever you can think of to improve this!
License
-------
This work is licensed under the terms of the `GNU Affero General Public License (AGPL) `_.