The purpose of this app is to allow for easier discovery of the educational modules created as part of the DART program. Ultimately this will replace the current public-facing list of all modules on the DART website.
This app will allow users to learn more about each module, investigate how the modules are connected, and search for particular topics or key words.
NOTE: This is a prototype that is in a phase of rapid development. All effort will be made to keep this README up to date, but some changes might slip by. If something isn't working as expected, please let us know by creating an issue.
There are three main folders,
assets
for stylesheets and other visual settings,components
which contains each of the panels/components of the app. Any callbacks that are internal to a component, e.g. expanding and hiding the component or something within the component, is in the component's directory. For examplecomponents/module_details_panel/
containsmodule_details_panel.py
as well asmodule_details_panelcallbacks.py
, but also smaller sub-components of that panel like thetitle_link
,tags
, andpre_reqs
.callbacks
for any callbacks that transmit information between different components. Note that these callbacks will filter through the hidden components ofhidden_active_module
andhidden_filtered_modules
. In the future there may be a third hidden component (possibly visible) formy_modules
.
The module_data.py file is created from the education_modules repo.
- The module_data.py file in the education_modules repository is automatically updated via a github action every time a change is made to the metadata of any module.
- Once a week an action runs on this repository to update the module_data.py file here.
- The action in this repository can also be run manually if metadata needs to be updated more frequently.
There is also a module_data_mini.py
file that consists of only 5 modules. When developing new features it can be extremely helpful to work out bugs and callbacks on this smaller set of data.
Clone or download this repository to run the app yourself!
The Dockerfile
, requirements.txt
are set up to allow this to run in a Docker container on a local computer. To run it, open Docker and a command line interface.
From the top level directory of this repository run:
docker build -t module_discovery_app .
This may take some a minute the first time you run it. Once it is completed, run:
docker run -d -p 8050:8050 module_discovery_app
Open a web browser to http://0.0.0.0:8050 to see and interact with the app.
If all of the requirements (see requirements.txt
) are correct on your machine, you can run the app locally without using docker at all with the command:
python app.py
This will open a port where you can see the app locally. To see error messages, callbacks, and for the app to live update as you develop, set debug=True
in the last line of app.py
.
NOTE: There will be one error on loading. You can ignore it completely.
All information and relationships represented in the network graphs are also communicated via buttons in the Module Details panel.
This is a Dash/Plotly app which has not been tested with any accessibilty technologies.
If you have needs that are not being met, or ideas for how to test or improve the accessibility of this app, please create an accessibility issue so we can work to address it!