diff --git a/Taskfile.yml b/Taskfile.yml
index f1441ff..8acacfb 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -83,7 +83,7 @@ tasks:
GI_DEVELOPMENT: false
# TZ: "America/New_York"
cmds:
- - fiber dev
+ - fiber dev -D="app,frontend,dist"
run-all:
deps:
diff --git a/app/log/goInventorize.log b/app/log/goInventorize.log
index bc73f94..0a05187 100644
--- a/app/log/goInventorize.log
+++ b/app/log/goInventorize.log
@@ -1,284 +1,82 @@
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.35260e4f.chunk.js"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js.map"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.35260e4f.chunk.js.map"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"401", "method":"GET", "path":"//config"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/favicon.ico"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/manifest.json"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/logo192.png"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"404", "method":"GET", "path":"//config"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.35260e4f.chunk.js"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js.map"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.35260e4f.chunk.js.map"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"404", "method":"GET", "path":"//config"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/favicon.ico"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/manifest.json"}
-{"logtype":"webserver", "pid":"1532", "requestid":"", "status":"200", "method":"GET", "path":"/logo192.png"}
-{"level":"info","time":"2021-08-28T22:36:36-04:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-08-28T22:36:36-04:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-08-28T22:36:36-04:00","message":"Database and Config loaded, starting webserver..."}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.ebe69ffb.chunk.js"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js.map"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.ebe69ffb.chunk.js.map"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/favicon.ico"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/manifest.json"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/logo192.png"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.ebe69ffb.chunk.js"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/2.2faaed84.chunk.js.map"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/static/js/main.ebe69ffb.chunk.js.map"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/favicon.ico"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/manifest.json"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/logo192.png"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"27380", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"info","time":"2021-08-29T15:05:54-04:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-08-29T15:05:54-04:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-08-29T15:05:54-04:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-08-29T15:05:55-04:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-08-29T15:05:55-04:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-08-29T15:05:55-04:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-13T18:34:18-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-13T18:34:18-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-13T18:34:18-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-13T22:11:00-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-13T22:11:00-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-13T22:11:00-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-13T22:11:01-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-13T22:11:01-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-13T22:11:01-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-14T14:26:43-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T14:26:43-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T14:26:43-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-14T14:26:46-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T14:26:46-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T14:26:46-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-14T18:43:36-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T18:43:36-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T18:43:36-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-14T20:29:03-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T20:29:03-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T20:29:03-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-14T20:32:07-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T20:32:07-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T20:32:07-05:00","message":"Database and Config loaded, starting webserver..."}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"30264", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"info","time":"2021-11-14T21:04:27-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T21:04:27-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T21:04:27-05:00","message":"Database and Config loaded, starting webserver..."}
-{"logtype":"webserver", "pid":"22768", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"22768", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"22768", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"22768", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"info","time":"2021-11-14T21:25:49-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T21:25:49-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T21:25:49-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-11-14T21:25:50-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-11-14T21:25:50-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-11-14T21:25:50-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T21:33:50-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T21:33:50-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T21:33:50-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T21:43:38-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T21:43:38-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:true UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T21:43:38-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T22:23:34-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T22:23:34-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T22:23:34-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T22:24:24-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T22:24:24-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T22:24:24-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T22:25:14-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T22:25:14-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T22:25:14-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T22:26:43-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T22:26:43-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T22:26:43-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T22:28:59-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T22:28:59-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T22:28:59-05:00","message":"Database and Config loaded, starting webserver..."}
-{"level":"info","time":"2021-12-08T22:31:41-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T22:31:41-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T22:31:41-05:00","message":"Database and Config loaded, starting webserver..."}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-08T22:32:18-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:34:40-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:41:06-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:41:32-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:41:48-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:50:22-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:50:32-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:50:51-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:54:01-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/Location1/testCover.png"}
-{"logtype":"webserver", "pid":"9108", "requestid":"", "status":"200", "method":"GET", "path":"/favicon.ico"}
-{"level":"info","time":"2021-12-08T22:54:57-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-08T22:54:57-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-08T22:54:57-05:00","message":"Database and Config loaded, starting webserver..."}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/photos/locations/Location1/testCover.png"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/favicon.ico"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-08T22:55:08-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:56:17-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-08T22:56:23-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T22:58:22-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-08T22:58:26-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T23:01:05-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-08T23:01:39-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T23:03:09-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T23:04:22-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T23:04:45-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-08T23:06:26-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"500", "method":"GET", "path":"/photos/locations//"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"304", "method":"GET", "path":"/photos/locations/Location1/testCover.png"}
-{"level":"debug","time":"2021-12-08T23:07:31-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"500", "method":"GET", "path":"/photos/locations//"}
-{"level":"debug","time":"2021-12-08T23:07:55-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-08T23:08:02-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-08T23:10:33-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"67756", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"info","time":"2021-12-09T18:40:09-05:00","message":"Configuration loaded successfully..."}
-{"level":"debug","time":"2021-12-09T18:40:09-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
-{"level":"info","time":"2021-12-09T18:40:09-05:00","message":"Database and Config loaded, starting webserver..."}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-09T18:46:50-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-09T18:47:19-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-09T18:48:41-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-09T18:50:59-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-09T18:51:20-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-09T18:51:42-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-09T18:52:35-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-09T18:55:19-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-09T18:55:53-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"500", "method":"GET", "path":"/photos/locations//"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"304", "method":"GET", "path":"/photos/locations/Location1/testCover.png"}
-{"level":"debug","time":"2021-12-09T18:56:26-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"500", "method":"GET", "path":"/photos/locations//"}
-{"level":"debug","time":"2021-12-09T18:57:03-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-09T18:57:56-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"500", "method":"GET", "path":"/photos/locations//"}
-{"level":"debug","time":"2021-12-09T18:58:43-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"level":"debug","time":"2021-12-09T18:59:26-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-10T23:01:45-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"304", "method":"GET", "path":"/photos/locations/Location1/testCover.png"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-10T23:19:09-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"level":"debug","time":"2021-12-10T23:19:38-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"level":"debug","time":"2021-12-10T23:19:40-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/config"}
-{"level":"debug","time":"2021-12-10T23:20:15-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"level":"debug","time":"2021-12-10T23:20:40-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"level":"debug","time":"2021-12-10T23:20:42-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"level":"debug","time":"2021-12-10T23:20:56-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
-{"level":"debug","time":"2021-12-10T23:21:01-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png Photos:[./app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png ./app/photos/locations/Location1/2020-05-22 20_57_56-Wwise.png] Rooms:[] Notes:Notes for my location!}]"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"200", "method":"GET", "path":"/locations"}
-{"logtype":"webserver", "pid":"69960", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/testName2/testString2"}
+{"level":"debug","time":"2021-12-27T21:10:13-05:00","message":"Returning Locations: []"}
+{"logtype":"webserver", "pid":"22376", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"level":"info","time":"2021-12-27T21:12:14-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:12:14-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:12:14-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"info","time":"2021-12-27T21:12:18-05:00","message":"Adding new location to database: %!(EXTRA main.Location={0 Location1 ./app/photos/locations/Location1/Location1_cover.png [./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] [] Notes for my location!})"}
+{"level":"debug","time":"2021-12-27T21:12:18-05:00","message":"Adding new location: {0 Location1 ./app/photos/locations/Location1/Location1_cover.png [./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] [] Notes for my location!}"}
+{"logtype":"webserver", "pid":"3604", "requestid":"", "status":"200", "method":"POST", "path":"/api/locations/new"}
+{"level":"debug","time":"2021-12-27T21:12:47-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"3604", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"level":"info","time":"2021-12-27T21:13:38-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:13:38-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:13:38-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"debug","time":"2021-12-27T21:13:42-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"level":"debug","time":"2021-12-27T21:14:11-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/config"}
+{"level":"debug","time":"2021-12-27T21:14:12-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"404", "method":"GET", "path":"/api/photos/locations/Location1/app/photos/locations/Location1/Location1_cover.png"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/config"}
+{"level":"debug","time":"2021-12-27T21:18:27-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"404", "method":"GET", "path":"/api/photos/locations/Location1/app/photos/locations/Location1/Location1_cover.png"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/config"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/config"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/config"}
+{"level":"debug","time":"2021-12-27T21:25:05-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"logtype":"webserver", "pid":"18424", "requestid":"", "status":"404", "method":"GET", "path":"/photos/locations/Location1/app/photos/locations/Location1/Location1_cover.png"}
+{"level":"info","time":"2021-12-27T21:26:49-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:26:49-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:26:49-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"info","time":"2021-12-27T21:27:27-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:27:27-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:27:27-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"info","time":"2021-12-27T21:30:56-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:30:56-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:30:56-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"info","time":"2021-12-27T21:33:30-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:33:30-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:33:30-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"info","time":"2021-12-27T21:34:24-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:34:24-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:34:24-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"error","time":"2021-12-27T21:34:31-05:00","message":"Unable to fetch all rooms at location: field Location not found"}
+{"level":"error","error":"field Location not found","time":"2021-12-27T21:34:31-05:00","message":"Unable to fetch location with id: 1"}
+{"level":"info","time":"2021-12-27T21:34:31-05:00","message":"Deleting location from database: %!(EXTRA main.Location={0 [] [] })"}
+{"level":"error","time":"2021-12-27T21:34:31-05:00","message":"Unable to delete location from database: {%!s(int=0) [] [] } error: not found "}
+{"level":"error","error":"not found","time":"2021-12-27T21:34:31-05:00","message":"Unable to delete location with id: 1"}
+{"logtype":"webserver", "pid":"20316", "requestid":"", "status":"200", "method":"DELETE", "path":"/api/locations/1"}
+{"level":"info","time":"2021-12-27T21:34:47-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:34:47-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:34:47-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"debug","time":"2021-12-27T21:34:48-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"28720", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"level":"error","time":"2021-12-27T21:35:02-05:00","message":"Unable to fetch all rooms at location: field Location not found"}
+{"level":"error","error":"field Location not found","time":"2021-12-27T21:35:02-05:00","message":"Unable to fetch location with id: 1"}
+{"level":"info","time":"2021-12-27T21:35:02-05:00","message":"Deleting location from database: %!(EXTRA main.Location={0 [] [] })"}
+{"level":"error","time":"2021-12-27T21:35:02-05:00","message":"Unable to delete location from database: {%!s(int=0) [] [] } error: not found "}
+{"level":"error","error":"not found","time":"2021-12-27T21:35:02-05:00","message":"Unable to delete location with id: 1"}
+{"logtype":"webserver", "pid":"28720", "requestid":"", "status":"200", "method":"DELETE", "path":"/api/locations/1"}
+{"level":"debug","time":"2021-12-27T21:35:06-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"28720", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"level":"info","time":"2021-12-27T21:36:13-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:36:13-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:36:13-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"error","time":"2021-12-27T21:36:15-05:00","message":"Unable to fetch all rooms at location: field Location not found"}
+{"level":"error","error":"field Location not found","time":"2021-12-27T21:36:15-05:00","message":"Unable to fetch location with id: 1"}
+{"logtype":"webserver", "pid":"21240", "requestid":"", "status":"500", "method":"DELETE", "path":"/api/locations/1"}
+{"level":"info","time":"2021-12-27T21:37:30-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:37:30-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:37:30-05:00","message":"Database and Config loaded, starting webserver..."}
+{"level":"error","time":"2021-12-27T21:38:18-05:00","message":"Unable to fetch all rooms at location: field Location not found"}
+{"logtype":"webserver", "pid":"20368", "requestid":"", "status":"500", "method":"GET", "path":"/api/locations/1"}
+{"level":"debug","time":"2021-12-27T21:38:46-05:00","message":"Returning Locations: [{ID:1 Name:Location1 Description: CoverPhoto:./app/photos/locations/Location1/Location1_cover.png Photos:[./app/photos/locations/Location1/Location1_0.png ./app/photos/locations/Location1/Location1_1.png] Rooms:[] Notes:Notes for my location!}]"}
+{"logtype":"webserver", "pid":"20368", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations"}
+{"level":"info","time":"2021-12-27T21:40:29-05:00","message":"Configuration loaded successfully..."}
+{"level":"debug","time":"2021-12-27T21:40:29-05:00","message":"{Timezone:America/New_York Server:{Port:3500 LocationPhotoDir:./app/photos/locations/} Logger:{Level:debug LoggingFile:./app/log/goInventorize.log} Authentication:{BasicAuth:false UserName:admin Password:password} Development:false}"}
+{"level":"info","time":"2021-12-27T21:40:29-05:00","message":"Database and Config loaded, starting webserver..."}
+{"logtype":"webserver", "pid":"20308", "requestid":"", "status":"200", "method":"GET", "path":"/api/locations/1"}
diff --git a/app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png b/app/photos/locations/Location1/Location1_0.png
similarity index 100%
rename from app/photos/locations/Location1/2020-05-22 22_47_24-ForlornOutcast - Unreal Editor.png
rename to app/photos/locations/Location1/Location1_0.png
diff --git a/app/photos/locations/Location1/testCover.png b/app/photos/locations/Location1/Location1_1.png
similarity index 100%
rename from app/photos/locations/Location1/testCover.png
rename to app/photos/locations/Location1/Location1_1.png
diff --git a/app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png b/app/photos/locations/Location1/Location1_cover.png
similarity index 100%
rename from app/photos/locations/Location1/2020-05-23 11_08_43-Montage_Sword_LHL.png
rename to app/photos/locations/Location1/Location1_cover.png
diff --git a/database.go b/database.go
index 473a35d..408e862 100644
--- a/database.go
+++ b/database.go
@@ -28,12 +28,22 @@ type Room struct {
Notes string
}
-// Item is contained inside a room
+// Cabinet is a containerized area in a room
+type Cabinet struct {
+ ID int `storm:"id, increment"`
+ RoomID int // Room ID that the cabinet is assigned to
+ CoverPhoto string // A "Cover photo" for this item
+ Name string
+ Notes string
+}
+
+// Item is contained inside a room or cabinet
type Item struct {
ID int `storm:"id, increment"`
RoomID int // Room ID that item is assigned to
CoverPhoto string // A "cover photo" for the item
Photos []string // A list of additional photos for the room
+ Count int // If item has duplicates
Name string
Product string
Serial string
@@ -61,23 +71,12 @@ func (s *Server) AddLocation(loc Location) error {
return nil
}
-// AddRoom adds a room to a location
-func (s *Server) AddRoom(room Room) error {
- s.Log.Info().Msgf("Adding new room to location: %s", room)
- err := s.Database.Save(&room)
+// DeleteLocation deletes a location by ID
+func (s *Server) DeleteLocation(loc Location) error {
+ s.Log.Info().Msgf("Deleting location from database: ", loc)
+ err := s.Database.DeleteStruct(&loc)
if err != nil {
- s.Log.Error().Msgf("Unable to add new room to database: %s error: %s", room, err)
- return err
- }
- return nil
-}
-
-// AddItem adds an item to a room
-func (s *Server) AddItem(item Item) error {
- s.Log.Info().Msgf("Adding new item to room: ", item)
- err := s.Database.Save(&item)
- if err != nil {
- s.Log.Error().Msgf("Unable to add new item to room: %s error: %s", item, err)
+ s.Log.Error().Msgf("Unable to delete location from database: %s error: %s ", loc, err)
return err
}
return nil
@@ -93,24 +92,75 @@ func (s *Server) GetLocations() (locations []Location, err error) {
return locations, nil
}
-// GetRoomsAtLocation fetches all the rooms assigned to a location by location ID
-func (s *Server) GetRoomsAtLocation(locID int) error {
- var rooms []Room
- err := s.Database.Find("Location", locID, &rooms)
+// GetLocation fetches a single location
+func (s *Server) GetLocation(locID int) (location Location, err error) {
+ err = s.Database.One("ID", locID, &location)
if err != nil {
s.Log.Error().Msgf("Unable to fetch all rooms at location: %s", err)
+ return location, err
+ }
+ return location, nil
+}
+
+// AddRoom adds a room to a location
+func (s *Server) AddRoom(room Room) error {
+ s.Log.Info().Msgf("Adding new room to location: %s", room)
+ err := s.Database.Save(&room)
+ if err != nil {
+ s.Log.Error().Msgf("Unable to add new room to database: %s error: %s", room, err)
return err
}
return nil
}
-// GetItemsInRoom fetches all of the items assigned to a room
-func (s *Server) GetItemsInRoom(roomID int) error {
- var items []Item
- err := s.Database.Find("Room", roomID, &items)
+// GetAllRooms gets all of the rooms
+func (s *Server) GetAllRooms() (rooms []Room, err error) {
+ s.Log.Info().Msg("Getting all Rooms")
+ err = s.Database.All(&rooms)
if err != nil {
- s.Log.Error().Msgf("Unable to fetch all rooms at location: %s", err)
+ s.Log.Error().Msgf("Unable to fetch all room with error: %s", err)
+ return rooms, err
+ }
+ return rooms, nil
+}
+
+// AddItem adds an item to a room
+func (s *Server) AddItem(item Item) error {
+ s.Log.Info().Msgf("Adding new item to room: ", item)
+ err := s.Database.Save(&item)
+ if err != nil {
+ s.Log.Error().Msgf("Unable to add new item to room: %s error: %s", item, err)
return err
}
return nil
}
+
+// GetRoomsAtLocation fetches all the rooms assigned to a location by location ID
+func (s *Server) GetRoomsAtLocation(locID int) (rooms []Room, err error) {
+ err = s.Database.Find("LocationID", locID, &rooms)
+ if err != nil {
+ s.Log.Error().Msgf("Unable to fetch all rooms at location: %s", err)
+ return nil, err
+ }
+ return rooms, nil
+}
+
+// GetCabinetsInRoom fetches all of the cabinets assigned to a room
+func (s *Server) GetCabinetsInRoom(roomID int) (cabinets []Cabinet, err error) {
+ err = s.Database.Find("Room", roomID, &cabinets)
+ if err != nil {
+ s.Log.Error().Msgf("Unable to fetch all cabinets in room: %s", err)
+ return nil, err
+ }
+ return cabinets, nil
+}
+
+// GetItemsInRoom fetches all of the items assigned to a room
+func (s *Server) GetItemsInRoom(roomID int) (items []Item, err error) {
+ err = s.Database.Find("Room", roomID, &items)
+ if err != nil {
+ s.Log.Error().Msgf("Unable to fetch all items in room: %s", err)
+ return nil, err
+ }
+ return items, nil
+}
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index f4e6bac..6e958e0 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -8000,9 +8000,9 @@
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
},
"history": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/history/-/history-5.1.0.tgz",
- "integrity": "sha512-zPuQgPacm2vH2xdORvGGz1wQMuHSIB56yNAy5FnLuwOwgSYyPKptJtcMm6Ev+hRGeS+GzhbmRacHzvlESbFwDg==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz",
+ "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==",
"requires": {
"@babel/runtime": "^7.7.6"
}
@@ -14161,20 +14161,30 @@
"integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
},
"react-router": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.0.2.tgz",
- "integrity": "sha512-8/Wm3Ed8t7TuedXjAvV39+c8j0vwrI5qVsYqjFr5WkJjsJpEvNSoLRUbtqSEYzqaTUj1IV+sbPJxvO+accvU0Q==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz",
+ "integrity": "sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==",
"requires": {
- "history": "^5.1.0"
+ "history": "^5.2.0"
+ },
+ "dependencies": {
+ "history": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz",
+ "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==",
+ "requires": {
+ "@babel/runtime": "^7.7.6"
+ }
+ }
}
},
"react-router-dom": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.2.tgz",
- "integrity": "sha512-cOpJ4B6raFutr0EG8O/M2fEoyQmwvZWomf1c6W2YXBZuFBx8oTk/zqjXghwScyhfrtnt0lANXV2182NQblRxFA==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.1.tgz",
+ "integrity": "sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA==",
"requires": {
- "history": "^5.1.0",
- "react-router": "6.0.2"
+ "history": "^5.2.0",
+ "react-router": "6.2.1"
}
},
"react-scripts": {
diff --git a/frontend/package.json b/frontend/package.json
index 3b67d70..a84bd0a 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -18,7 +18,8 @@
"react-dom": "^17.0.2",
"react-icons": "^4.3.1",
"react-jss": "^10.9.0",
- "react-router-dom": "^6.0.2",
+ "react-router": "^6.2.1",
+ "react-router-dom": "^6.2.1",
"react-scripts": "4.0.3",
"web-vitals": "^2.1.2"
},
diff --git a/frontend/src/App.js b/frontend/src/App.js
index 007ec48..489593c 100644
--- a/frontend/src/App.js
+++ b/frontend/src/App.js
@@ -1,11 +1,13 @@
import React, {useState, useEffect, createContext} from 'react';
import HomePage from './components/pages/HomePage';
-import Locations from './components/pages/Locations'
+import Locations from './components/pages/Locations';
+import RoomsPage from './components/pages/RoomsPage';
+import { Routes, Route, useNavigate } from "react-router-dom";
import { Modal, Button, Text, Group, TextInput, Loader, AppShell } from '@mantine/core';
import { useDebouncedValue, useLocalStorageValue } from '@mantine/hooks';
import { useNotifications } from '@mantine/notifications';
-import { backendAPI } from './services/backend-api';
+import { backendAPI, defaultURLS } from './services/backend-api';
import SideBar from './components/SideBar';
@@ -21,19 +23,22 @@ function App() {
// Main nav/sidebar appshell openend
const [shellOpened, setShellOpened] = useState(false)
const [isLoading, setIsLoading] = useState(true)
- const [currentPage, setCurrentPage] = useState("home")
+ const [currentPage, setCurrentPage] = useState({"path": "home", "id": -1})
const [serverConfig, setServerConfig] = useState({})
const notifications = useNotifications();
+ const navigate = useNavigate();
useEffect(() => {
+ navigate("/")// Reset to homepage on new load anywhere in the app
setIsLoading(true)
async function fetchSettings() {
backendAPI.get('/config').then(results => {
- results.data.baseURL = results.config.baseURL
+ // console.log("FULL RESULTS: ", results.config.baseURL)
+ results.data.baseURL = defaultURLS.baseURL
console.log("CONFIG: ", results.data)
setServerConfig(results.data)
notifications.showNotification({
@@ -58,14 +63,22 @@ function App() {
}, [])
+ useEffect(() => {
+ console.log("Page Change!", currentPage)
+
+ }, [currentPage])
+
function showPage() {
- switch (currentPage) {
+ switch (currentPage.path) {
case "home":
return
case "locations":
- return
-
+ console.log("RETURNING LOCATIONS: ", currentPage)
+ return
+ case "rooms":
+ console.log("RETURNING ROOMS: ", currentPage)
+ return
default:
break;
}
@@ -80,7 +93,12 @@ function App() {
navbar={}
header={}
>
- {showPage()}
+
+ } />
+ } />
+ } />
+
+
diff --git a/frontend/src/components/SideBar.js b/frontend/src/components/SideBar.js
index a0e2c96..c6e5c1c 100644
--- a/frontend/src/components/SideBar.js
+++ b/frontend/src/components/SideBar.js
@@ -1,5 +1,6 @@
import React, {useState } from 'react';
import { Navbar, Text, Group, ThemeIcon, Button, UnstyledButton } from '@mantine/core';
+import { Link } from 'react-router-dom';
import { createStyles } from '@mantine/styles';
import { BsMap } from 'react-icons/bs'
@@ -37,10 +38,6 @@ function SideBar(props) {
const { classes } = useStyles();
const [activePage, setActivePage] = useState("")
- function handlePageChange(page) {
- props.setCurrentPage(page)
- setActivePage(page)
- }
return (
- handlePageChange("locations")} >
+ } variant="white" className={activePage === "locations" ? classes.activeButton : classes.button} component={Link} to="/locations" onClick={() => setActivePage("locations")} >
+ Locations
+
+
+ {/*
Locations
-
- handlePageChange("rooms")} >
+ */}
+ setActivePage("rooms")} >
Rooms
diff --git a/frontend/src/components/pages/Locations.js b/frontend/src/components/pages/Locations.js
index 55cd45a..895a2a3 100644
--- a/frontend/src/components/pages/Locations.js
+++ b/frontend/src/components/pages/Locations.js
@@ -6,7 +6,7 @@ import { useNotifications } from '@mantine/notifications';
import { backendAPI } from '../../services/backend-api';
-function LocationsPage() {
+function LocationsPage(props) {
// const [opened, setOpened] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const [locations, setLocations] = useState([])
@@ -16,10 +16,12 @@ function LocationsPage() {
const notifications = useNotifications();
useEffect(() => {
+ console.log("LOADING LOCATIONS PAGE!")
setIsLoading(true)
async function fetchSettings() {
backendAPI.get('/locations').then(results => {
console.log("CONFIG IN LOCATIONS: ", serverConfig)
+ console.log("LOCATIONS: ", results.data)
setLocations(results.data)
setIsLoading(false)
}).catch(err => {
@@ -42,9 +44,10 @@ function LocationsPage() {
return (
<>
{ isLoading && }
+ Locations
{ locations.map((location, idx) =>
-
+ {props.setCurrentPage({"path": "rooms", "id": location.ID})}} shadow="sm" padding="md">
{location.CoverPhoto ? : No Photo}
diff --git a/frontend/src/components/pages/RoomsPage.js b/frontend/src/components/pages/RoomsPage.js
new file mode 100644
index 0000000..137c15b
--- /dev/null
+++ b/frontend/src/components/pages/RoomsPage.js
@@ -0,0 +1,71 @@
+import React, {useState, useEffect, useContext, createContext} from 'react';
+import { APIContext } from '../../App';
+import { Text, Loader, Center, Card, Image, Badge, Button, SimpleGrid, Group } from '@mantine/core'
+import { useNotifications } from '@mantine/notifications';
+
+import { backendAPI } from '../../services/backend-api';
+
+
+function RoomsPage(props) {
+ // const [opened, setOpened] = useState(false);
+ const [isLoading, setIsLoading] = useState(false);
+ const [rooms, setLocations] = useState([])
+
+ const serverConfig = useContext(APIContext);
+
+ const notifications = useNotifications();
+
+ useEffect(() => {
+ setIsLoading(true)
+ async function fetchSettings() {
+ let url = `/rooms`
+ console.log("CURRENT PAGE IN ROOMS: ", props.id)
+ if (props.id !== -1) {
+ url = `/rooms/${props.id}`
+ }
+ backendAPI.get(url).then(results => {
+ console.log("CONFIG IN LOCATIONS: ", serverConfig)
+ setLocations(results.data)
+ setIsLoading(false)
+ }).catch(err => {
+ notifications.showNotification({
+ title: 'Backend Notice',
+ message: `Failed to fetch rooms from backend! ${err}`,
+ autoClose: false,
+ color: "red",
+ })
+ setIsLoading(false)
+ })
+
+ }
+ fetchSettings();
+
+
+ }, [])
+
+
+ return (
+ <>
+ { isLoading && }
+
+ { rooms.map((room, idx) =>
+ {props.setCurrentPage({"path": "rooms", "id": room.ID})}} shadow="sm" padding="md">
+
+ {room.CoverPhoto ? : No Photo}
+
+
+ {room.Name}
+ {/*
+ On Sale
+ */}
+
+ {room.Description}
+
+ )}
+
+ >
+
+ );
+}
+
+export default RoomsPage;
\ No newline at end of file
diff --git a/frontend/src/index.js b/frontend/src/index.js
index 0143100..1244e56 100644
--- a/frontend/src/index.js
+++ b/frontend/src/index.js
@@ -3,6 +3,7 @@ import ReactDOM from 'react-dom';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { NotificationsProvider } from '@mantine/notifications';
+import { BrowserRouter } from 'react-router-dom';
//setup api
//const backendPort = process.env.REACT_APP_BACKEND_PORT
@@ -10,8 +11,10 @@ import { NotificationsProvider } from '@mantine/notifications';
ReactDOM.render(
-
-
+
+
+
+
,
document.getElementById('root')
diff --git a/frontend/src/services/backend-api.js b/frontend/src/services/backend-api.js
index cbcb1df..7b1af17 100644
--- a/frontend/src/services/backend-api.js
+++ b/frontend/src/services/backend-api.js
@@ -2,12 +2,19 @@ import axios from 'axios';
let baseURL = ""
+let baseAPIURL = "/api"
if (process.env.NODE_ENV !== 'production') {
baseURL = 'http://localhost:3500'
+ baseAPIURL = 'http://localhost:3500/api'
+}
+
+export const defaultURLS = {
+ baseURL: baseURL,
+ baseAPIURL: baseAPIURL
}
export const backendAPI = axios.create({
- baseURL: baseURL
+ baseURL: baseAPIURL
})
diff --git a/handlers.go b/handlers.go
index 7a1bc10..769125c 100644
--- a/handlers.go
+++ b/handlers.go
@@ -5,6 +5,7 @@ import (
"io"
"os"
"path/filepath"
+ "strconv"
"github.com/gofiber/fiber/v2"
)
@@ -30,18 +31,19 @@ func (s *Server) AddNewLocationHandler(c *fiber.Ctx) error {
}
locAdditionalPhotos := form.File["AdditionalPhotos"]
// Create the directory for this location to store the photos
- err = os.Mkdir(s.Config.Server.LocationPhotoDir+locName, 0755)
+ err = os.MkdirAll(s.Config.Server.LocationPhotoDir+locName, 0755)
if err != nil {
return err
}
var photoPathsList []string
- for _, photo := range locAdditionalPhotos {
+ for i, photo := range locAdditionalPhotos {
src, err := photo.Open()
if err != nil {
return err
}
defer src.Close()
- photoPath := filepath.ToSlash(s.Config.Server.LocationPhotoDir + locName + "/" + photo.Filename)
+
+ photoPath := filepath.ToSlash(s.Config.Server.LocationPhotoDir + locName + "/" + locName + "_" + strconv.Itoa(i) + filepath.Ext(photo.Filename))
photoPathsList = append(photoPathsList, photoPath)
photoData, err := io.ReadAll(src)
if err != nil {
@@ -53,7 +55,7 @@ func (s *Server) AddNewLocationHandler(c *fiber.Ctx) error {
locNotes := form.Value["Notes"][0]
// saving the uploaded image to our images dir
- coverImagePath := filepath.ToSlash(s.Config.Server.LocationPhotoDir + locName + "/" + locPhoto.Filename)
+ coverImagePath := filepath.ToSlash(s.Config.Server.LocationPhotoDir + locName + "/" + locName + "_cover" + filepath.Ext(locPhoto.Filename))
src, err := locPhoto.Open()
if err != nil {
return err
@@ -78,6 +80,7 @@ func (s *Server) AddNewLocationHandler(c *fiber.Ctx) error {
if err != nil {
return err
}
+ s.Log.Debug().Msgf("Adding new location: %v", newLocation)
return c.Status(fiber.StatusOK).SendString(fmt.Sprintf("New Location Created! %s", newLocation.Name))
}
@@ -88,29 +91,59 @@ func (s *Server) GetAllLocationsHandler(c *fiber.Ctx) error {
return err
}
s.Log.Debug().Msgf("Returning Locations: %+v", locations)
- testLoc := Location{
- ID: 1,
- Description: "This is a description of the location",
- Name: "Location1",
- CoverPhoto: "testCover.png", // A "cover photo" for the location
- Notes: "Notes String",
+ return c.Status(fiber.StatusOK).JSON(locations)
+}
+
+func (s *Server) GetSingleLocationHandler(c *fiber.Ctx) error {
+ locID, err := c.ParamsInt("locID")
+ if err != nil {
+ return err
}
- testLoc2 := Location{
- ID: 2,
- Description: "This is a description of the location2",
- Name: "testName2",
- CoverPhoto: "testString2", // A "cover photo" for the location
- Notes: "Notes String2",
+ location, err := s.GetLocation(locID)
+ if err != nil {
+ return err
}
- var locArray [6]Location
- locArray[0] = testLoc
- locArray[1] = testLoc2
- fmt.Println("Returning TestLoc: ", locArray)
- return c.Status(fiber.StatusOK).JSON(locArray)
+ fmt.Println("Returning A single location: ", location)
+ return c.Status(fiber.StatusOK).JSON(location)
}
func (s *Server) DeleteLocationHandler(c *fiber.Ctx) error {
- locID := c.Params("locID")
+ locID, err := c.ParamsInt("locID")
+ if err != nil {
+ return err
+ }
+ location, err := s.GetLocation(locID)
+ if err != nil {
+ s.Log.Err(err).Msgf("Unable to fetch location with id: %d", locID)
+ return err
+ }
+ err = s.DeleteLocation(location)
+ if err != nil {
+ s.Log.Err(err).Msgf("Unable to delete location with id: %d", locID)
+ return err
+ }
fmt.Println("LocID: ", locID)
- return c.Status(fiber.StatusOK).JSON(locID)
+ return c.Status(fiber.StatusOK).SendString(fmt.Sprintf("Location Deleted! %d", locID))
+}
+
+// GetAllRoomsHandler gets all of the rooms in the db
+func (s *Server) GetAllRoomsHandler(c *fiber.Ctx) error {
+ rooms, err := s.GetAllRooms()
+ if err != nil {
+ return err
+ }
+ return c.Status(fiber.StatusOK).JSON(rooms)
+}
+
+func (s *Server) GetRoomsAtLocationHandler(c *fiber.Ctx) error {
+ locID, err := c.ParamsInt("locID")
+ if err != nil {
+ return err
+ }
+ rooms, err := s.GetRoomsAtLocation(locID)
+ fmt.Println("ROOMS: ", rooms)
+ if err != nil {
+ return err
+ }
+ return c.Status(fiber.StatusOK).JSON(rooms)
}
diff --git a/main.go b/main.go
index 422220a..e63f25e 100644
--- a/main.go
+++ b/main.go
@@ -85,7 +85,7 @@ func main() {
return c.SendString("GoInventorize Backend Hello Route!")
})
// Unauthenticated config route to fetch the config
- server.WebServer.Get("/config", server.GetServerConfig)
+ server.WebServer.Get("api/config", server.GetServerConfig)
// Setup our basic authentication if defined
if server.Config.Authentication.BasicAuth {
app.Use(basicauth.New(basicauth.Config{
@@ -95,9 +95,13 @@ func main() {
}))
}
// Location Routes
- server.WebServer.Get("/locations", server.GetAllLocationsHandler)
- server.WebServer.Post("/locations/new", server.AddNewLocationHandler)
- server.WebServer.Delete("/locations/:locID", server.DeleteLocationHandler)
+ server.WebServer.Get("/api/locations", server.GetAllLocationsHandler)
+ server.WebServer.Get("/api/locations/:locID", server.GetSingleLocationHandler)
+ server.WebServer.Post("api/locations/new", server.AddNewLocationHandler)
+ server.WebServer.Delete("api/locations/:locID", server.DeleteLocationHandler)
+ // Room Routes
+ server.WebServer.Get("/api/rooms", server.GetAllRoomsHandler)
+ server.WebServer.Get("/api/rooms/:locID", server.GetRoomsAtLocationHandler)
fmt.Println("Everything ready, starting server! ", fmt.Sprintf(":%s", server.Config.Server.Port))
server.WebServer.Listen(fmt.Sprintf(":%s", server.Config.Server.Port))
}