From 0732a23e74e3c76ba074a0cbf21e11003283797f Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 20:40:47 +0000 Subject: [PATCH 01/16] Better windows support --- .gitattributes | 2 ++ .github/workflows/app-tests.yaml | 24 +++++++++++++----------- src/pyproject.toml | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..b5db8d48 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.sh text eol=lf +*.jsonlines text eol=lf \ No newline at end of file diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 3ef2409b..79925239 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -13,20 +13,22 @@ jobs: strategy: fail-fast: false matrix: - os: ["ubuntu-20.04"] + os: ["ubuntu-latest", "macos-13", "macos-latest-xlarge", "windows-latest"] python_version: ["3.10", "3.11", "3.12"] - services: - postgres: - image: pgvector/pgvector:pg16 - env: - POSTGRES_USER: admin - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - # needed because the postgres container does not provide a healthcheck - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + exclude: + - os: macos-latest-xlarge + python_version: "3.10" steps: - uses: actions/checkout@v4 + - name: Check for MacOS Runner + if: matrix.os == 'macos-latest-xlarge' + run: brew install postgresql@14 + - name: Setup postgres + uses: ikalnytskyi/action-setup-postgres@v6 + with: + username: admin + password: postgres + database: postgres - name: Setup python uses: actions/setup-python@v5 with: diff --git a/src/pyproject.toml b/src/pyproject.toml index a4bb0de1..9ceb6c4b 100644 --- a/src/pyproject.toml +++ b/src/pyproject.toml @@ -5,7 +5,7 @@ description = "Create a relecloud demo application with fastapi and postgres-fle dependencies = [ "fastapi", "gunicorn", - "uvicorn[standard]", + "uvicorn", "python-dotenv", "environs", "azure-identity", From b9121e8438c72e35762d77c3abdbb33f8ecd13a1 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 20:58:40 +0000 Subject: [PATCH 02/16] attempt 2 --- .github/workflows/app-tests.yaml | 3 +++ .github/workflows/install-pgvector.bat | 8 ++++++++ 2 files changed, 11 insertions(+) create mode 100644 .github/workflows/install-pgvector.bat diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 79925239..ba8ecee8 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -23,6 +23,9 @@ jobs: - name: Check for MacOS Runner if: matrix.os == 'macos-latest-xlarge' run: brew install postgresql@14 + - name: Install pgvector on Windows using install-pgvector.bat + if: matrix.os == 'windows-latest' + run: .\install-pgvector.bat - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: diff --git a/.github/workflows/install-pgvector.bat b/.github/workflows/install-pgvector.bat new file mode 100644 index 00000000..56134c60 --- /dev/null +++ b/.github/workflows/install-pgvector.bat @@ -0,0 +1,8 @@ +set "PGROOT=C:\Program Files\PostgreSQL\14" +cd $RUNNER_TEMP +git clone --branch v0.6.2 https://github.com/pgvector/pgvector.git +cd pgvector + +call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" +nmake /NOLOGO /F Makefile.win +nmake /NOLOGO /F Makefile.win install \ No newline at end of file From 2787a6b01b9b99549f03307e9f4eaac27e76660c Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 21:01:57 +0000 Subject: [PATCH 03/16] hm cmd --- .github/workflows/app-tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index ba8ecee8..9b7981ea 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -25,6 +25,7 @@ jobs: run: brew install postgresql@14 - name: Install pgvector on Windows using install-pgvector.bat if: matrix.os == 'windows-latest' + shell: cmd run: .\install-pgvector.bat - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 From 0ce28645b560c519599bb97b926e92e8cf79f2b1 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Wed, 12 Jun 2024 21:10:50 +0000 Subject: [PATCH 04/16] Bat file location --- .github/workflows/app-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 9b7981ea..518daea7 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -26,7 +26,7 @@ jobs: - name: Install pgvector on Windows using install-pgvector.bat if: matrix.os == 'windows-latest' shell: cmd - run: .\install-pgvector.bat + run: .github\workflows\install-pgvector.bat - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: From d13546394c47feac5619fa23ca9e1e8301d09e25 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 00:07:26 +0000 Subject: [PATCH 05/16] Different way of pinning --- .github/workflows/app-tests.yaml | 2 +- requirements-dev.txt | 1 + src/entrypoint.sh | 1 + src/pyproject.toml | 26 ++-- src/requirements.txt | 206 +------------------------------ 5 files changed, 17 insertions(+), 219 deletions(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 518daea7..655aa75c 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: ["ubuntu-latest", "macos-13", "macos-latest-xlarge", "windows-latest"] + os: ["windows-latest"] python_version: ["3.10", "3.11", "3.12"] exclude: - os: macos-latest-xlarge diff --git a/requirements-dev.txt b/requirements-dev.txt index 0924b724..d1c56a4b 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,3 +2,4 @@ ruff pre-commit pip-tools +pip-compile-cross-platform \ No newline at end of file diff --git a/src/entrypoint.sh b/src/entrypoint.sh index f3c4cea8..0a743968 100644 --- a/src/entrypoint.sh +++ b/src/entrypoint.sh @@ -1,3 +1,4 @@ #!/bin/bash set -e +python3 -m pip install . python3 -m gunicorn "fastapi_app:create_app()" \ No newline at end of file diff --git a/src/pyproject.toml b/src/pyproject.toml index 9ceb6c4b..1d753fec 100644 --- a/src/pyproject.toml +++ b/src/pyproject.toml @@ -1,21 +1,19 @@ [project] name = "fastapi_app" version = "1.0.0" -description = "Create a relecloud demo application with fastapi and postgres-flexible" +description = "Create a application with fastapi and postgres-flexible" dependencies = [ - "fastapi", - "gunicorn", - "uvicorn", - "python-dotenv", - "environs", - "azure-identity", - "aiohttp", - "asyncpg", - "SQLAlchemy[asyncio]", - "pgvector", - "openai", - "tiktoken", - "openai-messages-token-helper" + "fastapi>=0.111.0,<1.0.0", + "python-dotenv>=1.0.1,<2.0.0", + "environs>=11.0.0,<12.0.0", + "azure-identity>=1.16.1,<2.0.0", + "aiohttp>=3.9.5,<4.0.0", + "asyncpg>=0.29.0,<1.0.0", + "SQLAlchemy[asyncio]>=2.0.30,<3.0.0", + "pgvector>=0.2.5,<0.3.0", + "openai>=1.34.0,<2.0.0", + "tiktoken>=0.7.0,<0.8.0", + "openai-messages-token-helper>=0.1.5,<0.2.0", ] [build-system] diff --git a/src/requirements.txt b/src/requirements.txt index 854d69d9..cf57fdaa 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,204 +1,2 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --output-file=requirements.txt pyproject.toml -# -aiohttp==3.9.5 - # via fastapi_app (pyproject.toml) -aiosignal==1.3.1 - # via aiohttp -annotated-types==0.7.0 - # via pydantic -anyio==4.4.0 - # via - # httpx - # openai - # starlette - # watchfiles -async-timeout==4.0.3 - # via asyncpg -asyncpg==0.29.0 - # via fastapi_app (pyproject.toml) -attrs==23.2.0 - # via aiohttp -azure-core==1.30.1 - # via azure-identity -azure-identity==1.16.0 - # via fastapi_app (pyproject.toml) -certifi==2024.2.2 - # via - # httpcore - # httpx - # requests -cffi==1.16.0 - # via cryptography -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via - # typer - # uvicorn -cryptography==42.0.7 - # via - # azure-identity - # msal - # pyjwt -distro==1.9.0 - # via openai -dnspython==2.6.1 - # via email-validator -email-validator==2.1.1 - # via fastapi -environs==11.0.0 - # via fastapi_app (pyproject.toml) -fastapi==0.111.0 - # via fastapi_app (pyproject.toml) -fastapi-cli==0.0.4 - # via fastapi -frozenlist==1.4.1 - # via - # aiohttp - # aiosignal -greenlet==3.0.3 - # via sqlalchemy -gunicorn==22.0.0 - # via fastapi_app (pyproject.toml) -h11==0.14.0 - # via - # httpcore - # uvicorn -httpcore==1.0.5 - # via httpx -httptools==0.6.1 - # via uvicorn -httpx==0.27.0 - # via - # fastapi - # openai -idna==3.7 - # via - # anyio - # email-validator - # httpx - # requests - # yarl -jinja2==3.1.4 - # via fastapi -markdown-it-py==3.0.0 - # via rich -markupsafe==2.1.5 - # via jinja2 -marshmallow==3.21.2 - # via environs -mdurl==0.1.2 - # via markdown-it-py -msal==1.28.0 - # via - # azure-identity - # msal-extensions -msal-extensions==1.1.0 - # via azure-identity -multidict==6.0.5 - # via - # aiohttp - # yarl -numpy==1.26.4 - # via pgvector -openai==1.31.0 - # via - # fastapi_app (pyproject.toml) - # openai-messages-token-helper -openai-messages-token-helper==0.1.4 - # via fastapi_app (pyproject.toml) -orjson==3.10.3 - # via fastapi -packaging==24.0 - # via - # gunicorn - # marshmallow - # msal-extensions -pgvector==0.2.5 - # via fastapi_app (pyproject.toml) -pillow==10.3.0 - # via openai-messages-token-helper -portalocker==2.8.2 - # via msal-extensions -pycparser==2.22 - # via cffi -pydantic==2.7.2 - # via - # fastapi - # openai -pydantic-core==2.18.3 - # via pydantic -pygments==2.18.0 - # via rich -pyjwt[crypto]==2.8.0 - # via - # msal - # pyjwt -python-dotenv==1.0.1 - # via - # environs - # fastapi_app (pyproject.toml) - # uvicorn -python-multipart==0.0.9 - # via fastapi -pyyaml==6.0.1 - # via uvicorn -regex==2024.5.15 - # via tiktoken -requests==2.32.3 - # via - # azure-core - # msal - # tiktoken -rich==13.7.1 - # via typer -shellingham==1.5.4 - # via typer -six==1.16.0 - # via azure-core -sniffio==1.3.1 - # via - # anyio - # httpx - # openai -sqlalchemy[asyncio]==2.0.30 - # via fastapi_app (pyproject.toml) -starlette==0.37.2 - # via fastapi -tiktoken==0.7.0 - # via - # fastapi_app (pyproject.toml) - # openai-messages-token-helper -tqdm==4.66.4 - # via openai -typer==0.12.3 - # via fastapi-cli -typing-extensions==4.12.0 - # via - # azure-core - # fastapi - # openai - # pydantic - # pydantic-core - # sqlalchemy - # typer -ujson==5.10.0 - # via fastapi -urllib3==2.2.1 - # via requests -uvicorn[standard]==0.30.0 - # via - # fastapi - # fastapi_app (pyproject.toml) -uvloop==0.19.0 - # via uvicorn -watchfiles==0.22.0 - # via uvicorn -websockets==12.0 - # via uvicorn -yarl==1.9.4 - # via aiohttp +gunicorn>=22.0.0,<23.0.0 +uvicorn>=0.30.1,<1.0.0 \ No newline at end of file From 4863a439fc222decfb98de65b74066d1cc4369fb Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:06:17 +0000 Subject: [PATCH 06/16] Add more OSes --- .github/workflows/app-tests.yaml | 5 ++++- .github/workflows/install-pgvector.sh | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 655aa75c..28e1882c 100644 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: ["windows-latest"] + os: ["ubuntu-latest", "windows-latest", "macos-latest-xlarge", "macos-13"] python_version: ["3.10", "3.11", "3.12"] exclude: - os: macos-latest-xlarge @@ -27,6 +27,9 @@ jobs: if: matrix.os == 'windows-latest' shell: cmd run: .github\workflows\install-pgvector.bat + - name: Install pgvector on MacOS/Linux using install-pgvector.sh + if: matrix.os != 'windows-latest' + run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh new file mode 100644 index 00000000..5f9aae4c --- /dev/null +++ b/.github/workflows/install-pgvector.sh @@ -0,0 +1,5 @@ +cd /tmp +git clone --branch v0.7.2 https://github.com/pgvector/pgvector.git +cd pgvector +make +make install # may need sudo \ No newline at end of file From 62ef4ae9baaf72c9395aaf65dc75ce6f0f116d51 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:08:11 +0000 Subject: [PATCH 07/16] Add more OSes --- .github/workflows/app-tests.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .github/workflows/app-tests.yaml diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml old mode 100644 new mode 100755 From d8947c6195d9cff091f15eed39f0f0dadd77780c Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:11:46 +0000 Subject: [PATCH 08/16] Fix chmod --- .github/workflows/install-pgvector.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh old mode 100644 new mode 100755 From 516b830472c1056abaf71244a65c759ce43d42bf Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:11:49 +0000 Subject: [PATCH 09/16] Fix chmod --- .github/workflows/app-tests.yaml | 1 + .github/workflows/install-pgvector.sh | 0 2 files changed, 1 insertion(+) mode change 100755 => 100644 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 28e1882c..8a6ed88a 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -29,6 +29,7 @@ jobs: run: .github\workflows\install-pgvector.bat - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' + shell: bash run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh old mode 100755 new mode 100644 From 0a4143b749e6927b40c7590d007c8bd28f5461de Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:13:55 +0000 Subject: [PATCH 10/16] Chmod again --- .github/workflows/app-tests.yaml | 1 - .github/workflows/install-pgvector.sh | 0 2 files changed, 1 deletion(-) mode change 100644 => 100755 .github/workflows/install-pgvector.sh diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 8a6ed88a..28e1882c 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -29,7 +29,6 @@ jobs: run: .github\workflows\install-pgvector.bat - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' - shell: bash run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh old mode 100644 new mode 100755 From 52d70b02129c48cda1ce7fc48fc6596e7832b5c3 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:15:51 +0000 Subject: [PATCH 11/16] Ubuntu workaround --- .github/workflows/app-tests.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 28e1882c..cd4a3d1c 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -27,6 +27,9 @@ jobs: if: matrix.os == 'windows-latest' shell: cmd run: .github\workflows\install-pgvector.bat + - name: Install PostgreSQL development libraries + if: matrix.os == 'ubuntu-latest' + run: sudo apt install postgresql-server-dev-16 - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' run: .github/workflows/install-pgvector.sh From 2fd13b5ab95e61cb68d945bcd37ff6a8c29f8e28 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:17:01 +0000 Subject: [PATCH 12/16] Apt update --- .github/workflows/app-tests.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index cd4a3d1c..1a4f0b1a 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -29,7 +29,9 @@ jobs: run: .github\workflows\install-pgvector.bat - name: Install PostgreSQL development libraries if: matrix.os == 'ubuntu-latest' - run: sudo apt install postgresql-server-dev-16 + run: | + sudo apt update + sudo apt install postgresql-server-dev-16 - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' run: .github/workflows/install-pgvector.sh From aba7116f8536a53db3a8e38ff2d7bd329326a1ca Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:50:34 +0000 Subject: [PATCH 13/16] Apt update --- .github/workflows/app-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 1a4f0b1a..a48594c3 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -31,7 +31,7 @@ jobs: if: matrix.os == 'ubuntu-latest' run: | sudo apt update - sudo apt install postgresql-server-dev-16 + sudo apt install postgresql-server-dev-14 - name: Install pgvector on MacOS/Linux using install-pgvector.sh if: matrix.os != 'windows-latest' run: .github/workflows/install-pgvector.sh From 38d126c52ba09d5e3d8a9fdf73c68f0f1092e988 Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 03:51:52 +0000 Subject: [PATCH 14/16] Apt update --- .github/workflows/install-pgvector.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/install-pgvector.sh b/.github/workflows/install-pgvector.sh index 5f9aae4c..387f56b8 100755 --- a/.github/workflows/install-pgvector.sh +++ b/.github/workflows/install-pgvector.sh @@ -2,4 +2,4 @@ cd /tmp git clone --branch v0.7.2 https://github.com/pgvector/pgvector.git cd pgvector make -make install # may need sudo \ No newline at end of file +sudo make install # may need sudo \ No newline at end of file From b1b6f2d536c605c234dbe9702301df0634d9410a Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 04:09:52 +0000 Subject: [PATCH 15/16] Apt update --- .github/workflows/app-tests.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index a48594c3..24faf3df 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -32,15 +32,15 @@ jobs: run: | sudo apt update sudo apt install postgresql-server-dev-14 - - name: Install pgvector on MacOS/Linux using install-pgvector.sh - if: matrix.os != 'windows-latest' - run: .github/workflows/install-pgvector.sh - name: Setup postgres uses: ikalnytskyi/action-setup-postgres@v6 with: username: admin password: postgres database: postgres + - name: Install pgvector on MacOS/Linux using install-pgvector.sh + if: matrix.os != 'windows-latest' + run: .github/workflows/install-pgvector.sh - name: Setup python uses: actions/setup-python@v5 with: From e186a3d0b3ed1a3d3f8424dde3763225b17fe6aa Mon Sep 17 00:00:00 2001 From: Pamela Fox Date: Thu, 13 Jun 2024 04:18:30 +0000 Subject: [PATCH 16/16] Apt update --- .github/workflows/app-tests.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/app-tests.yaml b/.github/workflows/app-tests.yaml index 24faf3df..af4a2d37 100755 --- a/.github/workflows/app-tests.yaml +++ b/.github/workflows/app-tests.yaml @@ -57,3 +57,12 @@ jobs: cp .env.sample .env python ./src/fastapi_app/setup_postgres_database.py python ./src/fastapi_app/setup_postgres_seeddata.py + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 18 + - name: Build frontend + run: | + cd ./src/frontend + npm install + npm run build \ No newline at end of file pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy