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.
- 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.
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
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 |
- Bootstrap
- React
- Eslint
No Known Bugs.
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
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
-
Clone this repository:
$ git clone https://github.com/MarkStrickland562/GlobysG3ConfigurationTool.git
-
Navigate to the application root directory:
$ cd GlobysG3ConfigurationTool
-
Install the required packages:
$ npm install
-
Run the application:
$ npm run start
Then navigate to localhost:8080 in the browser.
-
To lint the code:
$ npm run lint-fix
- Windows 10.1
- iMac OS X El Capitan 10.11.6
- VSCode
If you have any feedback or concerns, please contact Mark Strickland.
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.