From a140df35c5b7de388dfed12e427ffc793bf15dbb Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Tue, 2 Dec 2025 14:15:25 +0100 Subject: [PATCH] fix: docker-compose startup, general settings --- .env.example | 23 ++++++++++++-- .gitignore | 3 +- Dockerfile | 2 -- docker-compose.yml | 4 +-- docker-entrypoint.sh | 10 ++++++ next.config.mjs | 4 +++ package.json | 1 + pnpm-lock.yaml | 73 ++++++++++++++++++++++---------------------- public/.gitkeep | 1 + 9 files changed, 77 insertions(+), 44 deletions(-) create mode 100644 public/.gitkeep diff --git a/.env.example b/.env.example index 00e4fa4..25b8d21 100644 --- a/.env.example +++ b/.env.example @@ -1,9 +1,26 @@ # Meal Planner - Elderly Care Home Meal Ordering System -# SQLite database is stored locally at ./meal-planner.db -# No DATABASE_URL needed for SQLite file-based storage +# Database Configuration +# For local development: leave DATABASE_URI empty to use SQLite (./meal-planner.db) +# For Docker: set to PostgreSQL connection string +# DATABASE_URI=postgres://postgres:postgres@localhost:5433/payload-example-multi-tenant + +# Payload CMS Configuration PAYLOAD_SECRET=your-secret-key-change-in-production PAYLOAD_PUBLIC_SERVER_URL=http://localhost:3000 # Set to true to seed the database with sample data on first run -SEED_DB=true \ No newline at end of file +SEED_DB=true + +# MinIO/S3 Storage Configuration (Docker only) +# For local development: leave empty to use local file storage +# For Docker: configure MinIO endpoint and credentials +# MINIO_ENDPOINT=http://localhost:9100 +# S3_BUCKET=meal-planner +# S3_REGION=us-east-1 +# S3_ACCESS_KEY_ID=minioadmin +# S3_SECRET_ACCESS_KEY=minioadmin + +# OpenAI API Key for computer vision form analysis +# Get your API key from https://platform.openai.com/api-keys +OPENAI_API_KEY=your-openai-api-key diff --git a/.gitignore b/.gitignore index 4cb7855..e574cd5 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ package-lock.json CLAUDE.md *.db *.db* -digest-*.md \ No newline at end of file +digest-*.md +checklist.md \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index be38966..e3abc3a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,8 +39,6 @@ ENV NODE_ENV=production RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs -COPY --from=builder /app/public ./public - # Set the correct permission for prerender cache RUN mkdir .next RUN chown nextjs:nodejs .next diff --git a/docker-compose.yml b/docker-compose.yml index d391350..41eb61a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: postgresql: image: postgres:16-alpine @@ -76,6 +74,8 @@ services: S3_REGION: us-east-1 S3_ACCESS_KEY_ID: minioadmin S3_SECRET_ACCESS_KEY: minioadmin + # OpenAI API key for form image analysis + OPENAI_API_KEY: ${OPENAI_API_KEY:-} ports: - "3100:3000" depends_on: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index c69dcac..9acfa72 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,6 +1,16 @@ #!/bin/sh set -e +# Wait for PostgreSQL to be ready +if [ -n "$DATABASE_URI" ]; then + echo "Waiting for PostgreSQL to be ready..." + until wget -q --spider http://postgresql:5432 2>/dev/null || nc -z postgresql 5432; do + echo "PostgreSQL is unavailable - sleeping" + sleep 2 + done + echo "PostgreSQL is up" +fi + # Wait for MinIO to be ready if [ -n "$MINIO_ENDPOINT" ]; then echo "Waiting for MinIO to be ready..." diff --git a/next.config.mjs b/next.config.mjs index f6901cf..e1f346c 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -3,6 +3,10 @@ import { withPayload } from '@payloadcms/next/withPayload' /** @type {import('next').NextConfig} */ const nextConfig = { // Your Next.js config here + output: 'standalone', + experimental: { + serverComponentsExternalPackages: ['@payloadcms/db-sqlite', '@libsql/client', 'libsql', 'better-sqlite3'], + }, async rewrites() { return [ { diff --git a/package.json b/package.json index d25cd01..5111d9c 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "graphql": "^16.9.0", "lucide-react": "^0.555.0", "next": "^15.2.3", + "openai": "^6.9.1", "payload": "3.65.0", "postcss": "^8.5.6", "qs-esm": "7.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4437d7..01f2a2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,6 +83,9 @@ importers: next: specifier: ^15.2.3 version: 15.5.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.4) + openai: + specifier: ^6.9.1 + version: 6.9.1(ws@8.18.3) payload: specifier: 3.65.0 version: 3.65.0(graphql@16.12.0)(typescript@5.5.2) @@ -110,7 +113,7 @@ importers: devDependencies: '@payloadcms/eslint-config': specifier: ^3.28.0 - version: 3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2)) + version: 3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2)) '@payloadcms/graphql': specifier: latest version: 3.65.0(graphql@16.12.0)(payload@3.65.0(graphql@16.12.0)(typescript@5.5.2))(typescript@5.5.2) @@ -4342,6 +4345,18 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + openai@6.9.1: + resolution: {integrity: sha512-vQ5Rlt0ZgB3/BNmTa7bIijYFhz3YBceAA3Z4JuoMSBftBF9YqFHIEhZakSs+O/Ad7EaoEimZvHxD5ylRjN11Lg==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -6928,17 +6943,17 @@ snapshots: - sql.js - sqlite3 - '@payloadcms/eslint-config@3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2))': + '@payloadcms/eslint-config@3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2))': dependencies: '@eslint-react/eslint-plugin': 1.31.0(eslint@9.22.0(jiti@2.6.1))(ts-api-utils@2.1.0(typescript@5.5.2))(typescript@5.7.3) '@eslint/js': 9.22.0 - '@payloadcms/eslint-plugin': 3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2)) + '@payloadcms/eslint-plugin': 3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2)) '@types/eslint': 9.6.1 '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) eslint: 9.22.0(jiti@2.6.1) eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.6.1)) eslint-plugin-import-x: 4.6.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) - eslint-plugin-jest: 28.11.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) + eslint-plugin-jest: 28.11.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) eslint-plugin-jest-dom: 5.5.0(eslint@9.22.0(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.22.0(jiti@2.6.1)) eslint-plugin-perfectionist: 3.9.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) @@ -6959,7 +6974,7 @@ snapshots: - ts-api-utils - vue-eslint-parser - '@payloadcms/eslint-plugin@3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2))': + '@payloadcms/eslint-plugin@3.28.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(jiti@2.6.1)(ts-api-utils@2.1.0(typescript@5.5.2))': dependencies: '@eslint-react/eslint-plugin': 1.31.0(eslint@9.22.0(jiti@2.6.1))(ts-api-utils@2.1.0(typescript@5.5.2))(typescript@5.7.3) '@eslint/js': 9.22.0 @@ -6968,7 +6983,7 @@ snapshots: eslint: 9.22.0(jiti@2.6.1) eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.6.1)) eslint-plugin-import-x: 4.6.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) - eslint-plugin-jest: 28.11.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) + eslint-plugin-jest: 28.11.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) eslint-plugin-jest-dom: 5.5.0(eslint@9.22.0(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.22.0(jiti@2.6.1)) eslint-plugin-perfectionist: 3.9.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) @@ -8073,7 +8088,7 @@ snapshots: dependencies: '@types/node': 24.10.1 - '@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) @@ -8090,24 +8105,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.48.0 - '@typescript-eslint/type-utils': 8.48.0(eslint@8.57.1)(typescript@5.5.2) - '@typescript-eslint/utils': 8.48.0(eslint@8.57.1)(typescript@5.5.2) - '@typescript-eslint/visitor-keys': 8.48.0 - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.5.2) - typescript: 5.5.2 - transitivePeerDependencies: - - supports-color - optional: true - '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -9046,8 +9043,8 @@ snapshots: '@typescript-eslint/parser': 8.48.0(eslint@8.57.1)(typescript@5.5.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 5.2.0(eslint@8.57.1) @@ -9070,7 +9067,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -9081,19 +9078,19 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-import-x: 4.6.1(eslint@8.57.1)(typescript@5.5.2) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.48.0(eslint@8.57.1)(typescript@5.5.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -9138,7 +9135,7 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9149,7 +9146,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.6.1(eslint@8.57.1)(typescript@5.5.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9173,12 +9170,12 @@ snapshots: eslint: 9.22.0(jiti@2.6.1) requireindex: 1.2.0 - eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3): + eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3): dependencies: '@typescript-eslint/utils': 8.48.0(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) eslint: 9.22.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2) + '@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@8.57.1)(typescript@5.5.2))(eslint@8.57.1)(typescript@5.5.2) transitivePeerDependencies: - supports-color - typescript @@ -10520,6 +10517,10 @@ snapshots: dependencies: wrappy: 1.0.2 + openai@6.9.1(ws@8.18.3): + optionalDependencies: + ws: 8.18.3 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -11450,7 +11451,7 @@ snapshots: typescript-eslint@8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@8.57.1)(typescript@5.5.2))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3))(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.6.1))(typescript@5.7.3) eslint: 9.22.0(jiti@2.6.1) diff --git a/public/.gitkeep b/public/.gitkeep new file mode 100644 index 0000000..cf8d167 --- /dev/null +++ b/public/.gitkeep @@ -0,0 +1 @@ +# Public assets directory