# 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:
- API server (GitHub)
- Component library (GitHub)
- Documentation (GitHub)
- Research Hub (GitHub)
- Research Hub Preview (GitHub)
- Research Hub Studio (GitHub)
Figure 1 below provides a graphical summary of how these components relate to one another.
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.
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).