diff --git a/.gitignore b/.gitignore index f97cf83..7352bae 100644 --- a/.gitignore +++ b/.gitignore @@ -151,3 +151,4 @@ dist backend-0.1.3.zip BulkForecastTemplate +BulkOrdersTemplate diff --git a/README.md b/README.md index d1e7f32..c281894 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,173 @@ # lstV2 -Logistics Support Tool complete rewrite -the rewrite was/is needed due to the learning of all new things over the course of creating this and tools used that the app as become so spagatti its a mess \ No newline at end of file +Logistics Support Tool V2 + +A support tool to alpla prod please see below for install. + +# Install + +## Files needed to be downloaded before install. + +### To run the server + +- [PostgresSQL](https://www.postgresql.org/download/windows/) - current version using is 17 +- [NodeJS](https://nodejs.org) +- [NSSM](https://nssm.cc/) + +### To manage the server + +- [VSCODE](https://code.visualstudio.com/) +- [Postman](https://www.postman.com/downloads/) + +## Creating directories needed + +- Create a new folder where we will host the server files. + - Copy the nssm.exe into this folder +- Copy the build files to the server (only needed for intial install). + - This will house all the compiles and minified files needed to start the server up, this includes the frontend. +- Save the nssm.exe into this folder as well, this will be used to control the service. + +## Do the intial install + +### DB instal setup + +1. Install postgres +2. Open pgAdmin +3. create a new Database named lst_db + +### Intial server setup + +1. Open VSCode and navigate to the folder where you extracted the files. +2. Click trusted when it pops up. +3. Open a terminal window inside vscode. +4. Run the install script this will install all dependaceys needed as well as do all the database migrations + +```bash +npm run prodinstall +``` + +Next we want to do an intial build for the db + +```bash +npm run build +``` + +### Create the .env file + +In the root of the folder create a new .env file +add in the below and change each setting area that says change me to something that suits your needs + +```env +# PORTS +PROD_PORT=4000 +# To keep it all simple we will pass VITE to the ports that are used on both sides. +VITE_SERVER_PORT=4000 + +# logLevel +LOG_LEVEL=info +# Auth stuff +SALTING=12 +SECRET=CHANGEME +JWT_SECRET=CHANGEME +JWT_REFRESH_SECRET=CHANGEME + +# Expire info plus refresh change as needed +JWT_EXPIRES=60 +JWT_REFRESH_THRESHOLD=30 +JWT_ACCESS_EXPIRATION="1h" +JWT_REFRESH_EXPIRATION="7d" + +# this code will need to be used when a user needs to have access to everything. +SECRETOVERRIDECODE="supersecretKey" + +# Database url - please change the password if this is all you changed +DATABASE_URL="postgresql://postgres:PASSWORD@localhost:5432/lst_db" + +# This is for usday1 restrictions with the lgvs and customer constraints. +FIFO=100 +MAXLOTS=3 +``` + +### Run the start command to get all the basic settings and modules installed + +1. Run the below + +```bash +npm start +``` + +This command will start up the server and seed the database. + +- Settings will be set here. +- All modules will be added. + +2. Press CTRL + C to stop the server. +3. Reopen postgres and review the settings make the changes to match the server your going to be running in. + - Change the server + - change the dbServer + - change plantToken + - then the remaining settings confirm if you need on or want to leave as default. + +### Creating first user. + +1. Start the server back up. + +```bash +npm start +``` + +2. Open http://[SERVER]:[PORT]/api/docs or postman and create a user. + - Please do not try to manually enter a new user this is due to how the password is hashed, as well as setting systemAdmin for the first user. + - Change the server and port to what you changed in the DB. +3. Stop the server again with CTRL + C. + +### Running as a serivice. + +You want to CD into the scripts folder. + +```bash +cd .\dist\server\scripts\ +``` + +Next use the example command below to get the service up and running. + +- Options legend + - serviceName = not recommended to change to reduce issues with the update process + - option = use install for the install, but you can use this script later to stop, start, restart the service. + - appPath = where did you extract the server files + - description = no need to change this unless you want it to be something else + - command = do not change this unless you know what your doing and really need to change this. + +```powershell +.\services.ps1 -serviceName "LSTV2" -option "install" -appPath "E:\LST\lstV2" -description "Logistics Support Tool V2" -command "run start" +``` + +### Adding servers to the mix to update on from the front end + +you will need to add your servers into the serverData.json. +when the server starts up it will look at this file and make changes as needed. +below is an example of the server + +```JSON +{ + "sName": "Kansas City", + "serverDNS": "usksc1vms006", + "plantToken": "usksc1", + "idAddress": "10.42.9.26", + "greatPlainsPlantCode": "85", + "streetAddress": "1800 E 94th St Suite 300", + "cityState": "Kansas City, MO", + "zipcode": "64131", + "contactEmail": "example@example.com", + "contactPhone": "555-555-5555", + "customerTiAcc": "ALPL01KCINT", + "lstServerPort": "4000", + "active": false, + "serverLoc": "E:\\LST\\lstv2", + "oldVersion": "E:\\LST\\lst_backend", + "shippingHours": "[{\"early\": \"06:30\", \"late\": \"23:00\"}]", + "tiPostTime": "[{\"from\": \"24\", \"to\": \"24\"}]", + "otherSettings": [{ "specialInstructions": "" }] +} + +```