# Technical Overview

This section is meant for researchers and data scientists who are interested in using CHRI data in their research and/or in technical details of the Arrest Explorer project.

# Available Technical Guides

  • About CHRI Data : For details about CHRI data and how it is maintained in Illinois by the Illinois State Police

  • Data Preprocessing : For details about what data filtering and processing ICJIA does to load CHRI data into Arrest Explorer

  • API : For details about API, which can be used to directly download aggregate data into R and Python scripts, etc.

  • Open Source : How to install a local version of Arrest Explorer and/or these documentation if you want to use the Application for your own data, etc.

WARNING

Any use of the application, its data code, or its source code is subject to the User Agreement

# Architecture of Arrest Explorer

The Illinois Criminal Justice Information Authority (ICJIA) Arrest Explorer consists of multiple components, each built on many popular open-source projects when possible. Together, these components provide an integrated platform for distributing aggregated Illinois Criminal History Record Information (CHRI) data.

# Components

Arrest Explorer's has three main components:

  • The API database containing aggregated CHRI data
  • GUI client
  • API Server

These three components are available in the main github repository, ICJIA/arrest-explorer (opens new window). The documentation is available seperately at ICJIA/arrest-explorer-docs (opens new window).

Figure 1 provides a graphical summary of how these components relate to one another.

Figure 1. Main components

Components diagram

NOTE

  • The sync icon indicates that the resource is regenerated periodically.
  • The pin icon indicates that data is fetched from the respective source and then cached.
  • The third-party client is not part of the Arrest Explorer project but is included to illustrate potential use cases other than via GUI app.

# API database

Arrest Explorer API database is a JSON file containing a set of tables to be served by the API server. These tables are prepared by cleaning and aggregating of the raw CHRI data from ICJIA's hosted extract from the Illinois State Police.

ICJIA has a set of SQL and R scripts that for retrieve CHRI data, calculate totals and subtotals, and then alter certain values to protect privacy before finally exporting the API database.

# API server

At the core of the Arrest Explorer project is an API server that is semi-independent of Arrest Explorer's graphical interface. At build, the API server fetches prepared data tables from the API database, caches the data in memory, and serves it.

API server (ICJIA/arrest-explorer-api (opens new window)) is powered by the following key technologies:

# GUI client

Arrest Explorer GUI client app contains a project landing page (/) as well as the interactive data explorer (/arrestexplorer/docs/explore). At build, the GUI client fetches data from the API server, reshapes the data for its use, and caches the data.

GUI client app (ICJIA/arrest-explorer (opens new window)) is powered by the following key technologies:

# Documentation

The current site (ICJIA/icjia-arrest-explorer-api-docs (opens new window)) serves as the documentation for the Arrest Explorer project and consists of User Agreement, User Guide and Developer Guide.

The documentation site is powered by VuePress (opens new window).

# Deployment

Figure 2 below provides a graphical summary of how the components are deployed.

Figure 2. Deployment strategy

Components diagram

# Updating data

Updating aggregated CHRI data to distribute begins with updating the local CHRI database at ICJIA, which is a regular but manual process managed by the ICJIA R&A Unit database administrator.

Once the CHRI database is updated, the database administrator will run a stored procedure for regenerating aggregated CHRI data tables in the API database.

The API server, on the other hand, is scheduled to restart automatically and regularly by a process manager. This allows the API server to serve the updated data when available since the API server fetches and caches data from the API database at start.

At start, the API server also triggers the build hook for the GUI client app on Netlify. The GUI client then fetches and caches data from the API server as part of the build process. Consequently, the end users are able to explore the updated data using its interactive data explorer.

Notice of Federal Funding and Federal Disclaimer

This website is funded through a grant from the Bureau of Justice Statistics, Office of Justice Programs, U.S. Department of Justice. Neither the U.S. Department of Justice nor any of its components operate, control, are responsible for, or necessarily endorse, this website (including, without limitation, its content, technical infrastructure, and policies, and any services or tools provided).