Giter VIP home page Giter VIP logo

justicehub's Introduction

JusticeHub Logo

License: AGPL-3.0 Contributions welcome Gitter Newsletter Docs: latest Twitter

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

Documentation

How Justicehub is designed

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:

  1. Python/Pylons Framework
  2. Postgresql Database
  3. Redis Cache
  4. 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:

  1. Theming
  2. Custom Authentication model
  3. Data visualization like Table view
  4. 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

Concepts from CKAN

CKAN Architecture allows us to write different modules which are:

  1. Route -> Allow you to overwrite any route (In pylons) or Blueprints (In Flask)
  2. Views -> Jinja templates or data views which is returned, you can overwrite existing views with another by plugins
  3. 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
  4. Logic -> Logic is core business idea for given modules, like auth model, actions which include create/update/delete of resource, user, or any entity
  5. 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.

Contributions Best Practices

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.

Code of Conduct

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].

justicehub's People

Contributors

shashank-sharma avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

justicehub's Issues

JH - Standardizing Documentation

README Documentation that needed:

  • Explaining how JusticeHub works (Technical, possible to make wiki)
  • Tags: chat|RocketChat, mailing|list, twitter in README at top (also remove unused ones)
  • Contribution guidelines (Markdown file)
  • Add SPOC in-case any urgent / vulnerability reporting

Repository level changes:

  • Issue template
  • Adding metadata to JusticeHub repository (Links, info, tags)
  • Standardized how to use labels in each issue (documentation, bug, enhancement etc)

Extra work:

  • Add good first issues for each repository (allow new comers to contribute) -> Will add in few repositories which we worked in
  • If any questions, add it as issue, allow others to pitch in
  • Need common RC Channel for others to come and interact (will link it with chat|RocketChat tags in documentation)

Justice Hub - Key metrics to track

Metrics

  1. Data Contributors
    1. No of registered users per month
    2. No of dataset contributors per month
  2. Datasets
    1. Total Datasets (Monthly trend)
    2. Downloads per dataset
    3. Views per dataset
  3. Platform
    1. Bounce Rate
    2. Total Visits (Overall)
    3. Page Visits (Other than datasets e.g. Initiatives)
    4. New vs Repeat Users
    5. Sources
    6. SEO Related Metrics - Google Search Console
      1. Terms that lead to Justice Hub
    7. Usage of key elements like search bar, dataset category panel, etc
  4. Community
    1. Twitter
    2. Substack
    3. LinkedIn
    4. YouTube

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.