/GlobysG3ConfigurationTool

This is the implementation project for a prototype configuration tool for the Globys G3 product

Primary LanguageJavaScript

Mark Strickland

GitHub avatar for author MarkStrickland562

MarkStrickland562

Globys G3 Configuration Tool

Started May 10, 2019.

Project Description

The Globys G3 Configuration Tool is a prototype project for developing a configuration tool for the Globys G3 product. G3 Configuration is a very large, complex body of data and business rules that controls G3 functionality and the user experience. There are 51 areas of configuration and most "configurables" fall under the categories of Reporting, Permissions, Customizations, Client System Settings, Localization, Messaging and Security. There are ~160 database tables that contain configuration data. At least 60 must be populated correctly in order for G3 to be fully functional. The Minimal Viable Product for this project will focus on Permissions and Customizations which will also include configuration of Clients, Products and Groups. The other configurables will be represented in disabled buttons in a navigation bar in order to provide a view into what a fully-featured tool would look like. Minimum features will include:

  • Enable Create/Read/Update/Delete operations for Clients, Products and Groups.
  • Enable configuration product permissions at the Client, Product, Product/UserType and Group levels.
  • Enable product customizations at the Client, Product and Group levels.

At the very least, the project will use Firebase for data persistence and project deployment with the possibility of using a relational database management system for data persistence (mySQL or SQL Server). In addition, C#/MVC may be used for a service layer. React/Redux will be used the User Interface and for managing State.

The data model will consist of 14 database tables (or JSON objects, depending on how the data is persisted). There of those are reference tables (lookup tables) and the other 11 are transactional tables.

Beyond the Minimal Viable Product, the following features could be added:

  • Configuration of reporting fields.
  • Configuration of Detail Reports.
  • Configuration of Summary Calculations and Summary Reports.

Business Rules

  • A "Client" is a Globys customer.
  • A "Product" is a container for G3 features, permissions, customizations, etc.
  • "User Types" are 1=admin user, 2=regular user, 3=customer service user.
  • "Groups" are named groupings of Globys customers' customers and their accounts.
  • "Permissions" control what users can do and see in G3 and can be applied at the Client level, to one or more Products, to one or more User Types for each product and to one or more Groups.
  • "Customizations" are used for customizing the behavior and appearance of the application and can be applied at the Client level, to one or more Products and to one or more Groups.

The Universe of Globys G3 Configuration

Globys G3 Product Configuration Diagram

The Globys Client Administration Tool (for Reference)

Globys G3 Client Administration Tool

Component Tree

App
----> Main ("/")
--------> Header
--------> TopNav
--------> Show Client Information ("/showclients")
--------> Add Client Information ("/addclient")
--------> Edit Client Information ("/editclient")
--------> Delete Client Information ("/deleteclient")
--------> Show Products ("/showproducts")
--------> Add Products ("/addproduct")
--------> Edit Products ("/editproduct")
--------> Delete Products ("/deleteproduct")
--------> Configure Permissions ("/configurepermissions")
--------> Configuration Customizations ("/configurecustomizations")
--------> About ("/about")
--------> Error404

Database Tables

