Please reload the page to view the latest COVID-19 information.

# Project Architecture

ICJIA Research Hub consists of multiple parts, or components, each built on many popular open-source projects. Together, they provide an integrated platform for publishing ICJIA R&A's research contents (as well as contributions from others).

# Main components

There are six main components of the ICJIA Research Hub project:

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

Figure 1. Main components

architecture diagram

NOTE

In Figure 1 above, as well as in Figure 2 below, the lock icon indicates that a service requires authentication.

TIP

In Figure 1, "published" and "submitted" are possible values for the content status.

# API server

ICJIA Research Hub's API server (GitHub) provides as a headless content management system (CMS) for ICJIA Research Hub and makes its contents accessible via HTTP calls.

The API server is powered by:

  • MongoDB for ICJIA Research Hub contents database; and
  • Strapi for managing authentication and contents as well as handling HTTP calls from clients.

# Component library

The main purpose of the custom component library (GitHub) is to improve the maintainability of Vue components and a CSS stylesheet shared by three frontend apps. The shared Vue components currently include the menu toolbar, footer and content-specific components (i.e. "cards" and "views" for Apps, Articles and Datasets).

The component library is powered by the following key technologies:

  • Vue.js for the JavaScript web application framework; and
  • Vuetify.js for Material Design UI components.

# Documentation

The current site (GitHub) serves as the documentation for the ICJIA Research Hub project, consisting of three "Guides" intended for users, developers and content authors (ICJIA staff).

The documentation site is powered by VuePress.

# Frontend apps

Research Hub, Research Hub Preview and Research Hub Studio are main frontend apps and share a lot in common. They all send request to the API server for data and depend on a custom Vue component library for the common UI components.

All three frontend apps are powered by the following key technologies:

  • Vue.js for the JavaScript web application framework; and
  • Vuetify.js for Material Design UI components.

# Research Hub

Research Hub (GitHub) serves as the main graphical user interface (GUI) to public contents.

# Research Preview and Research Studio

Research Hub Preview (GitHub) and Research Hub Studio (GitHub) together model and streamline ICJIA's internal content publication process.

# Deployment strategy

NOTE

GitHub repository for the API server contains an older setup. The API server is currently not deployed using Docker.

Figure 2. Deployment strategy

organization diagram

Notice of Federal Funding and Federal Disclaimer

This Web site 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 Web site (including, without limitation, its content, technical infrastructure, and policies, and any services or tools provided).