diff --git a/api/Dockerfile b/api/Dockerfile index 5ae4dfe..c8bd8f5 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3 +FROM docker.io/python:3-slim WORKDIR /app COPY requirements.txt requirements.txt @@ -7,7 +7,4 @@ COPY . . EXPOSE 80 -HEALTHCHECK --interval=10s --timeout=5s --retries=3 --start-period=10s \ - CMD python healthcheck.py http://localhost/api/ || exit 1 - CMD ["fastapi", "run", "main.py", "--port", "80", "--proxy-headers"] \ No newline at end of file diff --git a/api/routers/tickets.py b/api/routers/tickets.py index 6739efa..fcd68ac 100644 --- a/api/routers/tickets.py +++ b/api/routers/tickets.py @@ -23,7 +23,7 @@ def get_prefix_ticket_one(api_key: str, prefix: str, t_id: int) -> Ticket: raise bad_key return TicketRepo().get_prefix_one(prefix, t_id) -@ticket_router.get("/{prefix}/{t_from}/{t_to}") +@ticket_router.get("/{prefix}/{t_from}/{t_to}/") def get_prefix_ticket_range(api_key: str, prefix: str, t_from: int, t_to: int) -> list[Ticket]: if not ApiKeyRepo().check_api(api_key): raise bad_key diff --git a/db/Dockerfile b/db/Dockerfile index cb4ee5b..90b660b 100644 --- a/db/Dockerfile +++ b/db/Dockerfile @@ -1,3 +1,3 @@ -FROM mariadb:lts +FROM docker.io/mariadb:lts COPY schema.sql /docker-entrypoint-initdb.d/tam3-schema.sql \ No newline at end of file diff --git a/deployment/client/docker_client-launch.sh b/deployment/client/docker_client-launch.sh new file mode 100644 index 0000000..148289d --- /dev/null +++ b/deployment/client/docker_client-launch.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +mkdir -p ~/.config/TAM3/data + +read -p "Do you want to connect to a remote server? [y or n] " rmserver +read -p "Enter the short venue name: " venuename + +if [ $rmserver = "y" -o $rmserver = "Y" ]; then +read -p "Enter the protocol, server host/ip, and port like "https://ip_or_host:8443" w/o quotes: " serveraddr +read -p "Paste in (Ctrl + Shift + V on most terminal emulators) or enter the api key you generated for your server: " serverapi +docker run -d --name=tam3-webclient --restart=always -v ~/.config/TAM3/data:/data:rw,z -e TAM3_REMOTE=$serveraddr -e TAM3_REMOTE_KEY=$serverapi -e NODE_TLS_REJECT_UNAUTHORIZED=0 -e PUBLIC_TAM3_VENUE="$venuename" -p 127.0.0.1:8300:3000 docker.io/dbob16/tam3-webclient:0.1.0 +else +docker run -d --name=tam3-webclient --restart=always -v ~/.config/TAM3/data:/data:rw,z -e PUBLIC_TAM3_VENUE="$venuename" -p 127.0.0.1:8300:3000 docker.io/dbob16/tam3-webclient:0.1.0 +fi \ No newline at end of file diff --git a/deployment/client/podman_client-launch.sh b/deployment/client/podman_client-launch.sh new file mode 100755 index 0000000..65613bd --- /dev/null +++ b/deployment/client/podman_client-launch.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +mkdir -p ~/.config/TAM3/data + +read -p "Do you want to connect to a remote server? [y or n] " rmserver +read -p "Enter the short venue name: " venuename + +if [ $rmserver = "y" -o $rmserver = "Y" ]; then +read -p "Enter the protocol, server host/ip, and port like "https://ip_or_host:8443" w/o quotes: " serveraddr +read -p "Paste in (Ctrl + Shift + V on most terminal emulators) or enter the api key you generated for your server: " serverapi +podman run -d --name=tam3-webclient --restart=always -v ~/.config/TAM3/data:/data:rw,z -e TAM3_REMOTE=$serveraddr -e TAM3_REMOTE_KEY=$serverapi -e NODE_TLS_REJECT_UNAUTHORIZED=0 -e PUBLIC_TAM3_VENUE="$venuename" -p 127.0.0.1:8300:3000 docker.io/dbob16/tam3-webclient:0.1.0 +else +podman run -d --name=tam3-webclient --restart=always -v ~/.config/TAM3/data:/data:rw,z -e PUBLIC_TAM3_VENUE="$venuename" -p 127.0.0.1:8300:3000 docker.io/dbob16/tam3-webclient:0.1.0 +fi \ No newline at end of file diff --git a/deployment/remote_server/compose.yml b/deployment/remote_server/compose.yml index b505323..d70f492 100644 --- a/deployment/remote_server/compose.yml +++ b/deployment/remote_server/compose.yml @@ -1,6 +1,6 @@ services: tam3-db: - image: dbob16/tam3-db:0.1.0 + image: docker.io/dbob16/tam3-db:0.1.0 restart: always environment: MARIADB_RANDOM_ROOT_PASSWORD: 1 @@ -8,7 +8,7 @@ services: MARIADB_USER: tam3 MARIADB_PASSWORD: ${DB_PASSWORD} volumes: - - "${DB_LOCATION}:/var/lib/mysql" + - "${DB_LOCATION}:/var/lib/mysql:z" healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 10s @@ -16,7 +16,7 @@ services: timeout: 5s retries: 3 tam3-api: - image: dbob16/tam3-api:0.1.0 + image: docker.io/dbob16/tam3-api:0.1.0 restart: always environment: TAM3_DATA_PATH: /data @@ -25,15 +25,4 @@ services: TAM3_DB_USER: tam3 TAM3_DB_PASSWD: ${DB_PASSWORD} ports: - - "8000:80" - autoheal: - deploy: - replicas: 1 - environment: - AUTOHEAL_CONTAINER_LABEL: autoheal-app - image: willfarrell/autoheal:latest - network_mode: none - restart: always - volumes: - - /etc/localtime:/etc/localtime:ro - - /var/run/docker.sock:/var/run/docker.sock \ No newline at end of file + - "8000:80" \ No newline at end of file diff --git a/deployment/remote_server/docker_generate-key.sh b/deployment/remote_server/docker_generate-key.sh new file mode 100755 index 0000000..46cda81 --- /dev/null +++ b/deployment/remote_server/docker_generate-key.sh @@ -0,0 +1,5 @@ +read -p "Enter the name of the computer you plan to use the key on: " pcname + +docker compose exec tam3-api /app/key.py generate $pcname + +echo "Note the key above this line. You can use that for the computer." \ No newline at end of file diff --git a/deployment/remote_server/docker_list-keys.sh b/deployment/remote_server/docker_list-keys.sh new file mode 100755 index 0000000..4b90084 --- /dev/null +++ b/deployment/remote_server/docker_list-keys.sh @@ -0,0 +1 @@ +docker compose exec tam3-api /app/key.py list \ No newline at end of file diff --git a/deployment/remote_server/docker_start-server.sh b/deployment/remote_server/docker_start-server.sh new file mode 100755 index 0000000..b7d726c --- /dev/null +++ b/deployment/remote_server/docker_start-server.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +gen_password=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32) + +echo "DB_LOCATION=./tam3-db" > .env +echo "DB_PASSWORD=${gen_password}" >> .env + +docker compose up -d \ No newline at end of file diff --git a/deployment/remote_server/podman_generate-key.sh b/deployment/remote_server/podman_generate-key.sh new file mode 100755 index 0000000..d4bdf32 --- /dev/null +++ b/deployment/remote_server/podman_generate-key.sh @@ -0,0 +1,5 @@ +read -p "Enter the name of the computer you plan to use the key on: " pcname + +podman compose exec tam3-api /app/key.py generate $pcname + +echo "Note the key above this line. You can use that for the computer." \ No newline at end of file diff --git a/deployment/remote_server/podman_list-keys.sh b/deployment/remote_server/podman_list-keys.sh new file mode 100755 index 0000000..a1fc2cd --- /dev/null +++ b/deployment/remote_server/podman_list-keys.sh @@ -0,0 +1 @@ +podman compose exec tam3-api /app/key.py list \ No newline at end of file diff --git a/deployment/remote_server/podman_start-server.sh b/deployment/remote_server/podman_start-server.sh new file mode 100755 index 0000000..de76718 --- /dev/null +++ b/deployment/remote_server/podman_start-server.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +gen_password=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32) + +echo "DB_LOCATION=./tam3-db" > .env +echo "DB_PASSWORD=${gen_password}" >> .env + +podman compose up -d \ No newline at end of file diff --git a/deployment/remote_server_secure/compose.yml b/deployment/remote_server_secure/compose.yml new file mode 100644 index 0000000..2c278fa --- /dev/null +++ b/deployment/remote_server_secure/compose.yml @@ -0,0 +1,36 @@ +services: + tam3-db: + image: docker.io/dbob16/tam3-db:0.1.0 + restart: always + environment: + MARIADB_RANDOM_ROOT_PASSWORD: 1 + MARIADB_DATABASE: tam3 + MARIADB_USER: tam3 + MARIADB_PASSWORD: ${DB_PASSWORD} + volumes: + - "${DB_LOCATION}:/var/lib/mysql:rw,z" + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + start_period: 10s + interval: 10s + timeout: 5s + retries: 3 + tam3-api: + image: docker.io/dbob16/tam3-api:0.1.0 + restart: always + environment: + TAM3_DATA_PATH: /data + TAM3_DB_HOST: tam3-db + TAM3_DB_DATABASE: tam3 + TAM3_DB_USER: tam3 + TAM3_DB_PASSWD: ${DB_PASSWORD} + ports: + - "8000:80" + tam3-rp: + image: docker.io/nginx:stable + restart: always + ports: + - "8443:443" + volumes: + - "./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro,z" + - "./nginx/certs:/certs:ro,z" \ No newline at end of file diff --git a/deployment/remote_server_secure/docker_generate-key.sh b/deployment/remote_server_secure/docker_generate-key.sh new file mode 100755 index 0000000..46cda81 --- /dev/null +++ b/deployment/remote_server_secure/docker_generate-key.sh @@ -0,0 +1,5 @@ +read -p "Enter the name of the computer you plan to use the key on: " pcname + +docker compose exec tam3-api /app/key.py generate $pcname + +echo "Note the key above this line. You can use that for the computer." \ No newline at end of file diff --git a/deployment/remote_server_secure/docker_list-keys.sh b/deployment/remote_server_secure/docker_list-keys.sh new file mode 100755 index 0000000..4b90084 --- /dev/null +++ b/deployment/remote_server_secure/docker_list-keys.sh @@ -0,0 +1 @@ +docker compose exec tam3-api /app/key.py list \ No newline at end of file diff --git a/deployment/remote_server_secure/docker_start-server.sh b/deployment/remote_server_secure/docker_start-server.sh new file mode 100755 index 0000000..2a178f3 --- /dev/null +++ b/deployment/remote_server_secure/docker_start-server.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +mkdir -p nginx/certs +echo "This part will ask you a bunch of questions for the self-signed cert. Answer them, I can't control it. For common name put the name or IP of the server which the clients can access it." +openssl req -x509 -newkey rsa:4096 -keyout nginx/certs/nginx.key -out nginx/certs/nginx.crt -sha256 -days 3650 -nodes + +gen_password=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32) + +echo "DB_LOCATION=./tam3-db" > .env +echo "DB_PASSWORD=${gen_password}" >> .env + +docker compose up -d \ No newline at end of file diff --git a/deployment/remote_server_secure/nginx/default.conf b/deployment/remote_server_secure/nginx/default.conf new file mode 100644 index 0000000..7213c7a --- /dev/null +++ b/deployment/remote_server_secure/nginx/default.conf @@ -0,0 +1,16 @@ +server { + listen 443 ssl default_server; + + server_name _; + + ssl_certificate /certs/nginx.crt; + ssl_certificate_key /certs/nginx.key; + + location / { + proxy_pass http://tam3-api/; + proxy_set_header Host $host; + proxy_ssl_name $host; + proxy_ssl_server_name on; + proxy_ssl_session_reuse off; + } +} \ No newline at end of file diff --git a/deployment/remote_server_secure/podman_generate-key.sh b/deployment/remote_server_secure/podman_generate-key.sh new file mode 100755 index 0000000..d4bdf32 --- /dev/null +++ b/deployment/remote_server_secure/podman_generate-key.sh @@ -0,0 +1,5 @@ +read -p "Enter the name of the computer you plan to use the key on: " pcname + +podman compose exec tam3-api /app/key.py generate $pcname + +echo "Note the key above this line. You can use that for the computer." \ No newline at end of file diff --git a/deployment/remote_server_secure/podman_list-keys.sh b/deployment/remote_server_secure/podman_list-keys.sh new file mode 100755 index 0000000..a1fc2cd --- /dev/null +++ b/deployment/remote_server_secure/podman_list-keys.sh @@ -0,0 +1 @@ +podman compose exec tam3-api /app/key.py list \ No newline at end of file diff --git a/deployment/remote_server_secure/podman_start-server.sh b/deployment/remote_server_secure/podman_start-server.sh new file mode 100755 index 0000000..7c5aebb --- /dev/null +++ b/deployment/remote_server_secure/podman_start-server.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +mkdir -p nginx/certs +echo "This part will ask you a bunch of questions for the self-signed cert. Answer them, I can't control it. For common name put the name or IP of the server which the clients can access it." +openssl req -x509 -newkey rsa:4096 -keyout nginx/certs/nginx.key -out nginx/certs/nginx.crt -sha256 -days 3650 -nodes + +gen_password=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32) + +echo "DB_LOCATION=./tam3-db" > .env +echo "DB_PASSWORD=${gen_password}" >> .env + +podman compose up -d \ No newline at end of file diff --git a/webapp/Dockerfile b/webapp/Dockerfile index 559b13e..5ca6975 100644 --- a/webapp/Dockerfile +++ b/webapp/Dockerfile @@ -1,23 +1,15 @@ -FROM node:lts-alpine AS build +FROM docker.io/node:lts-alpine AS build +RUN mkdir /data WORKDIR /app + COPY . . RUN npm install && npm run build -FROM node:lts-alpine AS prod - -WORKDIR /data -WORKDIR /app - ENV DATABASE_URL=file:/data/local.db -COPY --from=build /app/build/. build/. -COPY --from=build /app/package.json /app/drizzle.config.js . -COPY --from=build /app/drizzle drizzle COPY deploy/start-server.sh start-server.sh -RUN npm install --production && npm install drizzle-kit - EXPOSE 3000 CMD ["sh", "start-server.sh"] \ No newline at end of file diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 81621d2..6349ff2 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -8,6 +8,8 @@ "name": "webapp", "version": "0.0.1", "dependencies": { + "@libsql/client": "^0.14.0", + "drizzle-kit": "^0.30.2", "hotkeys-js": "^3.13.15" }, "devDependencies": { @@ -1231,9 +1233,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.0.tgz", - "integrity": "sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", + "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", "cpu": [ "arm" ], @@ -1245,9 +1247,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.0.tgz", - "integrity": "sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", + "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", "cpu": [ "arm64" ], @@ -1259,9 +1261,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.0.tgz", - "integrity": "sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", + "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", "cpu": [ "arm64" ], @@ -1273,9 +1275,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.0.tgz", - "integrity": "sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", + "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", "cpu": [ "x64" ], @@ -1287,9 +1289,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.0.tgz", - "integrity": "sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", + "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", "cpu": [ "arm64" ], @@ -1301,9 +1303,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.0.tgz", - "integrity": "sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", + "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", "cpu": [ "x64" ], @@ -1315,9 +1317,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.0.tgz", - "integrity": "sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", + "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", "cpu": [ "arm" ], @@ -1329,9 +1331,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.0.tgz", - "integrity": "sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", + "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", "cpu": [ "arm" ], @@ -1343,9 +1345,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.0.tgz", - "integrity": "sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", + "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", "cpu": [ "arm64" ], @@ -1357,9 +1359,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.0.tgz", - "integrity": "sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", + "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", "cpu": [ "arm64" ], @@ -1371,9 +1373,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.0.tgz", - "integrity": "sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", + "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", "cpu": [ "loong64" ], @@ -1385,9 +1387,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.0.tgz", - "integrity": "sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", + "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", "cpu": [ "ppc64" ], @@ -1399,9 +1401,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.0.tgz", - "integrity": "sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", + "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", "cpu": [ "riscv64" ], @@ -1413,9 +1415,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.0.tgz", - "integrity": "sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", + "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", "cpu": [ "riscv64" ], @@ -1427,9 +1429,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.0.tgz", - "integrity": "sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", + "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", "cpu": [ "s390x" ], @@ -1441,9 +1443,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.0.tgz", - "integrity": "sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", + "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", "cpu": [ "x64" ], @@ -1455,9 +1457,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.0.tgz", - "integrity": "sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", + "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", "cpu": [ "x64" ], @@ -1469,9 +1471,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.0.tgz", - "integrity": "sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", + "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", "cpu": [ "arm64" ], @@ -1483,9 +1485,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.0.tgz", - "integrity": "sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", + "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", "cpu": [ "arm64" ], @@ -1497,9 +1499,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.0.tgz", - "integrity": "sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", + "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", "cpu": [ "ia32" ], @@ -1511,9 +1513,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.0.tgz", - "integrity": "sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", + "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", "cpu": [ "x64" ], @@ -1525,9 +1527,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.0.tgz", - "integrity": "sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", + "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", "cpu": [ "x64" ], @@ -1546,9 +1548,9 @@ "license": "MIT" }, "node_modules/@sveltejs/acorn-typescript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", - "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.6.tgz", + "integrity": "sha512-4awhxtMh4cx9blePWl10HRHj8Iivtqj+2QdDCSMDzxG+XKa9+VCNupQuCuvzEhYPzZSrX+0gC+0lHA/0fFKKQQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1572,9 +1574,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.42.2", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.42.2.tgz", - "integrity": "sha512-FcNICFvlSYjPiAgk8BpqTEnXkaUj6I6wDwpQBxKMpsYhUc2Q5STgsVpXOG5LqwFpUAoLAXQ4wdWul7EcAG67JQ==", + "version": "2.43.5", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.43.5.tgz", + "integrity": "sha512-44Mm5csR4mesKx2Eyhtk8UVrLJ4c04BT2wMTfYGKJMOkUqpHP5KLL2DPV0hXUA4t4+T3ZYe0aBygd42lVYv2cA==", "dev": true, "license": "MIT", "dependencies": { @@ -1611,9 +1613,9 @@ } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.0.tgz", - "integrity": "sha512-nJsV36+o7rZUDlrnSduMNl11+RoDE1cKqOI0yUEBCcqFoAZOk47TwD3dPKS2WmRutke9StXnzsPBslY7prDM9w==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.1.tgz", + "integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1664,9 +1666,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.18.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.6.tgz", - "integrity": "sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==", + "version": "22.18.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.7.tgz", + "integrity": "sha512-3E97nlWEVp2V6J7aMkR8eOnw/w0pArPwf/5/W0865f+xzBoGL/ZuHkTAKAGN7cOWNwd+sG+hZOqj+fjzeHS75g==", "dev": true, "license": "MIT", "dependencies": { @@ -2464,9 +2466,9 @@ } }, "node_modules/rollup": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.0.tgz", - "integrity": "sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", + "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", "dev": true, "license": "MIT", "dependencies": { @@ -2480,28 +2482,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.0", - "@rollup/rollup-android-arm64": "4.52.0", - "@rollup/rollup-darwin-arm64": "4.52.0", - "@rollup/rollup-darwin-x64": "4.52.0", - "@rollup/rollup-freebsd-arm64": "4.52.0", - "@rollup/rollup-freebsd-x64": "4.52.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.0", - "@rollup/rollup-linux-arm-musleabihf": "4.52.0", - "@rollup/rollup-linux-arm64-gnu": "4.52.0", - "@rollup/rollup-linux-arm64-musl": "4.52.0", - "@rollup/rollup-linux-loong64-gnu": "4.52.0", - "@rollup/rollup-linux-ppc64-gnu": "4.52.0", - "@rollup/rollup-linux-riscv64-gnu": "4.52.0", - "@rollup/rollup-linux-riscv64-musl": "4.52.0", - "@rollup/rollup-linux-s390x-gnu": "4.52.0", - "@rollup/rollup-linux-x64-gnu": "4.52.0", - "@rollup/rollup-linux-x64-musl": "4.52.0", - "@rollup/rollup-openharmony-arm64": "4.52.0", - "@rollup/rollup-win32-arm64-msvc": "4.52.0", - "@rollup/rollup-win32-ia32-msvc": "4.52.0", - "@rollup/rollup-win32-x64-gnu": "4.52.0", - "@rollup/rollup-win32-x64-msvc": "4.52.0", + "@rollup/rollup-android-arm-eabi": "4.52.3", + "@rollup/rollup-android-arm64": "4.52.3", + "@rollup/rollup-darwin-arm64": "4.52.3", + "@rollup/rollup-darwin-x64": "4.52.3", + "@rollup/rollup-freebsd-arm64": "4.52.3", + "@rollup/rollup-freebsd-x64": "4.52.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", + "@rollup/rollup-linux-arm-musleabihf": "4.52.3", + "@rollup/rollup-linux-arm64-gnu": "4.52.3", + "@rollup/rollup-linux-arm64-musl": "4.52.3", + "@rollup/rollup-linux-loong64-gnu": "4.52.3", + "@rollup/rollup-linux-ppc64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-musl": "4.52.3", + "@rollup/rollup-linux-s390x-gnu": "4.52.3", + "@rollup/rollup-linux-x64-gnu": "4.52.3", + "@rollup/rollup-linux-x64-musl": "4.52.3", + "@rollup/rollup-openharmony-arm64": "4.52.3", + "@rollup/rollup-win32-arm64-msvc": "4.52.3", + "@rollup/rollup-win32-ia32-msvc": "4.52.3", + "@rollup/rollup-win32-x64-gnu": "4.52.3", + "@rollup/rollup-win32-x64-msvc": "4.52.3", "fsevents": "~2.3.2" } }, @@ -2611,9 +2613,9 @@ } }, "node_modules/svelte": { - "version": "5.39.3", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.39.3.tgz", - "integrity": "sha512-7Jwus6iXviGZAvhqbeYu3NNHA6LGyQ8EbmjdAhJUDade5rrW6g9VnBbRhUuYX4pMZLHozijsFolt88zvKPfsbQ==", + "version": "5.39.6", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.39.6.tgz", + "integrity": "sha512-bOJXmuwLNaoqPCTWO8mPu/fwxI5peGE5Efe7oo6Cakpz/G60vsnVF6mxbGODaxMUFUKEnjm6XOwHEqOht6cbvw==", "dev": true, "license": "MIT", "dependencies": { @@ -2681,9 +2683,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.6.tgz", - "integrity": "sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.7.tgz", + "integrity": "sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/webapp/src/app.html b/webapp/src/app.html index f273cc5..6f21893 100644 --- a/webapp/src/app.html +++ b/webapp/src/app.html @@ -3,6 +3,7 @@ + %sveltekit.head% diff --git a/webapp/static/icons/tam3x192.png b/webapp/static/icons/tam3x192.png new file mode 100644 index 0000000..3aa4706 Binary files /dev/null and b/webapp/static/icons/tam3x192.png differ diff --git a/webapp/static/icons/tam3x512.png b/webapp/static/icons/tam3x512.png new file mode 100644 index 0000000..ff611c8 Binary files /dev/null and b/webapp/static/icons/tam3x512.png differ diff --git a/webapp/static/manifest.json b/webapp/static/manifest.json new file mode 100644 index 0000000..ec32e8b --- /dev/null +++ b/webapp/static/manifest.json @@ -0,0 +1,20 @@ +{ + "short_name": "TAM3", + "name": "Ticket Auction Manager 3", + "icons": [ + { + "src": "/icons/tam3x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/icons/tam3x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "black", + "background_color": "white" +} \ No newline at end of file