Click Here for Details
Table Name Column Name Data Type
clients client_id
nme
encrypt_key
external_id
client_ad_nme
login
password
validation_question_1
validation_question_2
validation_question_3
validation_question_4
validation_question_5
preproc_min
default_language_id
default_currency_id
default_currency_use_symbol
default_email_address
public_encryption_key
public_encryption_type
user_acct_flg
pwd_history_count
min_pwd_days
max_pwd_days
sso_redirect_url
cat_acct_search_type
sso_redirect_querystring_flg
smallint
nvarchar(80)
nvarchar(510)
int
nvarchar(60)
nvarchar(100)
nvarchar(100)
nvarchar(2000)
nvarchar(2000)
nvarchar(2000)
nvarchar(2000)
nvarchar(2000)
int
tinyint
smallint
tinyint
nvarchar(160)
nvarchar(8000)
smallint
tinyint
int
int
int
nvarchar(2048)
tinyint
tinyint
products product_id
product_name
client_id
display_name
display_order
display_help_text
product_code
piv_flg
int
nvarchar(8000)
smallint
nvarchar(8000)
tinyint
nvarchar(8000)
nvarchar(8000)
tinyint
groups group_id
group_name
client_id
viewable_flg
group_priority
int
nvarchar(8000)
smallint
tinyint
smallint
permissions permission_id
nme
type
user_flg
permission_category_id
description
permission_description
smallint
nvarchar(8000)
nchar
bit
int
nvarchar(8000)
nvarchar(8000)
permission_categories permission_category_id
permission_category_name
display_order
int
nvarchar(8000)
int
client_permission client_id
permission_id
smallint
smallint
product_permission product_id
permission_id
int
smallint
product_permission_user_type product_id
permission_id
user_type
int
int
int
group_permission group_id
permission_id
int
smallint
custom_values custom_value_id
custom_type_id
description
char_value
num_value
default_value
int
smallint
nvarchar(8000)
nvarchar(8000)
numeric
bit
custom_types custom_type_id
custom_type_name
custom_input_type
custom_type_category_id
custom_type_description
smallint
nvarchar(8000)
nchar
int
nvarchar(8000)
client_custom_value client_id
custom_value_id
custom_type_id
smallint
int
smallint
product_custom_value product_id
custom_value_id
custom_type_id
int
int
smallint
group_custom_value group_id
custom_value_id
custom_type_id
intersect_custom_value_id
int
int
smallint
int

Technical Features

  • Bootstrap
  • React
  • Eslint

Known Bugs

No Known Bugs.

Project Plan

1) Develop technical architecture.
2) Set up the project.
Click Here for Details This assumes that node is already installed, but verify with "node -v".

1) Setup the project by executing the following commands at the bash prompt:

$ npm install bootstrap --save

2) Populate .gitignore with:

node_modules/
.DS_Store
dist/
.env

3) Develop mocked-up screenshots to show the UI model.
4) Obtain reference data from a Globys database.
5) Develop mock data for the 11 transactional tables.
6) Create components for showing, adding, editing and deleting data.

Setup and Use

Required Packages

Click Here for Required Packages
  • babel-core 6.24.1
  • babel-loader 7.0.0
  • babel-preset-es2015 6.24.1
  • babel-preset-react 6.24.1
  • bootstrap 4.3.1
  • eslint 4.13.1
  • eslint-loader 2.1.2
  • eslint-plugin-react 7.12.4
  • file-loader 1.1.6
  • html-webpack-plugin 2.29.0
  • jest 20.0.4
  • prop-types 15.5.10
  • react 15.5.4
  • react-dom 15.5.4
  • react-hot-loader 3.0.0-beta.7
  • react-redux 5.0.6
  • react-router-dom 4.0.0
  • redux 3.7.2
  • styled-jsx 3.2.1
  • url-loader 0.6.2
  • uuid 3.2.1
  • webpack 3.4.0
  • webpack-dev-server 2.5.0

Download the Repository

  1. Clone this repository:

    $ git clone https://github.com/MarkStrickland562/GlobysG3ConfigurationTool.git

Install, build and run the application

  1. Navigate to the application root directory:

    $ cd GlobysG3ConfigurationTool

  2. Install the required packages:

    $ npm install

  3. Run the application:

    $ npm run start

    Then navigate to localhost:8080 in the browser.

  4. To lint the code:

    $ npm run lint-fix

Built With

  • Windows 10.1
  • iMac OS X El Capitan 10.11.6
  • VSCode

Support and contact details

If you have any feedback or concerns, please contact Mark Strickland.

License

This project is licensed under the MIT License. Copyright (C) 2019 Mark Strickland. All Rights Reserved.

MIT License

Copyright (c) 2019 Mark Strickland

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.