Skip to content
devinleighsmith edited this page Aug 13, 2021 · 17 revisions

Property Inventory Management System (PIMS)

License contributions welcome API (DEV) APP (React) codecov

Uptime Robot status img

The PIMS solution will provide a geo-spatial inventory of properties to assist Strategic Real Estate Services branch of Real Property Division to manage and oversee the disposal of assets surplus to government, optimize the benefits to the government and citizens of BC related to the management of public real estate assets, and be a trusted source for accurate information for Government owned titled property.

This is a public site. No private information should be stored here.

Description

PIMS provides a securely shared central inventory of properties, and a claim based workflow engine that assists agencies in the disposal of properties. PIMS is an opensource microservice container platform, built from the ground-up to support reuse, scalability, and customizability. In addition to a web application, the open API can provide integration with 3rd parties and other agencies.

PIMS provides a way for agencies to manage their inventory of properties and control who has access to this information, along with what they can do with it. It provides a way to follow mandated processes to identify and dispose of properties through the Surplus Property Program (SPP). Properties can now be reviewed co-operatively to provide approval and to identify issues.

Overview

Overview

Designed and developed to support continous development through transparent Agile processes. Developers are able to replicate the whole architecture locally to build, debug and enhance.

Architectural Summary

Architectural Summary

DevOps CI/CD pipelines, configuration, scans and testing all setup and running (infrastructure as code). Commits to the dev branch are immediately built, tested, scanned and deployed to the DEV environment for QA. Merges to the master branch are tagged, built, tested, scanned and deployed to the TEST environment for UAT. Upon approval tagged artifacts can be deployed to the PROD environment.

DevOps Summary

DevOPs

The PIMS technical architecture stack continues to grow as features and enhancements are added. The current components and integrations are listed below;

Overview

Subject Description
Start Developing How to get your local environment setup and start development
GitHub Workflow How we use git and GitHub
Architecture PIMS architecture design information
Security PIMS security information
Database PIMS database design information
API PIMS RESTful API information
Swagger Swagger documentation for API
APP PIMS Application information
OpenShift OpenShift documentation
DevOps CI/CD DevOps documentation
Code Quality Code Quality information
Transition Plan Transition Plan and Roadmap
Versions Version information
Bulk Agency Transfer How to bulk transfer properties to another agency

Features

There are many features within PIMS, however there are a few that should be highlighted as they have been designed in a generic way so that they can be extended in the future.

Name Description
Light Workflow Engine Workflow architecture design information
Notifications Notification architecture design information

Tools

Presently there are a few custom built tools to help with development. Both the Converter and Importer tools are generic and can be used outside of PIMS.

Name Description
Converter Converter Excel Worksheets into JSON
Importer Parse JSON files and send them to an API endpoint
Keycloak Sync Synchronize Keycloak with PIMS

Monitoring

In an effort to improve supporting PIMS, watching performance and logs, the following tools have been implemented.

Name Description
Performance Monitor the performance of the whole solution in all environments with Prometheus and Grafana.
Logging Monitor all logs from the whole solution in all environments with Elasticsearch and Kibana.

SRES Workflow Process Documentation

PIMS presently has two primary core goals, a single source of property inventory and a project workflow process to support SRES in adhering to policy when disposing properties.

Name Description
Submit Surplus Property Process Project SRES Workflow to submit a disposal project
Assess Surplus Property Process Project Request SRES Workflow to assess a disposal project

Components

The following list provides a summary of all components that are fundamental in the development of PIMS.

       Component Technical Stack Version Description
Application
Application React/Node 16.12.0/10 UI for PIMS
API .NET Core 3.1 RESTful Open API for data access
Database MSSQL 2019 Inventory datasource
Authentication KeyCloak 7.3.0.GA Authenticate users
GIS
Mapping Leaflet Source for UI maps
Layers Data BC Mapping layers (i.e. parcel boundaries)
Civic Address Geocoder Validating and fetching Civic Addresses
PID Geocoder Fetching PIDs for validated addresses
Notifications
Email CHES Notification via Common Hosted Email Service
Infrastructure
Source Code GitHub Source code repository
GitHub Actions GitHub GitHub Actions ensure stability before allowing merge
Cloud Hosting OpenShift 3.11 Environment for solution
DevOps Hosting OpenShift 3.11 CI/CD pipeline environment
DevOps Pipeline Jenkins 2.138.4 CI/CD pipeline tooling
Containers Docker Container platform tooling
Authentication Open ID Connect 2.0 Identity membership managed by IDIR, BCeID and GitHub
EF Core EntityFramework Core 3.1.3 A lightweight, extensible, open source and cross-platform version of the popular Entity Framework data access technology
Redux React+Redux 4.0.5 A Predictable State Container for JS Apps
Formik React+Formik 2.1.4 Build forms in React, without the tears
Typescript Javascript 3.7.3 TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.

Tools

There are a number of tools used to develop and analyze the PIMS project.

       Name Description
CodeCov Improve your code review workflow and quality. Codecov provides highly integrated tools to group, merge, archive, and compare coverage reports.
UptimeRobot Uptime Robot is all about helping you to keep your websites up
SonarQube SonarQube empowers all developers to write cleaner and safer code.
Snyk Automatically find, prioritize and fix vulnerabilities in your open source dependencies throughout your development process.
Jira The #1 software development tool used by agile teams
Confluence Confluence is your team workspace where knowledge and collaboration meet to achieve great things.
Miro Scalable, secure, cross-device and enterprise-ready team collaboration whiteboard for distributed teams.
UXPin Design tool like no other. Prototypes that feel real, with powers of code components, logic, states and design systems.
GitHub Provides hosting for software development version control using Git.
OpenShift OpenShift is a family of containerization software developed by Red Hat. Its flagship product is the OpenShift Container Platform—an on-premises platform as a service built around Docker containers orchestrated and managed by Kubernetes on a foundation of Red Hat Enterprise Linux.
Jenkins The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
Keycloak - DEV Keycloak is an open source software product to allow single sign-on with Identity Management and Access Management aimed at modern applications and services.
Keycloak - TEST Keycloak is an open source software product to allow single sign-on with Identity Management and Access Management aimed at modern applications and services.
Keycloak - PROD Keycloak is an open source software product to allow single sign-on with Identity Management and Access Management aimed at modern applications and services.
Prometheus Prometheus is an open-source systems monitoring and alerting toolkit.
Grafana Grafana allows you to query, visualise, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture.
Elasticsearch Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data for lightning fast search, fine‑tuned relevancy, and powerful analytics that scale with ease.
Kibana Kibana is a free and open user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack. Do anything from tracking query load to understanding the way requests flow through your apps.