From 5732fe17de683881911d5a96c86e708e1fdd9756 Mon Sep 17 00:00:00 2001 From: Olek Date: Sat, 6 Dec 2025 14:45:23 +0100 Subject: [PATCH] Added register page, email field, finished login + register UI, reduced the number of templates generated. --- .gitignore | 3 +- AppServer/.env | 12 +- AppServer/docker-compose.yml | 17 ++ AppServer/src/main.go | 165 ++++++++++----- AppServer/src/serder/serder.go | 64 ++++-- AppServer/src/uplink.go | 136 ++++++++++++ AppServer/tarball.tar.gz | Bin 41930 -> 43199 bytes WebApp/Dockerfile | 6 +- WebApp/Makefile | 20 +- WebApp/build/stylesheet.css | 2 - WebApp/docker-compose.yml | 2 + WebApp/src/layouts/components/footer.tmpl | 2 - WebApp/src/layouts/components/meta.tmpl | 5 +- WebApp/src/layouts/components/navbar.tmpl | 197 ++++++++++++------ WebApp/src/layouts/components/websocket.tmpl | 4 +- WebApp/src/layouts/pages/home.tmpl | 50 ++++- WebApp/src/layouts/pages/index.tmpl | 20 +- WebApp/src/layouts/pages/login.tmpl | 49 ++--- WebApp/src/layouts/pages/register.tmpl | 40 ++++ WebApp/src/layouts/static/Gorak_logo.svg | 133 ++++++++++++ .../fonts/Inter/InterVariable-Italic.woff2 | Bin 0 -> 387976 bytes .../static/fonts/Inter/InterVariable.woff2 | Bin 0 -> 352240 bytes WebApp/src/layouts/static/styles/global.css | 190 +++++++++++------ .../src/layouts/static/styles/stylesheet.css | 2 +- WebApp/src/main/main.go | 46 ++-- WebApp/tailwind.config.js | 8 + WebApp/tarball.tar.gz | Bin 281404 -> 283760 bytes 27 files changed, 889 insertions(+), 284 deletions(-) create mode 100644 AppServer/src/uplink.go delete mode 100644 WebApp/build/stylesheet.css create mode 100644 WebApp/src/layouts/pages/register.tmpl create mode 100644 WebApp/src/layouts/static/Gorak_logo.svg create mode 100644 WebApp/src/layouts/static/fonts/Inter/InterVariable-Italic.woff2 create mode 100644 WebApp/src/layouts/static/fonts/Inter/InterVariable.woff2 create mode 100644 WebApp/tailwind.config.js diff --git a/.gitignore b/.gitignore index 049f0f5..fab81eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -WebApp/node_modules \ No newline at end of file +WebApp/node_modules +Misc \ No newline at end of file diff --git a/AppServer/.env b/AppServer/.env index 4215f1d..e410c20 100755 --- a/AppServer/.env +++ b/AppServer/.env @@ -5,10 +5,6 @@ DB_PASSWORD=1234 DB_HOST=pagerino_db DB_NAME=pager_data -# App server specific settings -# === Chirpstack API -CHIRP_API_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjaGlycHN0YWNrIiwiaXNzIjoiY2hpcnBzdGFjayIsInN1YiI6IjI3YzI5Y2M2LTdjMTUtNDI5Yy1iMjBmLTczNzliZWYzYTI1ZCIsInR5cCI6ImtleSJ9.RsMPIGgPaGluBllRz0Ma_EthxUj3xM9pTPy_uUEAbvk - # === MQTT broker settings MQTT_ADDRESS=ssl://mosquitto:8883 MQTT_CLIENT_ID=app-server @@ -16,7 +12,12 @@ MQTT_QOS=0 # This App's ID in Chirpstack # + matches all IDs # # matches all IDs and all(!) subtopics -APP_ID=d6ccd2ad-0cf7-46ab-8618-7a5a14b8676d +#APP_ID=d6ccd2ad-0cf7-46ab-8618-7a5a14b8676d +APP_ID=188c5d25-2d6b-43e3-aaf3-07dd0a8c386e + +CHIRP_ADDRESS=chirpstack:8080 +CHIRP_API_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjaGlycHN0YWNrIiwiaXNzIjoiY2hpcnBzdGFjayIsInN1YiI6IjZlYTA1YTQ1LWUxODgtNDI3Yy1hMWMwLWZiNTQ1NWQ1N2QxZSIsInR5cCI6ImtleSJ9.i6as57Fod4m4oDvHw8LoV2wVz2wjnQFOi_l60zTnGy8 +SERVER_API_PORT=50222 # Enviroment variables that will be available for every application @@ -28,7 +29,6 @@ LOG_PREFIX=[Pagerino] # Main app container name SERVER_NAME=pagerino-app -SERVER_API_PORT=50222 # General preferred connection timeout TIMEOUT=3s \ No newline at end of file diff --git a/AppServer/docker-compose.yml b/AppServer/docker-compose.yml index 7d177d1..327c138 100644 --- a/AppServer/docker-compose.yml +++ b/AppServer/docker-compose.yml @@ -9,6 +9,10 @@ services: - app_net - pagerino_net restart: on-failure:3 + environment: + CHIRP_ADDRESS: ${CHIRP_ADDRESS} + SERVER_API_PORT: ${SERVER_API_PORT} + APP_ID: ${APP_ID} pagerino_db: image: postgres:15 @@ -27,6 +31,19 @@ services: # ports: # - "5432:5432" + migrate: + image: migrate/migrate + networks: + - app_net + volumes: + - ./migrations:/migrations + command: [ + "-path", "/migrations", + "-database", "postgres://${DB_USER}:${DB_PASSWORD}@${DB_NAME}:5432/pagerino_db?sslmode=disable", + "up" + ] + depends_on: + - pagerino_db volumes: dbdata: diff --git a/AppServer/src/main.go b/AppServer/src/main.go index 37c402e..0976ce6 100755 --- a/AppServer/src/main.go +++ b/AppServer/src/main.go @@ -68,28 +68,13 @@ const ( // AppData holds data and connections needed througout the program type AppData struct { - ExitSig chan os.Signal // Use on fatal error to graciously exit, otherwise potential leaks - DBPool *pgxpool.Pool // Execute queries on internal DB on this pool - APIServer *grpc.Server // Provide API for apps - MQTTClient mqtt.Client // Get Uplinks and downlinks - ChirpGateClient chirp_api.GatewayServiceClient // Check gateway stats and manage them - Timeout time.Duration // General connection/request timeout -} - -// Uplink reflects Chirpstack's uplink format -type Uplink struct { - ApplicationID string `json:"applicationID"` - DevEUI string `json:"devEUI"` - FCnt uint32 `json:"fCnt"` - FPort uint8 `json:"fPort"` - Data string `json:"data"` // Base64 payload - RxInfo []struct { - GatewayID string `json:"gatewayID"` - Time string `json:"time"` - RSSI int32 `json:"rssi"` - SNR float64 `json:"snr"` - } `json:"rxInfo"` - DecodedPayload map[string]any `json:"decodedPayload,omitempty"` + ExitSig chan os.Signal // Use on fatal error to graciously exit, otherwise potential leaks + DBPool *pgxpool.Pool // Execute queries on internal DB on this pool + APIServer *grpc.Server // Provide API for apps + MQTTClient mqtt.Client // Get Uplinks and downlinks + ChirpGateClient chirp_api.GatewayServiceClient // Check gateway stats and manage them + ChirpDeviceCLient chirp_api.DeviceServiceClient // Check device stats + Timeout time.Duration // General connection/request timeout } // Downlink reflects Chirpstack's downlink format @@ -155,6 +140,49 @@ func MakeTLSConfig() (*tls.Config, error) { }, nil } +func (data *AppData) printChirpStats() { + ctx_tmout, cancel_ctx := context.WithTimeout(context.Background(), data.Timeout) + defer cancel_ctx() + + resp_gate, err := data.ChirpGateClient.List(ctx_tmout, &chirp_api.ListGatewaysRequest{ + Limit: 10, + Offset: 0, + OrderByDesc: true, + }) + if err != nil { + log.Println("Failed to get Chirpstack's API response: " + err.Error()) + return + } + + log.Println("Found the following gateways (first 10):") + for idx, gate := range resp_gate.Result { + log.Println(strconv.FormatInt(int64(idx), 10) + ": App[" + + gate.TenantId + "] GateID[" + gate.GatewayId + "] Name[" + + gate.Name + "]") + } + log.Println("[END]") + + resp_device, err := data.ChirpDeviceCLient.List(ctx_tmout, &chirp_api.ListDevicesRequest{ + Limit: 10, + Offset: 0, + OrderByDesc: true, + ApplicationId: FindEnv("APP_ID"), + }) + if err != nil { + log.Println("Failed to get Chirpstack's API response: " + err.Error()) + return + } + + log.Println("Found the following devices (first 10):") + for idx, dev := range resp_device.Result { + log.Println(strconv.FormatInt(int64(idx), 10) + ": Name[" + dev.Name + + "] Description:[" + dev.Description + + "] DevEUI[" + dev.DevEui + "]", + ) + } + log.Println("[END]") +} + // VerifyCredentials returns no error if password matches in DB func VerifyCredentials(username string, password string, data *AppData) error { if len(username) > MAX_CHAR_LEN || len(password) > MAX_CHAR_LEN { @@ -233,41 +261,59 @@ func makeMQTTHandler(data *AppData) mqtt.MessageHandler { log.Println("Uplink is responding in an unrecognized channel") } + //data.printChirpStats() + // Query timeout ctx, close := context.WithTimeout(context.Background(), data.Timeout) defer close() // Get device IDs row := data.DBPool.QueryRow(ctx, - "SELECT id FROM Devices WHERE euid = '$1'", + "SELECT id FROM \"Devices\" WHERE euid = '$1';", uplink.DevEUI, ) var dev_id int32 if err = row.Scan(&dev_id); err != nil { - log.Println(ErrNotFound.Error() + ": Device.euid = " + uplink.DevEUI) + if err == pgx.ErrNoRows { + log.Println( + "Adding new device to DB with DeviceEUI[" + uplink.DevEUI + + "] and Name[" + uplink.DeviceName + "]", + ) + data.DBPool.Exec(ctx, + "INSERT INTO \"Devices\" (euid, name) VALUES ($1, $2)", + uplink.DevEUI, uplink.DeviceName, + ) + + } else { + log.Println(err.Error() + ": Device.euid = " + uplink.DevEUI) + return + } return } // Add Message to DB _, err = data.DBPool.Exec(ctx, - "INSERT INTO Messages (sender_id, receiver_id, payload) VALUES ($1, $2, $3)", + "INSERT INTO \"Messages\" (sender_id, receiver_id, payload) VALUES ($1, $2, $3);", dev_id, nil, decoded, ) if err != nil { - log.Println(ErrModify.Error() + ": Message") + log.Println(ErrModify.Error() + ": " + err.Error()) return } // Get decoded custom payload pager_msg, err := serder.Deserialize(decoded) if err != nil { - log.Println(err.Error() + ": deserialization") + log.Println("Deserialization error: " + err.Error()) return } - log.Println("Received Pagerino payload for AppID[", pager_msg.AppID, "]:") + log.Println( + "Received Pagerino payload for AppID[" + + strconv.FormatUint(uint64(pager_msg.AppID), 10) + "]:", + ) for _, field := range pager_msg.Fields { log.Println(field) } @@ -354,7 +400,7 @@ Expected: [number]{h|m|s|ms|us|ns}...`) return } - log.Println("Created MQTT broker connection.") + log.Println("Created MQTT broker connection at: " + FindEnv("MQTT_ADDRESS")) defer client.Disconnect(150) Data.MQTTClient = client @@ -378,7 +424,7 @@ Expected: [number]{h|m|s|ms|us|ns}...`) // Serve gRPC go func() { if err := grpc_server.Serve(net_listen); err != nil { - log.Println("Failed to serve gRPC API") + log.Println("Failed to serve gRPC API: " + err.Error()) return } }() @@ -391,42 +437,23 @@ Expected: [number]{h|m|s|ms|us|ns}...`) grpc.WithTransportCredentials(insecure.NewCredentials()), // remove this when using TLS } - grpc_conn, err := grpc.Dial("chirpstack:8080", dialOpts...) + grpc_conn, err := grpc.Dial(FindEnv("CHIRP_ADDRESS"), dialOpts...) if err != nil { log.Println("Failed to create a gRPC connection to Chirpstack's API: " + err.Error()) return } Data.ChirpGateClient = chirp_api.NewGatewayServiceClient(grpc_conn) + Data.ChirpDeviceCLient = chirp_api.NewDeviceServiceClient(grpc_conn) defer grpc_conn.Close() - log.Println("Created Chirpstack's API connection.") + log.Println("Created Chirpstack's API connection at: " + FindEnv("CHIRP_ADDRESS")) - // Test gRPC connection - ctx_tmout, cancel_ctx = context.WithTimeout(context.Background(), Data.Timeout) - defer cancel_ctx() - - resp, err := Data.ChirpGateClient.List(ctx_tmout, &chirp_api.ListGatewaysRequest{ - Limit: 10, - Offset: 0, - OrderByDesc: true, - }) - if err != nil { - log.Println("Failed to test Chirpstack's API connection: "+err.Error(), resp) - return - } - - log.Println("Found the following gateways (first 10):") - for idx, gate := range resp.Result { - log.Println(strconv.FormatInt(int64(idx), 10) + ": App[" + - gate.TenantId + "] GateID[" + gate.GatewayId + "] Name[" + - gate.Name + "]") - } - log.Println("[END]") + Data.printChirpStats() // === Listen for Uplinks // Subscribe to topics - topic := "application/" + FindEnv("APP_ID") + "/device/+/event/up" + topic := "application/+/device/+/event/+" qos, err := strconv.Atoi(FindEnv("MQTT_QOS")) if err != nil { log.Println("Format misconfiguration for MQTT_QOS: " + err.Error()) @@ -436,7 +463,35 @@ Expected: [number]{h|m|s|ms|us|ns}...`) client.Subscribe(topic, byte(qos), makeMQTTHandler(&Data)) log.Println("Subscribed to uplink data on: " + topic + ".") + // === Simulate uplinks + go func() { + for { + time.Sleep(time.Second * 3) + + uplink, err := MakePayload() + if err != nil { + log.Println("Error while creating uplink: " + err.Error()) + break + } + + payload, err := json.Marshal(*uplink) + if err != nil { + log.Println("Failed to marshal uplink json: " + err.Error()) + break + } + + client.Publish( + "application/"+FindEnv("APP_ID")+"/device/"+DeviceEUI+"/event/up", + 0, + false, + payload, + ) + } + + log.Println("Stopping uplink loop...") + }() + // === Shutdown <-Data.ExitSig // Continue here on force quit - log.Println("The server is shutting down.") + log.Println("The application is shutting down.") } diff --git a/AppServer/src/serder/serder.go b/AppServer/src/serder/serder.go index 90d6f8f..31af387 100644 --- a/AppServer/src/serder/serder.go +++ b/AppServer/src/serder/serder.go @@ -17,6 +17,8 @@ const ( NFC_LENGTH = 7 ) +var MAX_BUFFER_LENGTH = 221 + var ( ErrTooShort error = errors.New("insufficient bytes in message") ErrNoType error = errors.New("encountered unknown data type") @@ -76,6 +78,15 @@ type PagerMessage struct { Fields []Field } +// tryAppend is append function with custom contraints (like length) +func tryAppend[T byte](slice []T, elems ...T) (bool, []T) { + if len(slice)+len(elems) > MAX_BUFFER_LENGTH { + return false, slice + } + + return true, append(slice, elems...) +} + // readArray reads a subset of bytes marked with DT_Array. // This data is copied, it is not parsed. func readArray(data []byte, offset int, dest *[]byte) (int, error) { @@ -171,7 +182,10 @@ func readField(data []byte, offset int) (Field, int, error) { // writeField encodes a field into buffer func writeField(field *Field, buf []byte) ([]byte, error) { - buf = append(buf, field.DType) + ok, buf := tryAppend(buf, field.DType) + if !ok { + return buf, ErrTooLong + } switch field.DType { case DT_Array: @@ -179,7 +193,11 @@ func writeField(field *Field, buf []byte) ([]byte, error) { if !ok { return buf, ErrInvalidData } - buf = append(buf, sub_pair.DType) + + ok, buf = tryAppend(buf, sub_pair.DType) + if !ok { + return buf, ErrTooLong + } size, ok := DataSizeMap[sub_pair.DType] if !ok { @@ -192,7 +210,7 @@ func writeField(field *Field, buf []byte) ([]byte, error) { } length := len(val) / size - if length > 255 { + if length+len(buf)+1 > MAX_BUFFER_LENGTH { return buf, ErrTooLong } @@ -204,7 +222,10 @@ func writeField(field *Field, buf []byte) ([]byte, error) { return buf, ErrInvalidData } - buf = append(buf, val) + ok, buf = tryAppend(buf, val) + if !ok { + return buf, ErrTooLong + } case DT_Authorization, DT_NFCPair: val, ok := field.Value.([7]byte) @@ -212,7 +233,10 @@ func writeField(field *Field, buf []byte) ([]byte, error) { return buf, ErrInvalidData } - buf = append(buf, val[:]...) + ok, buf = tryAppend(buf, val[:]...) + if !ok { + return buf, ErrTooLong + } case DT_Charge, DT_Temperature: val, ok := field.Value.(float32) @@ -220,6 +244,9 @@ func writeField(field *Field, buf []byte) ([]byte, error) { return buf, ErrInvalidData } + if len(buf)+4 > MAX_BUFFER_LENGTH { + return buf, ErrTooLong + } buf = binary.LittleEndian.AppendUint32(buf, math.Float32bits(val)) case DT_Location: @@ -228,6 +255,10 @@ func writeField(field *Field, buf []byte) ([]byte, error) { return buf, ErrInvalidData } + if len(buf)+20 > MAX_BUFFER_LENGTH { + return buf, ErrTooLong + } + buf = binary.LittleEndian.AppendUint64(buf, math.Float64bits(val.Latitude)) buf = binary.LittleEndian.AppendUint64(buf, math.Float64bits(val.Longitude)) buf = binary.LittleEndian.AppendUint32(buf, math.Float32bits(val.Altitude)) @@ -241,20 +272,27 @@ func writeField(field *Field, buf []byte) ([]byte, error) { return buf, nil } +func GetLengthFromDataRate(data_rate int) int { + if data_rate >= 0 && data_rate <= 3 { + return 51 + } else if data_rate == 4 { + return 115 + } else if data_rate >= 5 && data_rate <= 7 { + return 222 + } else { + return 0 + } +} + // SplitByLimit splits encoded message into parts // with maximum length derived from data rate. // // These messages are not decodable on the server, as // data is fractured. (TODO) func SplitByLimit(buf []byte, data_rate int) ([][]byte, error) { - var limit int - if data_rate >= 0 && data_rate <= 3 { - limit = 51 - } else if data_rate == 4 { - limit = 115 - } else if data_rate >= 5 && data_rate <= 7 { - limit = 222 - } else { + limit := GetLengthFromDataRate(data_rate) + + if limit == 0 { return nil, ErrUndefined } diff --git a/AppServer/src/uplink.go b/AppServer/src/uplink.go new file mode 100644 index 0000000..3e50a74 --- /dev/null +++ b/AppServer/src/uplink.go @@ -0,0 +1,136 @@ +package main + +import ( + "encoding/base64" + "encoding/json" + "math/rand" + "time" + + "server/serder" +) + +// ---------- CONFIG ---------- +const ( + Broker = "tls://mosquitto:8883" + GatewayID = "54d4d6102c916aed" + DeviceEUI = "1122334455667788" + AppId = "188c5d25-2d6b-43e3-aaf3-07dd0a8c386e" +) + +var FCount uint32 = 0 + +// ---------- DATA STRUCTURES ---------- +type Location struct { + Latitude float64 `json:"latitude"` + Longitude float64 `json:"longitude"` + Altitude float64 `json:"altitude"` +} + +type RXInfo struct { + GatewayID string `json:"gatewayID"` + Time time.Time `json:"time"` + RSSI int `json:"rssi"` + LoRaSNR float64 `json:"loRaSNR"` + Channel int `json:"channel"` + RFChain int `json:"rfChain"` + Board int `json:"board"` + Antenna int `json:"antenna"` + Location Location `json:"location"` +} + +type TXInfo struct { + Frequency int `json:"frequency"` + DR int `json:"dr"` + ADR bool `json:"adr"` + CodeRate string `json:"codeRate"` +} + +type Uplink struct { + ApplicationID string `json:"applicationID"` + ApplicationName string `json:"applicationName"` + DeviceName string `json:"deviceName"` + DevEUI string `json:"devEUI"` + RXInfo []RXInfo `json:"rxInfo"` + TXInfo TXInfo `json:"txInfo"` + FCnt uint32 `json:"fCnt"` + FPort uint8 `json:"fPort"` + Data string `json:"data"` // Base64-encoded payload + Object any `json:"object"` // decoded JSON payload if device uses JSON codec +} + +// ---------- UTILITY FUNCTIONS ---------- +// func generateRandomPHY(n int) []byte { +// payload := make([]byte, n) +// for i := 0; i < n; i++ { +// payload[i] = byte(rand.Intn(256)) +// } +// return payload +// } + +// Create a random uplink +func MakePayload() (*Uplink, error) { + + // Generate random sensor data + custom_pay := serder.PagerMessage{ + AppID: 1, + Fields: []serder.Field{ + { + DType: serder.DT_Array, + Value: serder.Field{ + DType: serder.DT_Char, + Value: []byte{ + byte(5), + 'H', 'e', 'l', 'l', 'o', + }, + }, + }, + }, + } + object, err := serder.Serialize(&custom_pay) + + if err != nil { + return nil, err + } + + // Encode object as JSON and then as base64 for Data field + objBytes, _ := json.Marshal(object) + dataB64 := base64.StdEncoding.EncodeToString(objBytes) + + uplink := Uplink{ + ApplicationID: AppId, + ApplicationName: "pagerino-app", + DeviceName: "pager-1", + DevEUI: DeviceEUI, + RXInfo: []RXInfo{ + { + GatewayID: GatewayID, + Time: time.Now().UTC(), + RSSI: -30 + rand.Intn(10), + LoRaSNR: -5 + rand.Float64()*10, + Channel: 0, + RFChain: 0, + Board: 1, + Antenna: 0, + Location: Location{ + Latitude: 52.0 + rand.Float64(), + Longitude: 13.0 + rand.Float64(), + Altitude: 100 + rand.Float64()*50, + }, + }, + }, + TXInfo: TXInfo{ + Frequency: 868100000, + DR: 5, + ADR: true, + CodeRate: "4/5", + }, + FCnt: FCount, + FPort: 1, + Data: dataB64, + Object: object, + } + + FCount++ + + return &uplink, err +} diff --git a/AppServer/tarball.tar.gz b/AppServer/tarball.tar.gz index 29db8f5f797b92bacbeb10ff74bfdabc7b78139c..7a889cbb74daa489d826214212486b2fff6829f4 100644 GIT binary patch literal 43199 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 H0AK_FdQOtH literal 41930 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%0A&ac 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:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-10>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*10)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*10)*calc(1 - var(--tw-space-x-reverse)))}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-700{border-color:var(--color-gray-700)}.bg-\[var\(--primary-bg\)\]{background-color:var(--primary-bg)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-white{background-color:var(--color-white)}.p-8{padding:calc(var(--spacing)*8)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-10{padding-block:calc(var(--spacing)*10)}.pt-6{padding-top:calc(var(--spacing)*6)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-blue-600{color:var(--color-blue-600)}.text-gray-300{color:var(--color-gray-300)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-white{color:var(--color-white)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}@media (hover:hover){.hover\:bg-\[var\(--accent\)\]:hover{background-color:var(--accent)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}.hover\:text-\[var\(--accent-light\)\]:hover{color:var(--accent-light)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-10{height:calc(var(--spacing)*10)}.md\:h-16{height:calc(var(--spacing)*16)}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:py-3{padding-block:calc(var(--spacing)*3)}.md\:py-4{padding-block:calc(var(--spacing)*4)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}}:root{--color-bg:#f8f9fa;--color-bg-alt:#e9ecef;--color-surface:#111213;--color-surface-alt:#1c1d1f;--color-text:#111213;--color-text-muted:#555;--color-text-inverse:#f8f9fa;--color-accent:#4f46e5;--color-accent-hover:#6366f1;--color-accent-muted:#818cf8;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444}body{background-color:var(--color-bg);color:var(--color-text);margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.6}a{color:var(--color-accent);text-decoration:none;transition:color .2s}a:hover{color:var(--color-accent-hover);text-decoration:underline}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false} \ No newline at end of file diff --git a/WebApp/docker-compose.yml b/WebApp/docker-compose.yml index ac894e3..38d2a77 100644 --- a/WebApp/docker-compose.yml +++ b/WebApp/docker-compose.yml @@ -9,6 +9,8 @@ services: restart: on-failure:3 ports: - "8222:8222" + environment: + SERVER_API_PORT: 50222 networks: pagerino_net: diff --git a/WebApp/src/layouts/components/footer.tmpl b/WebApp/src/layouts/components/footer.tmpl index 8e2b08d..7da79ea 100644 --- a/WebApp/src/layouts/components/footer.tmpl +++ b/WebApp/src/layouts/components/footer.tmpl @@ -1,4 +1,3 @@ -{{ define "footer" -}}
@@ -41,4 +40,3 @@
-{{- end }} diff --git a/WebApp/src/layouts/components/meta.tmpl b/WebApp/src/layouts/components/meta.tmpl index 5e787f7..1b2d725 100644 --- a/WebApp/src/layouts/components/meta.tmpl +++ b/WebApp/src/layouts/components/meta.tmpl @@ -1,8 +1,7 @@ -{{ define "meta" -}} {{ .meta.Title }} + -{{- end }} \ No newline at end of file + content={{ .meta.Description }} /> \ No newline at end of file diff --git a/WebApp/src/layouts/components/navbar.tmpl b/WebApp/src/layouts/components/navbar.tmpl index 7831f5f..ff2de3c 100644 --- a/WebApp/src/layouts/components/navbar.tmpl +++ b/WebApp/src/layouts/components/navbar.tmpl @@ -1,84 +1,149 @@ -{{ define "navbar" }} -