JusticeHub empowers communities for data-driven justice by making legal and justice data open, accessible and actionable.
JusticeHub is open-source and is based on CKAN, an open-source data management system that makes data accessible and widely used by many popular internet data portal
Justicehub make use of open source tool called CKAN as DMS (Data Management System). Given how CKAN is progressing, currently we make use CKAN 2.8 as of now which make use of both pylons and Flask which lives side by side (more info).
As for how to get started, CKAN Installation can be found here
JusticeHub makes use of default tech stack which includes:
- Python/Pylons Framework
- Postgresql Database
- Redis Cache
- Solr Search Index
CKAN standalone doesn't solve all the problems and customization is still an issue which we try to solve. Some of the challenges which includes:
- Theming
- Custom Authentication model
- Data visualization like Table view
- Moderation for datasets
Given how CKAN is structured, we try to overwrite it's logic by using plugins.
Hence for CKAN Customization, we make use of plugins, list of plugins which we created are:
Plugin Name | Description |
---|---|
ckanext-justicehub_theme | Custom templates and Styling |
ckanext-emailauth | User Authentication and Email verification |
ckanext-moderation | Dataset and Resources API + Moderation |
ckanext-tableview | Tabular dataset view (CSV, XLSX etc) |
Since we don't want to reinvent the same well, there are plugins which needs to be installed for usage from other repositories as mentioned:
Plugin Name | Description |
---|---|
ckanext-googleanalytics | Extension for Google Analytics |
ckanext-pages | Add simple pages to CKAN |
ckanext-datapusher | Make data from resource file available via CKAN's DataStore API |
ckanext-issues | Report issues with dataset |
ckanext-validation | Dataset validation |
ckanext-scheming | Modify schema of dataset by JSON or YAML file |
ckanext-composite | Structured dataset metadata with single / multiple field |
ckanext-pdfview | Views for PDF files |
ckanext-sitemap | For generating sitemap.xml |
ckanext-contact | Adding popup contact forms to pages |
ckanext-downloadall | Download all datasets in one click |
CKAN Architecture allows us to write different modules which are:
- Route -> Allow you to overwrite any route (In pylons) or Blueprints (In Flask)
- Views -> Jinja templates or data views which is returned, you can overwrite existing views with another by plugins
- API -> You can also customize views and make them act as API to return JSON object, just like how we do for authentication with custom theme
- Logic -> Logic is core business idea for given modules, like auth model, actions which include create/update/delete of resource, user, or any entity
- Models -> With plugins, you can also define your own tables / solr queries for different data storage like how we use for moderation plugin
Each plugins at the end is combination of RVLM (Route, Views, Logic, Models), which helps us to easily plug and play with different plugins.
Commits
- Write clear meaningful git commit messages (Do read http://chris.beams.io/posts/git-commit/)
- Make sure your PR's description contains GitHub's special keyword references that automatically close the related issue when the PR is merged. (More info at https://github.com/blog/1506-closing-issues-via-pull-requests )
- When you're submitting a PR for a UI-related issue, it would be really awesome if you add a screenshot of your change. It makes it very easy for the reviewers and you'll also get reviews quicker.
Feature Requests and Bug Reports
- When you file a feature request or when you are submitting a bug report to the issue tracker, make sure you add steps to reproduce it. Especially if that bug is some weird/rare one.
Join the development
- Before you join development, please set up the system on your local machine and go through the application completely. Explore and make sure you are comfortable with it
- Test the application on your machine and explore how datasets/resource/organizations interacting with each other.
- If you would like to work on an issue, drop in a comment at the issue. If it is already assigned to someone, but there is no sign of any work being done, please free to drop in a comment so that the issue can be assigned to you if the previous assignee has dropped it entirely.
This project and everyone participating in it is governed by the Justice Hub Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].