From 80525f0897e1cb365871f5f8e5f06963bc086e26 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 20 Feb 2026 22:38:20 -0500 Subject: [PATCH 01/27] mv found API keys to .env --- src/.example.env | 15 +++++++++++++++ src/components/Providers/AnalyticsProvider.tsx | 8 ++------ src/components/Providers/Providers.tsx | 7 +++---- src/hooks/queries/useWalkingDurationQuery.ts | 4 ++-- src/services/db.ts | 9 +++------ 5 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 src/.example.env diff --git a/src/.example.env b/src/.example.env new file mode 100644 index 00000000..65e84a2f --- /dev/null +++ b/src/.example.env @@ -0,0 +1,15 @@ +# Below is how your .env file should look. Make sure to replace the placeholder values with your actual API keys. + +# To get these details please message us in the #phlask-data channel on Slack + + +# Database +VITE_DB_API_KEY=db_api_key_here + +# Routing & Maps +VITE_OPEN_ROUTE_SERVICE_API_KEY=open_route_service_api_key_here +VITE_REACT_GOOGLE_MAPS_API_KEY=google_maps_api_key_here + +# PostHog Analytics +VITE_PUBLIC_POSTHOG_KEY=posthog_api_key_here +VITE_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com \ No newline at end of file diff --git a/src/components/Providers/AnalyticsProvider.tsx b/src/components/Providers/AnalyticsProvider.tsx index d120ef8a..ede18431 100644 --- a/src/components/Providers/AnalyticsProvider.tsx +++ b/src/components/Providers/AnalyticsProvider.tsx @@ -2,8 +2,7 @@ import { PostHogProvider } from 'posthog-js/react'; import type { PropsWithChildren } from 'react'; const postHogOptions = { - api_host: - import.meta.env.VITE_PUBLIC_POSTHOG_HOST || 'https://us.i.posthog.com', + api_host: import.meta.env.VITE_PUBLIC_POSTHOG_HOST, mask_all_text: true }; @@ -18,10 +17,7 @@ const AnalyticsProvider = ({ children }: PropsWithChildren) => { return ( {children} diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index e4dad1d5..7e5a1197 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -6,12 +6,11 @@ import ToolbarContextProvider from './ToolbarContextProvider'; import queryClient from 'services/queryClient'; import ThemeProvider from './ThemeProvider'; +// For the setup please check .example.env for setup instrucions +const REACT_GOOGLE_MAPS_APIKEY = import.meta.env.VITE_REACT_GOOGLE_MAPS_API_KEY; const Providers = ({ children }: PropsWithChildren) => ( - + diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index 5814396d..f35087bf 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -3,8 +3,8 @@ import type { ResourceEntry } from 'types/ResourceEntry'; import getUserLocation from 'utils/getUserLocation'; import useActiveSearchLocation from 'hooks/useActiveSearchLocation'; -const OPEN_ROUTE_SERVICE_API_KEY = - '5b3ce3597851110001cf6248ac903cdbe0364ca9850aa85cb64d8dfc'; +const OPEN_ROUTE_SERVICE_API_KEY = import.meta.env + .VITE_OPEN_ROUTE_SERVICE_API_KEY; const BASE_URL = 'https://api.openrouteservice.org/v2'; const PATH = '/directions/foot-walking'; diff --git a/src/services/db.ts b/src/services/db.ts index ae21ac51..f6acb967 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -3,13 +3,10 @@ import type { ResourceEntry } from 'types/ResourceEntry'; import type { ResourceTypeOption } from 'hooks/useResourceType'; import type { Contributor } from 'types/Contributor'; -// Need access to the database? Message us in the #phlask-data channel on Slack -const databaseUrl = - import.meta.env.VITE_DB_URL || 'https://wantycfbnzzocsbthqzs.supabase.co'; +// Need access to the database? Please refer to .example.env and message us in the #phlask-data channel on Slack +const databaseUrl = 'https://wantycfbnzzocsbthqzs.supabase.co'; +const databaseApiKey = import.meta.env.VITE_DB_API_KEY; const resourceDatabaseName = 'resources'; -const databaseApiKey = - import.meta.env.VITE_DB_API_KEY || - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6IndhbnR5Y2Zibnp6b2NzYnRocXpzIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzcwNDY2OTgsImV4cCI6MjA1MjYyMjY5OH0.yczsMOx3Y-zsWu-GjYEajIb0yw9fYWEIUglmmfM1zCY'; const contributorDatabaseName = 'airtable_contributors'; const supabase = createClient(databaseUrl, databaseApiKey); From 9aac547d970aec7a93de01211150ff7b438db29c Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 20 Feb 2026 23:06:25 -0500 Subject: [PATCH 02/27] all hardcoded ones are verfided and moved --- src/components/Verification/VerificationButton.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Verification/VerificationButton.tsx b/src/components/Verification/VerificationButton.tsx index 6c5c4a35..1e6a06d0 100644 --- a/src/components/Verification/VerificationButton.tsx +++ b/src/components/Verification/VerificationButton.tsx @@ -6,6 +6,7 @@ import { updateResource } from 'services/db'; import type { ResourceEntry, Verification } from 'types/ResourceEntry'; import useSelectedResource from 'hooks/useSelectedResource'; +//AKNOTES: Please check about this const PASSWORD = 'ZnJlZXdhdGVy'; // Ask in Slack if you want the real password type VerificationButtonProps = { From b6e95d7d30340d17e0f33fa94d7ca6a77d47ad51 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Tue, 24 Feb 2026 19:00:02 -0500 Subject: [PATCH 03/27] final mv --- src/components/Verification/VerificationButton.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Verification/VerificationButton.tsx b/src/components/Verification/VerificationButton.tsx index 1e6a06d0..5fa3d8fc 100644 --- a/src/components/Verification/VerificationButton.tsx +++ b/src/components/Verification/VerificationButton.tsx @@ -6,8 +6,7 @@ import { updateResource } from 'services/db'; import type { ResourceEntry, Verification } from 'types/ResourceEntry'; import useSelectedResource from 'hooks/useSelectedResource'; -//AKNOTES: Please check about this -const PASSWORD = 'ZnJlZXdhdGVy'; // Ask in Slack if you want the real password +const PASSWORD = import.meta.env.VITE_VERIFICATION_PASSWORD; type VerificationButtonProps = { resource: ResourceEntry; From c7d9b10f23057548ba4b4d85f942c1f45fe8c98b Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Tue, 24 Feb 2026 19:07:19 -0500 Subject: [PATCH 04/27] mv verification pwd --- src/.example.env | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/.example.env b/src/.example.env index 65e84a2f..c4d58885 100644 --- a/src/.example.env +++ b/src/.example.env @@ -12,4 +12,7 @@ VITE_REACT_GOOGLE_MAPS_API_KEY=google_maps_api_key_here # PostHog Analytics VITE_PUBLIC_POSTHOG_KEY=posthog_api_key_here -VITE_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com \ No newline at end of file +VITE_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com + +# Site Verification +VITE_VERIFICATION_PASSWORD=verification_password_here \ No newline at end of file From c5c530e7fd7f0d465d6baa5158bcc42cec382e08 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Tue, 24 Feb 2026 19:10:22 -0500 Subject: [PATCH 05/27] mv verification pwd --- src/.example.env | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/.example.env b/src/.example.env index c4d58885..de8846ce 100644 --- a/src/.example.env +++ b/src/.example.env @@ -1,8 +1,6 @@ # Below is how your .env file should look. Make sure to replace the placeholder values with your actual API keys. - # To get these details please message us in the #phlask-data channel on Slack - # Database VITE_DB_API_KEY=db_api_key_here From cd52af83ea63aaab81e39df1aa79194c9666a4ae Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Sun, 1 Mar 2026 19:30:30 -0500 Subject: [PATCH 06/27] add missing msg --- src/services/db.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/services/db.ts b/src/services/db.ts index f6acb967..6737bcf3 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -2,6 +2,7 @@ import { createClient } from '@supabase/supabase-js'; import type { ResourceEntry } from 'types/ResourceEntry'; import type { ResourceTypeOption } from 'hooks/useResourceType'; import type { Contributor } from 'types/Contributor'; +import { data } from 'react-router'; // Need access to the database? Please refer to .example.env and message us in the #phlask-data channel on Slack const databaseUrl = 'https://wantycfbnzzocsbthqzs.supabase.co'; @@ -9,6 +10,13 @@ const databaseApiKey = import.meta.env.VITE_DB_API_KEY; const resourceDatabaseName = 'resources'; const contributorDatabaseName = 'airtable_contributors'; +if (!databaseUrl || !databaseApiKey) { + const message = import.meta.env.DEV + ? 'Database credentials are missing! Make sure that `databaseUrl` and `databaseApiKey` are defined in a `.env` file' + : 'An unexpected error have happened. Please try again later.'; + throw data(new Error(message), { status: 500 }); +} + const supabase = createClient(databaseUrl, databaseApiKey); export type FetchResourcesOptions = { From 74b8a0bc28a0e83e56a85b9c783b4fa6c9296f4f Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Sun, 1 Mar 2026 19:49:21 -0500 Subject: [PATCH 07/27] moe yelling --- src/components/Providers/AnalyticsProvider.tsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/components/Providers/AnalyticsProvider.tsx b/src/components/Providers/AnalyticsProvider.tsx index ede18431..8db4f87a 100644 --- a/src/components/Providers/AnalyticsProvider.tsx +++ b/src/components/Providers/AnalyticsProvider.tsx @@ -1,8 +1,11 @@ import { PostHogProvider } from 'posthog-js/react'; import type { PropsWithChildren } from 'react'; +const APIHOST = import.meta.env.VITE_PUBLIC_POSTHOG_HOST; +const APIKEY = import.meta.env.VITE_PUBLIC_POSTHOG_KEY; + const postHogOptions = { - api_host: import.meta.env.VITE_PUBLIC_POSTHOG_HOST, + api_host: APIHOST, mask_all_text: true }; @@ -15,11 +18,15 @@ const AnalyticsProvider = ({ children }: PropsWithChildren) => { ) return children; + if (!APIHOST || !APIKEY) { + const message = import.meta.env.DEV + ? 'PostHog credentials are missing! Make sure that `VITE_PUBLIC_POSTHOG_HOST` and `VITE_PUBLIC_POSTHOG_KEY` are defined in a `.env` file' + : 'An unexpected error have happened. Please try again later.'; + throw new Error(message); + } + return ( - + {children} ); From 8ad514c8060a07a33f46a0e3b313aa574318d6cf Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Sun, 1 Mar 2026 19:57:43 -0500 Subject: [PATCH 08/27] added yelling in dev env for all keys and imports if missing --- src/components/Providers/Providers.tsx | 32 ++++++++++++------- .../Verification/VerificationButton.tsx | 7 ++++ src/hooks/queries/useWalkingDurationQuery.ts | 7 ++++ 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index 7e5a1197..a5690957 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -8,17 +8,25 @@ import ThemeProvider from './ThemeProvider'; // For the setup please check .example.env for setup instrucions const REACT_GOOGLE_MAPS_APIKEY = import.meta.env.VITE_REACT_GOOGLE_MAPS_API_KEY; -const Providers = ({ children }: PropsWithChildren) => ( - - - - - - {children} - - - - -); +const Providers = ({ children }: PropsWithChildren) => { + if (!REACT_GOOGLE_MAPS_APIKEY) { + const message = import.meta.env.DEV + ? 'Google Maps API key is missing! Make sure that `VITE_REACT_GOOGLE_MAPS_API_KEY` is defined in a `.env` file' + : 'An unexpected error have happened. Please try again later.'; + throw new Error(message); + } + return ( + + + + + + {children} + + + + + ); +}; export default Providers; diff --git a/src/components/Verification/VerificationButton.tsx b/src/components/Verification/VerificationButton.tsx index 5fa3d8fc..23ab1ac6 100644 --- a/src/components/Verification/VerificationButton.tsx +++ b/src/components/Verification/VerificationButton.tsx @@ -13,6 +13,13 @@ type VerificationButtonProps = { }; const VerificationButton = ({ resource }: VerificationButtonProps) => { + if (!PASSWORD) { + const message = import.meta.env.DEV + ? 'Verification password is missing! Make sure that `VITE_VERIFICATION_PASSWORD` is defined in a `.env` file' + : 'An unexpected error have happened. Please try again later.'; + throw new Error(message); + } + const { setSelectedResource } = useSelectedResource(); const [isModalOpen, setIsModalOpen] = useState(false); diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index f35087bf..91766453 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -58,6 +58,13 @@ export const useWalkingDurationQuery = ({ const { latitude, longitude } = selectedResource; const queryFn = async (): Promise => { + if (!OPEN_ROUTE_SERVICE_API_KEY) { + const message = import.meta.env.DEV + ? 'Open Route Service API key is missing! Make sure that `VITE_OPEN_ROUTE_SERVICE_API_KEY` is defined in a `.env` file' + : 'An unexpected error have happened. Please try again later.'; + throw new Error(message); + } + const locationPermission = await navigator.permissions.query({ name: 'geolocation' }); From 2ca51bfebc24f25e9c8ae5befb1626be347930d8 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 20:33:19 -0500 Subject: [PATCH 09/27] add: secerts workflow to test injections --- .github/workflows/betasite.yml | 9 +++++++++ .github/workflows/build_testsite.yml | 5 +++++ .github/workflows/cypress_testing.yml | 7 +++++++ docker-compose.yml | 4 ++++ 4 files changed, 25 insertions(+) diff --git a/.github/workflows/betasite.yml b/.github/workflows/betasite.yml index 98dfd166..47d99287 100644 --- a/.github/workflows/betasite.yml +++ b/.github/workflows/betasite.yml @@ -7,6 +7,10 @@ on: env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co + VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} + VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout @@ -22,6 +26,11 @@ jobs: role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/beta-access role-session-name: github-${{ github.sha }} aws-region: ${{ env.AWS_DEFAULT_REGION }} + - name: Check env + run: | + echo "AK CHECKING Variables..." + echo $VITE_DB_URL + echo $VITE_POSTHOG_KEY - name: Build and Deploy the Map run: | echo Build started on `date` diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 8367fed1..72883f77 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -3,6 +3,11 @@ name: Deploy Test Site on S3 on: [workflow_call] env: AWS_DEFAULT_REGION: us-east-2 + VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co + VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} + VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} jobs: build: diff --git a/.github/workflows/cypress_testing.yml b/.github/workflows/cypress_testing.yml index 1ad0fc4a..bad89555 100644 --- a/.github/workflows/cypress_testing.yml +++ b/.github/workflows/cypress_testing.yml @@ -2,6 +2,13 @@ name: Cypress Tests on: [workflow_call] +env: + VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co + VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} + VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} + jobs: cypress_tests: strategy: diff --git a/docker-compose.yml b/docker-compose.yml index 9ae4f4c5..157bd1c4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,6 +21,10 @@ services: environment: CI: 'false' VITE_DB_URL: + VITE_SUPABASE_API_KEY: + VITE_REACT_GOOGLE_MAPS_APIKEY: + VITE_POSTHOG_KEY: + VITE_VERIFICATION_PASSWORD: volumes: - './docker/build:/usr/src/app/build' - './docker/testResults:/usr/src/app/testResults' From 506b34ccff7a5a6878fa653791e95765dabe31bd Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 21:00:38 -0500 Subject: [PATCH 10/27] add: secerts workflow to test injections --- .github/workflows/build_testsite.yml | 19 ++++++++++++------- .github/workflows/cypress_testing.yml | 15 +++++++-------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 72883f77..158d51a9 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -1,17 +1,17 @@ name: Deploy Test Site on S3 on: [workflow_call] -env: - AWS_DEFAULT_REGION: us-east-2 - VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co - VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} - VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} - VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} jobs: build: runs-on: ubuntu-latest + env: + AWS_DEFAULT_REGION: us-east-2 + VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co + VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} + VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} steps: - uses: actions/checkout@v1 - name: Configure AWS Credentials @@ -20,6 +20,11 @@ jobs: role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/test-access role-session-name: github-${{ github.sha }} aws-region: ${{ env.AWS_DEFAULT_REGION }} + - name: Checking env in TEST BUILD + run: | + echo "######---------------------AK CHECKING Variables...YOOOOOOOO" + echo $VITE_DB_URL + echo $VITE_POSTHOG_KEY - name: Build and Deploy the Map run: | echo Build started on `date` diff --git a/.github/workflows/cypress_testing.yml b/.github/workflows/cypress_testing.yml index bad89555..d3d6dd05 100644 --- a/.github/workflows/cypress_testing.yml +++ b/.github/workflows/cypress_testing.yml @@ -2,15 +2,15 @@ name: Cypress Tests on: [workflow_call] -env: - VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co - VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} - VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} - VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} - jobs: cypress_tests: + runs-on: ubuntu-latest + env: + VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co + VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} + VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} strategy: matrix: include: @@ -20,7 +20,6 @@ jobs: - spec: 'cypress/e2e/mobile/*.cy.ts' config_file: 'cypress.mobile.config.ts' video_path: 'cypress/videos/mobile' - runs-on: ubuntu-latest steps: - uses: actions/setup-node@v6 with: From ebc392fe77a945121167e0e91681f3ae3972fdfe Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 21:33:20 -0500 Subject: [PATCH 11/27] should work -- clean up after --- .github/workflows/betasite.yml | 2 +- .github/workflows/build_testsite.yml | 7 ++++++- .github/workflows/cypress_testing.yml | 2 +- docker-compose.yml | 2 +- src/services/db.ts | 10 +++++++--- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.github/workflows/betasite.yml b/.github/workflows/betasite.yml index 47d99287..538a2a0b 100644 --- a/.github/workflows/betasite.yml +++ b/.github/workflows/betasite.yml @@ -9,7 +9,7 @@ env: VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} - VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} permissions: id-token: write # This is required for requesting the JWT diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 158d51a9..cef8a8f4 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -10,7 +10,7 @@ jobs: VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} - VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} steps: - uses: actions/checkout@v1 @@ -29,6 +29,11 @@ jobs: run: | echo Build started on `date` echo Building the webapp... + # echo "VITE_DB_URL=${VITE_DB_URL}" >> .env + # echo "VITE_POSTHOG_KEY=${VITE_POSTHOG_KEY}" >> .env + # echo "VITE_REACT_GOOGLE_MAPS_APIKEY=${VITE_REACT_GOOGLE_MAPS_APIKEY}" >> .env + # echo "VITE_DB_API_KEY=${VITE_DB_API_KEY}" >> .env + # echo "VITE_VERIFICATION_PASSWORD=${VITE_VERIFICATION_PASSWORD}" >> .env docker compose run prod_build echo Build completed on `date` echo Pushing the webapp to S3... diff --git a/.github/workflows/cypress_testing.yml b/.github/workflows/cypress_testing.yml index d3d6dd05..b4e0806c 100644 --- a/.github/workflows/cypress_testing.yml +++ b/.github/workflows/cypress_testing.yml @@ -9,7 +9,7 @@ jobs: VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} - VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} strategy: matrix: diff --git a/docker-compose.yml b/docker-compose.yml index 157bd1c4..67938433 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ services: environment: CI: 'false' VITE_DB_URL: - VITE_SUPABASE_API_KEY: + VITE_DB_API_KEY: VITE_REACT_GOOGLE_MAPS_APIKEY: VITE_POSTHOG_KEY: VITE_VERIFICATION_PASSWORD: diff --git a/src/services/db.ts b/src/services/db.ts index ed2b521d..23ce7305 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -132,11 +132,15 @@ export const getContributors = async (): Promise => { return data; }; -export const getResourceProviders = async (resourceId: string): Promise => { +export const getResourceProviders = async ( + resourceId: string +): Promise => { const { data, error } = await supabase .from(providersDatabaseName) - .select('name, logo_url, url:website_url, resource_providers!inner(resource_id)') - .eq('resource_providers.resource_id', resourceId) + .select( + 'name, logo_url, url:website_url, resource_providers!inner(resource_id)' + ) + .eq('resource_providers.resource_id', resourceId); if (error) { throw error; } From 69ef167db419d0913c36b9e8f742534e59112545 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 21:42:58 -0500 Subject: [PATCH 12/27] another try to make it work -- clean up after --- .github/workflows/build_testsite.yml | 5 ----- .github/workflows/testsite.yml | 1 + 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index cef8a8f4..00be71a3 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -29,11 +29,6 @@ jobs: run: | echo Build started on `date` echo Building the webapp... - # echo "VITE_DB_URL=${VITE_DB_URL}" >> .env - # echo "VITE_POSTHOG_KEY=${VITE_POSTHOG_KEY}" >> .env - # echo "VITE_REACT_GOOGLE_MAPS_APIKEY=${VITE_REACT_GOOGLE_MAPS_APIKEY}" >> .env - # echo "VITE_DB_API_KEY=${VITE_DB_API_KEY}" >> .env - # echo "VITE_VERIFICATION_PASSWORD=${VITE_VERIFICATION_PASSWORD}" >> .env docker compose run prod_build echo Build completed on `date` echo Pushing the webapp to S3... diff --git a/.github/workflows/testsite.yml b/.github/workflows/testsite.yml index 6c8ce53b..a074ea28 100644 --- a/.github/workflows/testsite.yml +++ b/.github/workflows/testsite.yml @@ -15,3 +15,4 @@ jobs: secrets: inherit cypress-testing: uses: ./.github/workflows/cypress_testing.yml + secrets: inherit From 3c5652d661d1f0db4dcbdb190e9c83bd27936f4c Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 21:52:32 -0500 Subject: [PATCH 13/27] another try to make it work -- clean up after --- .github/workflows/build_testsite.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 00be71a3..68f670dd 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -23,10 +23,14 @@ jobs: - name: Checking env in TEST BUILD run: | echo "######---------------------AK CHECKING Variables...YOOOOOOOO" - echo $VITE_DB_URL - echo $VITE_POSTHOG_KEY + echo "DB_URL: $VITE_DB_URL" + echo "DB_API_KEY: $VITE_DB_API_KEY" + echo "MAPS_KEY: $VITE_REACT_GOOGLE_MAPS_APIKEY" + echo "POSTHOG: $VITE_POSTHOG_KEY" - name: Build and Deploy the Map run: | + echo "--------------AK CHECKING Variables in prod_build container..." + docker compose run --entrypoint "env" prod_build | grep VITE_ echo Build started on `date` echo Building the webapp... docker compose run prod_build From ca3c34b0dee36a7cbc0c8a8ab73aee6ac37f9161 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 22:10:47 -0500 Subject: [PATCH 14/27] try 4 to make it work -- clean up after --- .github/workflows/build_testsite.yml | 6 ++++-- docker-compose.yml | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 68f670dd..54531608 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -11,6 +11,7 @@ jobs: VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} steps: - uses: actions/checkout@v1 @@ -22,14 +23,15 @@ jobs: aws-region: ${{ env.AWS_DEFAULT_REGION }} - name: Checking env in TEST BUILD run: | - echo "######---------------------AK CHECKING Variables...YOOOOOOOO" + ## AKDELETE echo "DB_URL: $VITE_DB_URL" echo "DB_API_KEY: $VITE_DB_API_KEY" + echo "SUPABASE_API_KEY: $VITE_SUPABASE_API_KEY" echo "MAPS_KEY: $VITE_REACT_GOOGLE_MAPS_APIKEY" echo "POSTHOG: $VITE_POSTHOG_KEY" - name: Build and Deploy the Map run: | - echo "--------------AK CHECKING Variables in prod_build container..." + ## AKDELETE docker compose run --entrypoint "env" prod_build | grep VITE_ echo Build started on `date` echo Building the webapp... diff --git a/docker-compose.yml b/docker-compose.yml index 67938433..b10c1084 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,11 +17,12 @@ services: - '.:/usr/src/app' prod_build: build: . - entrypoint: bash -c "pnpm build" + entrypoint: bash -c "(env | grep VITE_ > .env.local || true) && pnpm build" environment: CI: 'false' VITE_DB_URL: VITE_DB_API_KEY: + VITE_SUPABASE_API_KEY: VITE_REACT_GOOGLE_MAPS_APIKEY: VITE_POSTHOG_KEY: VITE_VERIFICATION_PASSWORD: From fb7d2fba75b716efb99cc08238f973061a06b520 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 22:18:58 -0500 Subject: [PATCH 15/27] try 5 to make it work -- clean up after --- src/services/db.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/db.ts b/src/services/db.ts index 23ce7305..18a70efb 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -6,7 +6,9 @@ import { data } from 'react-router'; // Need access to the database? Please refer to .example.env and message us in the #phlask-data channel on Slack const databaseUrl = 'https://wantycfbnzzocsbthqzs.supabase.co'; -const databaseApiKey = import.meta.env.VITE_DB_API_KEY; +const databaseApiKey = + import.meta.env.VITE_DB_API_KEY || + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6IndhbnR5Y2Zibnp6b2NzYnRocXpzIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzcwNDY2OTgsImV4cCI6MjA1MjYyMjY5OH0.yczsMOx3Y-zsWu-GjYEajIb0yw9fYWEIUglmmfM1zCY'; const resourceDatabaseName = 'resources'; const contributorDatabaseName = 'airtable_contributors'; const providersDatabaseName = 'providers'; From 9010d3233f57f528d5bab509038e58502ca51dd5 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 22:24:20 -0500 Subject: [PATCH 16/27] try 6 to make it work -- clean up after --- docker-compose.yml | 2 +- src/services/db.ts | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b10c1084..16caa7ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,7 +17,7 @@ services: - '.:/usr/src/app' prod_build: build: . - entrypoint: bash -c "(env | grep VITE_ > .env.local || true) && pnpm build" + entrypoint: bash -c "(env | grep VITE_ > .env.production.local || true) && pnpm build" environment: CI: 'false' VITE_DB_URL: diff --git a/src/services/db.ts b/src/services/db.ts index 18a70efb..ee6d438c 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -8,15 +8,22 @@ import { data } from 'react-router'; const databaseUrl = 'https://wantycfbnzzocsbthqzs.supabase.co'; const databaseApiKey = import.meta.env.VITE_DB_API_KEY || + import.meta.env.VITE_SUPABASE_API_KEY || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6IndhbnR5Y2Zibnp6b2NzYnRocXpzIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzcwNDY2OTgsImV4cCI6MjA1MjYyMjY5OH0.yczsMOx3Y-zsWu-GjYEajIb0yw9fYWEIUglmmfM1zCY'; const resourceDatabaseName = 'resources'; const contributorDatabaseName = 'airtable_contributors'; const providersDatabaseName = 'providers'; +// if (!databaseUrl || !databaseApiKey) { +// const message = import.meta.env.DEV +// ? 'Database credentials are missing! Make sure that `databaseUrl` and `databaseApiKey` are defined in a `.env` file' +// : 'An unexpected error have happened. Please try again later.'; +// throw data(new Error(message), { status: 500 }); +// } + if (!databaseUrl || !databaseApiKey) { - const message = import.meta.env.DEV - ? 'Database credentials are missing! Make sure that `databaseUrl` and `databaseApiKey` are defined in a `.env` file' - : 'An unexpected error have happened. Please try again later.'; + // We are throwing a highly detailed error message so we can see it in the console! + const message = `🚨 DEBUG: Credentials Missing! URL is ${!!databaseUrl}. API Key is ${!!databaseApiKey}.`; throw data(new Error(message), { status: 500 }); } From dc7fee31a4ccf170161b71e4af8c0b340187fd5f Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 22:32:19 -0500 Subject: [PATCH 17/27] try 7 debug missing key ugg --- src/components/Providers/AnalyticsProvider.tsx | 2 +- src/components/Providers/Providers.tsx | 2 +- src/components/Verification/VerificationButton.tsx | 2 +- src/hooks/queries/useWalkingDurationQuery.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/Providers/AnalyticsProvider.tsx b/src/components/Providers/AnalyticsProvider.tsx index 8db4f87a..a8b937de 100644 --- a/src/components/Providers/AnalyticsProvider.tsx +++ b/src/components/Providers/AnalyticsProvider.tsx @@ -21,7 +21,7 @@ const AnalyticsProvider = ({ children }: PropsWithChildren) => { if (!APIHOST || !APIKEY) { const message = import.meta.env.DEV ? 'PostHog credentials are missing! Make sure that `VITE_PUBLIC_POSTHOG_HOST` and `VITE_PUBLIC_POSTHOG_KEY` are defined in a `.env` file' - : 'An unexpected error have happened. Please try again later.'; + : 'An unexpected error have happened. AKDELETE: POSTHOG Missing Please try again later.'; throw new Error(message); } diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index a5690957..a01e6540 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -12,7 +12,7 @@ const Providers = ({ children }: PropsWithChildren) => { if (!REACT_GOOGLE_MAPS_APIKEY) { const message = import.meta.env.DEV ? 'Google Maps API key is missing! Make sure that `VITE_REACT_GOOGLE_MAPS_API_KEY` is defined in a `.env` file' - : 'An unexpected error have happened. Please try again later.'; + : 'An unexpected error have happened. AKDELETE: Maps Key missing Please try again later.'; throw new Error(message); } return ( diff --git a/src/components/Verification/VerificationButton.tsx b/src/components/Verification/VerificationButton.tsx index 23ab1ac6..5a40ce0e 100644 --- a/src/components/Verification/VerificationButton.tsx +++ b/src/components/Verification/VerificationButton.tsx @@ -16,7 +16,7 @@ const VerificationButton = ({ resource }: VerificationButtonProps) => { if (!PASSWORD) { const message = import.meta.env.DEV ? 'Verification password is missing! Make sure that `VITE_VERIFICATION_PASSWORD` is defined in a `.env` file' - : 'An unexpected error have happened. Please try again later.'; + : 'An unexpected error have happened. AKDELTE: Verification missing Please try again later.'; throw new Error(message); } diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index 91766453..fe830e98 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -61,7 +61,7 @@ export const useWalkingDurationQuery = ({ if (!OPEN_ROUTE_SERVICE_API_KEY) { const message = import.meta.env.DEV ? 'Open Route Service API key is missing! Make sure that `VITE_OPEN_ROUTE_SERVICE_API_KEY` is defined in a `.env` file' - : 'An unexpected error have happened. Please try again later.'; + : 'An unexpected error have happened. AKDELETE OPEN ROUTE MISSING Please try again later.'; throw new Error(message); } From 2fb5fecc265e8999885eecb8abb3716cbd751420 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 22:33:17 -0500 Subject: [PATCH 18/27] try 7 debug missing key ugg --- src/services/db.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/services/db.ts b/src/services/db.ts index ee6d438c..c4a175d1 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -6,24 +6,15 @@ import { data } from 'react-router'; // Need access to the database? Please refer to .example.env and message us in the #phlask-data channel on Slack const databaseUrl = 'https://wantycfbnzzocsbthqzs.supabase.co'; -const databaseApiKey = - import.meta.env.VITE_DB_API_KEY || - import.meta.env.VITE_SUPABASE_API_KEY || - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6IndhbnR5Y2Zibnp6b2NzYnRocXpzIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzcwNDY2OTgsImV4cCI6MjA1MjYyMjY5OH0.yczsMOx3Y-zsWu-GjYEajIb0yw9fYWEIUglmmfM1zCY'; +const databaseApiKey = import.meta.env.VITE_DB_API_KEY; const resourceDatabaseName = 'resources'; const contributorDatabaseName = 'airtable_contributors'; const providersDatabaseName = 'providers'; -// if (!databaseUrl || !databaseApiKey) { -// const message = import.meta.env.DEV -// ? 'Database credentials are missing! Make sure that `databaseUrl` and `databaseApiKey` are defined in a `.env` file' -// : 'An unexpected error have happened. Please try again later.'; -// throw data(new Error(message), { status: 500 }); -// } - if (!databaseUrl || !databaseApiKey) { - // We are throwing a highly detailed error message so we can see it in the console! - const message = `🚨 DEBUG: Credentials Missing! URL is ${!!databaseUrl}. API Key is ${!!databaseApiKey}.`; + const message = import.meta.env.DEV + ? 'Database credentials are missing! Make sure that `databaseUrl` and `databaseApiKey` are defined in a `.env` file' + : 'An unexpected error have happened. AKDELETE: DB KEY MISSING Please try again later.'; throw data(new Error(message), { status: 500 }); } From 189742260a73331413dff0501609138ea1b1a826 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 22:48:35 -0500 Subject: [PATCH 19/27] try 8 should work --- .github/workflows/betasite.yml | 2 +- .github/workflows/build_testsite.yml | 6 ++---- .github/workflows/cypress_testing.yml | 2 +- docker-compose.yml | 2 +- src/components/Providers/Providers.tsx | 7 ++++--- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/betasite.yml b/.github/workflows/betasite.yml index 538a2a0b..3e3c2520 100644 --- a/.github/workflows/betasite.yml +++ b/.github/workflows/betasite.yml @@ -8,7 +8,7 @@ env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} permissions: diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 54531608..a20813b0 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -9,9 +9,8 @@ jobs: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} - VITE_SUPABASE_API_KEY: ${{ secrets.SUPABASE_API_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} steps: - uses: actions/checkout@v1 @@ -26,8 +25,7 @@ jobs: ## AKDELETE echo "DB_URL: $VITE_DB_URL" echo "DB_API_KEY: $VITE_DB_API_KEY" - echo "SUPABASE_API_KEY: $VITE_SUPABASE_API_KEY" - echo "MAPS_KEY: $VITE_REACT_GOOGLE_MAPS_APIKEY" + echo "MAPS_KEY: $VITE_REACT_GOOGLE_MAPS_API_KEY" echo "POSTHOG: $VITE_POSTHOG_KEY" - name: Build and Deploy the Map run: | diff --git a/.github/workflows/cypress_testing.yml b/.github/workflows/cypress_testing.yml index b4e0806c..feabe1b5 100644 --- a/.github/workflows/cypress_testing.yml +++ b/.github/workflows/cypress_testing.yml @@ -8,7 +8,7 @@ jobs: env: VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_APIKEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} strategy: diff --git a/docker-compose.yml b/docker-compose.yml index 16caa7ec..ba120ab7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,7 +23,7 @@ services: VITE_DB_URL: VITE_DB_API_KEY: VITE_SUPABASE_API_KEY: - VITE_REACT_GOOGLE_MAPS_APIKEY: + VITE_REACT_GOOGLE_MAPS_API_KEY: VITE_POSTHOG_KEY: VITE_VERIFICATION_PASSWORD: volumes: diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index a01e6540..6e69563a 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -7,9 +7,10 @@ import queryClient from 'services/queryClient'; import ThemeProvider from './ThemeProvider'; // For the setup please check .example.env for setup instrucions -const REACT_GOOGLE_MAPS_APIKEY = import.meta.env.VITE_REACT_GOOGLE_MAPS_API_KEY; +const REACT_GOOGLE_MAPS_API_KEY = import.meta.env + .VITE_REACT_GOOGLE_MAPS_API_KEY; const Providers = ({ children }: PropsWithChildren) => { - if (!REACT_GOOGLE_MAPS_APIKEY) { + if (!REACT_GOOGLE_MAPS_API_KEY) { const message = import.meta.env.DEV ? 'Google Maps API key is missing! Make sure that `VITE_REACT_GOOGLE_MAPS_API_KEY` is defined in a `.env` file' : 'An unexpected error have happened. AKDELETE: Maps Key missing Please try again later.'; @@ -17,7 +18,7 @@ const Providers = ({ children }: PropsWithChildren) => { } return ( - + From a447e9fe5e1ece739faaf049d8ffd738d71766e1 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 23:04:19 -0500 Subject: [PATCH 20/27] working cleaup done --- .github/workflows/betasite.yml | 5 ----- .github/workflows/build_testsite.yml | 9 --------- .github/workflows/lighthouse_testing.yml | 4 ++-- .github/workflows/prodsite.yml | 4 ++++ docker-compose.yml | 2 +- src/components/Providers/AnalyticsProvider.tsx | 2 +- src/components/Providers/Providers.tsx | 2 +- src/hooks/queries/useWalkingDurationQuery.ts | 2 +- src/services/db.ts | 2 +- 9 files changed, 11 insertions(+), 21 deletions(-) diff --git a/.github/workflows/betasite.yml b/.github/workflows/betasite.yml index 3e3c2520..d5797a0f 100644 --- a/.github/workflows/betasite.yml +++ b/.github/workflows/betasite.yml @@ -26,11 +26,6 @@ jobs: role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/beta-access role-session-name: github-${{ github.sha }} aws-region: ${{ env.AWS_DEFAULT_REGION }} - - name: Check env - run: | - echo "AK CHECKING Variables..." - echo $VITE_DB_URL - echo $VITE_POSTHOG_KEY - name: Build and Deploy the Map run: | echo Build started on `date` diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index a20813b0..7231a4ec 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -20,17 +20,8 @@ jobs: role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/test-access role-session-name: github-${{ github.sha }} aws-region: ${{ env.AWS_DEFAULT_REGION }} - - name: Checking env in TEST BUILD - run: | - ## AKDELETE - echo "DB_URL: $VITE_DB_URL" - echo "DB_API_KEY: $VITE_DB_API_KEY" - echo "MAPS_KEY: $VITE_REACT_GOOGLE_MAPS_API_KEY" - echo "POSTHOG: $VITE_POSTHOG_KEY" - name: Build and Deploy the Map run: | - ## AKDELETE - docker compose run --entrypoint "env" prod_build | grep VITE_ echo Build started on `date` echo Building the webapp... docker compose run prod_build diff --git a/.github/workflows/lighthouse_testing.yml b/.github/workflows/lighthouse_testing.yml index bb112947..b9a82e11 100644 --- a/.github/workflows/lighthouse_testing.yml +++ b/.github/workflows/lighthouse_testing.yml @@ -4,8 +4,8 @@ on: [workflow_call] env: AWS_DEFAULT_REGION: us-east-2 permissions: - id-token: write # This is required for requesting the JWT - contents: read # This is required for actions/checkout + id-token: write # This is required for requesting the JWT + contents: read # This is required for actions/checkout jobs: lighthouse-check: diff --git a/.github/workflows/prodsite.yml b/.github/workflows/prodsite.yml index 07366f3e..995dc52e 100644 --- a/.github/workflows/prodsite.yml +++ b/.github/workflows/prodsite.yml @@ -7,6 +7,10 @@ on: env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co + VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout diff --git a/docker-compose.yml b/docker-compose.yml index ba120ab7..8f9e4906 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,7 +17,7 @@ services: - '.:/usr/src/app' prod_build: build: . - entrypoint: bash -c "(env | grep VITE_ > .env.production.local || true) && pnpm build" + entrypoint: bash -c "pnpm build" environment: CI: 'false' VITE_DB_URL: diff --git a/src/components/Providers/AnalyticsProvider.tsx b/src/components/Providers/AnalyticsProvider.tsx index a8b937de..21e03a58 100644 --- a/src/components/Providers/AnalyticsProvider.tsx +++ b/src/components/Providers/AnalyticsProvider.tsx @@ -21,7 +21,7 @@ const AnalyticsProvider = ({ children }: PropsWithChildren) => { if (!APIHOST || !APIKEY) { const message = import.meta.env.DEV ? 'PostHog credentials are missing! Make sure that `VITE_PUBLIC_POSTHOG_HOST` and `VITE_PUBLIC_POSTHOG_KEY` are defined in a `.env` file' - : 'An unexpected error have happened. AKDELETE: POSTHOG Missing Please try again later.'; + : 'An unexpected error happened with analytics. Please try again later.'; throw new Error(message); } diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index 6e69563a..666de3cb 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -13,7 +13,7 @@ const Providers = ({ children }: PropsWithChildren) => { if (!REACT_GOOGLE_MAPS_API_KEY) { const message = import.meta.env.DEV ? 'Google Maps API key is missing! Make sure that `VITE_REACT_GOOGLE_MAPS_API_KEY` is defined in a `.env` file' - : 'An unexpected error have happened. AKDELETE: Maps Key missing Please try again later.'; + : 'An unexpected error happened with maps. Please try again later.'; throw new Error(message); } return ( diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index fe830e98..ac32ec00 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -61,7 +61,7 @@ export const useWalkingDurationQuery = ({ if (!OPEN_ROUTE_SERVICE_API_KEY) { const message = import.meta.env.DEV ? 'Open Route Service API key is missing! Make sure that `VITE_OPEN_ROUTE_SERVICE_API_KEY` is defined in a `.env` file' - : 'An unexpected error have happened. AKDELETE OPEN ROUTE MISSING Please try again later.'; + : 'An unexpected error happened with routes. Please try again later.'; throw new Error(message); } diff --git a/src/services/db.ts b/src/services/db.ts index c4a175d1..dc8b6e74 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -14,7 +14,7 @@ const providersDatabaseName = 'providers'; if (!databaseUrl || !databaseApiKey) { const message = import.meta.env.DEV ? 'Database credentials are missing! Make sure that `databaseUrl` and `databaseApiKey` are defined in a `.env` file' - : 'An unexpected error have happened. AKDELETE: DB KEY MISSING Please try again later.'; + : 'An unexpected error happend with supabase. Please try again later.'; throw data(new Error(message), { status: 500 }); } From a4d16e27a94d19b194b6f3849efcd9beded987ef Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 23:14:14 -0500 Subject: [PATCH 21/27] testing something -- need to add more secret keys --- src/hooks/queries/useWalkingDurationQuery.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index ac32ec00..9201b479 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -3,8 +3,9 @@ import type { ResourceEntry } from 'types/ResourceEntry'; import getUserLocation from 'utils/getUserLocation'; import useActiveSearchLocation from 'hooks/useActiveSearchLocation'; -const OPEN_ROUTE_SERVICE_API_KEY = import.meta.env - .VITE_OPEN_ROUTE_SERVICE_API_KEY; +const OPEN_ROUTE_SERVICE_API_KEY = + import.meta.env.VITE_OPEN_ROUTE_SERVICE_API_KEY || + '5b3ce3597851110001cf6248ac903cdbe0364ca9850aa85cb64d8dfc'; const BASE_URL = 'https://api.openrouteservice.org/v2'; const PATH = '/directions/foot-walking'; From 5c451ebe5e300acc7ca744cc93d6958eac6e7441 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 6 Mar 2026 23:36:50 -0500 Subject: [PATCH 22/27] just need to add one more key to GH secrets and should work --- .github/workflows/betasite.yml | 5 +++-- .github/workflows/build_testsite.yml | 5 +++-- .github/workflows/cypress_testing.yml | 5 +++-- .github/workflows/prodsite.yml | 5 +++-- docker-compose.yml | 4 ++-- src/.example.env | 10 +--------- src/components/Providers/AnalyticsProvider.tsx | 6 +++--- src/components/Providers/Providers.tsx | 3 +-- src/components/Verification/VerificationButton.tsx | 2 +- src/hooks/queries/useWalkingDurationQuery.ts | 4 ++-- src/services/db.ts | 4 ++-- 11 files changed, 24 insertions(+), 29 deletions(-) diff --git a/.github/workflows/betasite.yml b/.github/workflows/betasite.yml index d5797a0f..61100e48 100644 --- a/.github/workflows/betasite.yml +++ b/.github/workflows/betasite.yml @@ -7,9 +7,10 @@ on: env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co - VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} + VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} permissions: id-token: write # This is required for requesting the JWT diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 7231a4ec..0e5038b3 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -8,9 +8,10 @@ jobs: env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co - VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} + VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} steps: - uses: actions/checkout@v1 diff --git a/.github/workflows/cypress_testing.yml b/.github/workflows/cypress_testing.yml index feabe1b5..2eb278b3 100644 --- a/.github/workflows/cypress_testing.yml +++ b/.github/workflows/cypress_testing.yml @@ -7,9 +7,10 @@ jobs: runs-on: ubuntu-latest env: VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co - VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} + VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} strategy: matrix: diff --git a/.github/workflows/prodsite.yml b/.github/workflows/prodsite.yml index 995dc52e..18052abe 100644 --- a/.github/workflows/prodsite.yml +++ b/.github/workflows/prodsite.yml @@ -7,9 +7,10 @@ on: env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co - VITE_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} + VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} permissions: id-token: write # This is required for requesting the JWT diff --git a/docker-compose.yml b/docker-compose.yml index 8f9e4906..9432610a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,9 +22,9 @@ services: CI: 'false' VITE_DB_URL: VITE_DB_API_KEY: - VITE_SUPABASE_API_KEY: VITE_REACT_GOOGLE_MAPS_API_KEY: - VITE_POSTHOG_KEY: + VITE_OPEN_ROUTE_SERVICE_API_KEY: + VITE_PUBLIC_POSTHOG_KEY: VITE_VERIFICATION_PASSWORD: volumes: - './docker/build:/usr/src/app/build' diff --git a/src/.example.env b/src/.example.env index de8846ce..7269349e 100644 --- a/src/.example.env +++ b/src/.example.env @@ -1,16 +1,8 @@ # Below is how your .env file should look. Make sure to replace the placeholder values with your actual API keys. # To get these details please message us in the #phlask-data channel on Slack -# Database VITE_DB_API_KEY=db_api_key_here - -# Routing & Maps -VITE_OPEN_ROUTE_SERVICE_API_KEY=open_route_service_api_key_here VITE_REACT_GOOGLE_MAPS_API_KEY=google_maps_api_key_here - -# PostHog Analytics +VITE_OPEN_ROUTE_SERVICE_API_KEY=open_route_service_api_key_here VITE_PUBLIC_POSTHOG_KEY=posthog_api_key_here -VITE_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com - -# Site Verification VITE_VERIFICATION_PASSWORD=verification_password_here \ No newline at end of file diff --git a/src/components/Providers/AnalyticsProvider.tsx b/src/components/Providers/AnalyticsProvider.tsx index 21e03a58..5eeaffb3 100644 --- a/src/components/Providers/AnalyticsProvider.tsx +++ b/src/components/Providers/AnalyticsProvider.tsx @@ -1,7 +1,7 @@ import { PostHogProvider } from 'posthog-js/react'; import type { PropsWithChildren } from 'react'; -const APIHOST = import.meta.env.VITE_PUBLIC_POSTHOG_HOST; +const APIHOST = 'https://us.i.posthog.com'; const APIKEY = import.meta.env.VITE_PUBLIC_POSTHOG_KEY; const postHogOptions = { @@ -18,9 +18,9 @@ const AnalyticsProvider = ({ children }: PropsWithChildren) => { ) return children; - if (!APIHOST || !APIKEY) { + if (!APIKEY) { const message = import.meta.env.DEV - ? 'PostHog credentials are missing! Make sure that `VITE_PUBLIC_POSTHOG_HOST` and `VITE_PUBLIC_POSTHOG_KEY` are defined in a `.env` file' + ? 'PostHog credentials are missing! Make sure that `VITE_PUBLIC_POSTHOG_KEY` is defined in your `.env` file. Refer to `.example.env`.' : 'An unexpected error happened with analytics. Please try again later.'; throw new Error(message); } diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index 666de3cb..54037baa 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -6,13 +6,12 @@ import ToolbarContextProvider from './ToolbarContextProvider'; import queryClient from 'services/queryClient'; import ThemeProvider from './ThemeProvider'; -// For the setup please check .example.env for setup instrucions const REACT_GOOGLE_MAPS_API_KEY = import.meta.env .VITE_REACT_GOOGLE_MAPS_API_KEY; const Providers = ({ children }: PropsWithChildren) => { if (!REACT_GOOGLE_MAPS_API_KEY) { const message = import.meta.env.DEV - ? 'Google Maps API key is missing! Make sure that `VITE_REACT_GOOGLE_MAPS_API_KEY` is defined in a `.env` file' + ? 'Google Maps API key is missing! Make sure that `VITE_REACT_GOOGLE_MAPS_API_KEY` is defined in a `.env` file. Refer to `.example.env`.' : 'An unexpected error happened with maps. Please try again later.'; throw new Error(message); } diff --git a/src/components/Verification/VerificationButton.tsx b/src/components/Verification/VerificationButton.tsx index 5a40ce0e..480544b8 100644 --- a/src/components/Verification/VerificationButton.tsx +++ b/src/components/Verification/VerificationButton.tsx @@ -15,7 +15,7 @@ type VerificationButtonProps = { const VerificationButton = ({ resource }: VerificationButtonProps) => { if (!PASSWORD) { const message = import.meta.env.DEV - ? 'Verification password is missing! Make sure that `VITE_VERIFICATION_PASSWORD` is defined in a `.env` file' + ? 'Verification password is missing! Make sure that `VITE_VERIFICATION_PASSWORD` is defined in a `.env` file. Refer to `.example.env`.' : 'An unexpected error have happened. AKDELTE: Verification missing Please try again later.'; throw new Error(message); } diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index 9201b479..d08f0aa5 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -61,8 +61,8 @@ export const useWalkingDurationQuery = ({ const queryFn = async (): Promise => { if (!OPEN_ROUTE_SERVICE_API_KEY) { const message = import.meta.env.DEV - ? 'Open Route Service API key is missing! Make sure that `VITE_OPEN_ROUTE_SERVICE_API_KEY` is defined in a `.env` file' - : 'An unexpected error happened with routes. Please try again later.'; + ? 'Open Route Service API key is missing! Make sure that `VITE_OPEN_ROUTE_SERVICE_API_KEY` is defined in your `.env` file' + : 'An unexpected error happened with route service. Please try again later.'; throw new Error(message); } diff --git a/src/services/db.ts b/src/services/db.ts index dc8b6e74..858b9afc 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -11,9 +11,9 @@ const resourceDatabaseName = 'resources'; const contributorDatabaseName = 'airtable_contributors'; const providersDatabaseName = 'providers'; -if (!databaseUrl || !databaseApiKey) { +if (!databaseApiKey) { const message = import.meta.env.DEV - ? 'Database credentials are missing! Make sure that `databaseUrl` and `databaseApiKey` are defined in a `.env` file' + ? 'Database credentials are missing! Make sure that `databaseApiKey` is defined in your `.env` file. Refer to `.example.env`.' : 'An unexpected error happend with supabase. Please try again later.'; throw data(new Error(message), { status: 500 }); } From 96ab60f510e246a554ee3739fb5299cfe1e83046 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 13 Mar 2026 21:27:13 -0400 Subject: [PATCH 23/27] zod env config --- .../Providers/AnalyticsProvider.tsx | 10 ++-------- src/components/Providers/Providers.tsx | 10 ++-------- .../Verification/VerificationButton.tsx | 10 ++-------- src/config.ts | 19 +++++++++++++++++++ src/hooks/queries/useWalkingDurationQuery.ts | 14 ++------------ src/services/db.ts | 11 ++--------- 6 files changed, 29 insertions(+), 45 deletions(-) create mode 100644 src/config.ts diff --git a/src/components/Providers/AnalyticsProvider.tsx b/src/components/Providers/AnalyticsProvider.tsx index 5eeaffb3..0c4259fb 100644 --- a/src/components/Providers/AnalyticsProvider.tsx +++ b/src/components/Providers/AnalyticsProvider.tsx @@ -1,8 +1,9 @@ import { PostHogProvider } from 'posthog-js/react'; import type { PropsWithChildren } from 'react'; +import { env } from 'config'; const APIHOST = 'https://us.i.posthog.com'; -const APIKEY = import.meta.env.VITE_PUBLIC_POSTHOG_KEY; +const APIKEY = env.PUBLIC_POSTHOG_KEY; const postHogOptions = { api_host: APIHOST, @@ -18,13 +19,6 @@ const AnalyticsProvider = ({ children }: PropsWithChildren) => { ) return children; - if (!APIKEY) { - const message = import.meta.env.DEV - ? 'PostHog credentials are missing! Make sure that `VITE_PUBLIC_POSTHOG_KEY` is defined in your `.env` file. Refer to `.example.env`.' - : 'An unexpected error happened with analytics. Please try again later.'; - throw new Error(message); - } - return ( {children} diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index 54037baa..4db94d21 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -5,16 +5,10 @@ import type { PropsWithChildren } from 'react'; import ToolbarContextProvider from './ToolbarContextProvider'; import queryClient from 'services/queryClient'; import ThemeProvider from './ThemeProvider'; +import { env } from 'config'; -const REACT_GOOGLE_MAPS_API_KEY = import.meta.env - .VITE_REACT_GOOGLE_MAPS_API_KEY; +const REACT_GOOGLE_MAPS_API_KEY = env.GOOGLE_MAPS_API_KEY; const Providers = ({ children }: PropsWithChildren) => { - if (!REACT_GOOGLE_MAPS_API_KEY) { - const message = import.meta.env.DEV - ? 'Google Maps API key is missing! Make sure that `VITE_REACT_GOOGLE_MAPS_API_KEY` is defined in a `.env` file. Refer to `.example.env`.' - : 'An unexpected error happened with maps. Please try again later.'; - throw new Error(message); - } return ( diff --git a/src/components/Verification/VerificationButton.tsx b/src/components/Verification/VerificationButton.tsx index 480544b8..ec7d18ae 100644 --- a/src/components/Verification/VerificationButton.tsx +++ b/src/components/Verification/VerificationButton.tsx @@ -5,21 +5,15 @@ import Dialog from '@mui/material/Dialog'; import { updateResource } from 'services/db'; import type { ResourceEntry, Verification } from 'types/ResourceEntry'; import useSelectedResource from 'hooks/useSelectedResource'; +import { env } from 'config'; -const PASSWORD = import.meta.env.VITE_VERIFICATION_PASSWORD; +const PASSWORD = env.VERIFICATION_PASSWORD; type VerificationButtonProps = { resource: ResourceEntry; }; const VerificationButton = ({ resource }: VerificationButtonProps) => { - if (!PASSWORD) { - const message = import.meta.env.DEV - ? 'Verification password is missing! Make sure that `VITE_VERIFICATION_PASSWORD` is defined in a `.env` file. Refer to `.example.env`.' - : 'An unexpected error have happened. AKDELTE: Verification missing Please try again later.'; - throw new Error(message); - } - const { setSelectedResource } = useSelectedResource(); const [isModalOpen, setIsModalOpen] = useState(false); diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 00000000..7db75c28 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,19 @@ +import { z } from 'zod'; + +const envSchema = z.object({ + DB_API_KEY: z.string(), + GOOGLE_MAPS_API_KEY: z.string(), + OPEN_ROUTE_SERVICE_API_KEY: z.string(), + PUBLIC_POSTHOG_KEY: z.string(), + VERIFICATION_PASSWORD: z.string(), + IS_DEV: z.boolean() +}); + +export const env = envSchema.parse({ + DB_API_KEY: import.meta.env.VITE_DB_API_KEY, + GOOGLE_MAPS_API_KEY: import.meta.env.VITE_REACT_GOOGLE_MAPS_API_KEY, + OPEN_ROUTE_SERVICE_API_KEY: import.meta.env.VITE_OPEN_ROUTE_SERVICE_API_KEY, + PUBLIC_POSTHOG_KEY: import.meta.env.VITE_PUBLIC_POSTHOG_KEY, + VERIFICATION_PASSWORD: import.meta.env.VITE_VERIFICATION_PASSWORD, + IS_DEV: import.meta.env.DEV +}); diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index d08f0aa5..2aa9ee86 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -2,10 +2,7 @@ import { useQuery } from '@tanstack/react-query'; import type { ResourceEntry } from 'types/ResourceEntry'; import getUserLocation from 'utils/getUserLocation'; import useActiveSearchLocation from 'hooks/useActiveSearchLocation'; - -const OPEN_ROUTE_SERVICE_API_KEY = - import.meta.env.VITE_OPEN_ROUTE_SERVICE_API_KEY || - '5b3ce3597851110001cf6248ac903cdbe0364ca9850aa85cb64d8dfc'; +import { env } from 'config'; const BASE_URL = 'https://api.openrouteservice.org/v2'; const PATH = '/directions/foot-walking'; @@ -59,13 +56,6 @@ export const useWalkingDurationQuery = ({ const { latitude, longitude } = selectedResource; const queryFn = async (): Promise => { - if (!OPEN_ROUTE_SERVICE_API_KEY) { - const message = import.meta.env.DEV - ? 'Open Route Service API key is missing! Make sure that `VITE_OPEN_ROUTE_SERVICE_API_KEY` is defined in your `.env` file' - : 'An unexpected error happened with route service. Please try again later.'; - throw new Error(message); - } - const locationPermission = await navigator.permissions.query({ name: 'geolocation' }); @@ -85,7 +75,7 @@ export const useWalkingDurationQuery = ({ const endingLocation = [longitude, latitude].join(','); const params = new URLSearchParams({ - api_key: OPEN_ROUTE_SERVICE_API_KEY, + api_key: env.OPEN_ROUTE_SERVICE_API_KEY, start: startingLocation, end: endingLocation }); diff --git a/src/services/db.ts b/src/services/db.ts index 858b9afc..423e3f28 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -2,22 +2,15 @@ import { createClient } from '@supabase/supabase-js'; import type { Provider, ResourceEntry } from 'types/ResourceEntry'; import type { ResourceTypeOption } from 'hooks/useResourceType'; import type { Contributor } from 'types/Contributor'; -import { data } from 'react-router'; +import { env } from 'config'; // Need access to the database? Please refer to .example.env and message us in the #phlask-data channel on Slack const databaseUrl = 'https://wantycfbnzzocsbthqzs.supabase.co'; -const databaseApiKey = import.meta.env.VITE_DB_API_KEY; +const databaseApiKey = env.DB_API_KEY; const resourceDatabaseName = 'resources'; const contributorDatabaseName = 'airtable_contributors'; const providersDatabaseName = 'providers'; -if (!databaseApiKey) { - const message = import.meta.env.DEV - ? 'Database credentials are missing! Make sure that `databaseApiKey` is defined in your `.env` file. Refer to `.example.env`.' - : 'An unexpected error happend with supabase. Please try again later.'; - throw data(new Error(message), { status: 500 }); -} - const supabase = createClient(databaseUrl, databaseApiKey); export type FetchResourcesOptions = { From fd9fb4640cc4cfdec0d0bba0ea8a48e92f7cd802 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Fri, 13 Mar 2026 21:34:09 -0400 Subject: [PATCH 24/27] zod env config --- src/components/Providers/Providers.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index 4db94d21..b12443cc 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -8,6 +8,7 @@ import ThemeProvider from './ThemeProvider'; import { env } from 'config'; const REACT_GOOGLE_MAPS_API_KEY = env.GOOGLE_MAPS_API_KEY; + const Providers = ({ children }: PropsWithChildren) => { return ( From 1fd809f150a5960e8464969a39697f8bb87f8bd4 Mon Sep 17 00:00:00 2001 From: Anil Kumar Karapa <90452951+AnilKumar3494@users.noreply.github.com> Date: Sat, 14 Mar 2026 08:18:10 -0400 Subject: [PATCH 25/27] Update config.ts --- src/config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/config.ts b/src/config.ts index 7db75c28..8eb1c148 100644 --- a/src/config.ts +++ b/src/config.ts @@ -6,7 +6,6 @@ const envSchema = z.object({ OPEN_ROUTE_SERVICE_API_KEY: z.string(), PUBLIC_POSTHOG_KEY: z.string(), VERIFICATION_PASSWORD: z.string(), - IS_DEV: z.boolean() }); export const env = envSchema.parse({ @@ -15,5 +14,4 @@ export const env = envSchema.parse({ OPEN_ROUTE_SERVICE_API_KEY: import.meta.env.VITE_OPEN_ROUTE_SERVICE_API_KEY, PUBLIC_POSTHOG_KEY: import.meta.env.VITE_PUBLIC_POSTHOG_KEY, VERIFICATION_PASSWORD: import.meta.env.VITE_VERIFICATION_PASSWORD, - IS_DEV: import.meta.env.DEV }); From cc89900dee1bd9c971394093943712e4be670f37 Mon Sep 17 00:00:00 2001 From: Anilkumar3494 Date: Wed, 18 Mar 2026 21:21:03 -0400 Subject: [PATCH 26/27] simplfy --- .../Providers/AnalyticsProvider.tsx | 2 +- src/components/Providers/Providers.tsx | 2 +- .../Verification/VerificationButton.tsx | 2 +- src/config.ts | 27 ++++++++++--------- src/hooks/queries/useWalkingDurationQuery.ts | 2 +- src/services/db.ts | 2 +- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/components/Providers/AnalyticsProvider.tsx b/src/components/Providers/AnalyticsProvider.tsx index 0c4259fb..2a46cd99 100644 --- a/src/components/Providers/AnalyticsProvider.tsx +++ b/src/components/Providers/AnalyticsProvider.tsx @@ -3,7 +3,7 @@ import type { PropsWithChildren } from 'react'; import { env } from 'config'; const APIHOST = 'https://us.i.posthog.com'; -const APIKEY = env.PUBLIC_POSTHOG_KEY; +const APIKEY = env.VITE_PUBLIC_POSTHOG_KEY; const postHogOptions = { api_host: APIHOST, diff --git a/src/components/Providers/Providers.tsx b/src/components/Providers/Providers.tsx index b12443cc..47532fb0 100644 --- a/src/components/Providers/Providers.tsx +++ b/src/components/Providers/Providers.tsx @@ -7,7 +7,7 @@ import queryClient from 'services/queryClient'; import ThemeProvider from './ThemeProvider'; import { env } from 'config'; -const REACT_GOOGLE_MAPS_API_KEY = env.GOOGLE_MAPS_API_KEY; +const REACT_GOOGLE_MAPS_API_KEY = env.VITE_REACT_GOOGLE_MAPS_API_KEY; const Providers = ({ children }: PropsWithChildren) => { return ( diff --git a/src/components/Verification/VerificationButton.tsx b/src/components/Verification/VerificationButton.tsx index ec7d18ae..e077397c 100644 --- a/src/components/Verification/VerificationButton.tsx +++ b/src/components/Verification/VerificationButton.tsx @@ -7,7 +7,7 @@ import type { ResourceEntry, Verification } from 'types/ResourceEntry'; import useSelectedResource from 'hooks/useSelectedResource'; import { env } from 'config'; -const PASSWORD = env.VERIFICATION_PASSWORD; +const PASSWORD = env.VITE_VERIFICATION_PASSWORD; type VerificationButtonProps = { resource: ResourceEntry; diff --git a/src/config.ts b/src/config.ts index 8eb1c148..15561b5a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,17 +1,20 @@ import { z } from 'zod'; const envSchema = z.object({ - DB_API_KEY: z.string(), - GOOGLE_MAPS_API_KEY: z.string(), - OPEN_ROUTE_SERVICE_API_KEY: z.string(), - PUBLIC_POSTHOG_KEY: z.string(), - VERIFICATION_PASSWORD: z.string(), + VITE_DB_API_KEY: z.string().min(1), + VITE_REACT_GOOGLE_MAPS_API_KEY: z.string().min(1), + VITE_OPEN_ROUTE_SERVICE_API_KEY: z.string().min(1), + VITE_PUBLIC_POSTHOG_KEY: z.string().min(1), + VITE_VERIFICATION_PASSWORD: z.string().min(1) }); -export const env = envSchema.parse({ - DB_API_KEY: import.meta.env.VITE_DB_API_KEY, - GOOGLE_MAPS_API_KEY: import.meta.env.VITE_REACT_GOOGLE_MAPS_API_KEY, - OPEN_ROUTE_SERVICE_API_KEY: import.meta.env.VITE_OPEN_ROUTE_SERVICE_API_KEY, - PUBLIC_POSTHOG_KEY: import.meta.env.VITE_PUBLIC_POSTHOG_KEY, - VERIFICATION_PASSWORD: import.meta.env.VITE_VERIFICATION_PASSWORD, -}); +const result = envSchema.safeParse(import.meta.env); + +if (!result.success) { + console.error(result.error); + throw new Error( + `Environment variables are missing or invalid in your .env file. Check the error details above.` + ); +} + +export const env = result.data; diff --git a/src/hooks/queries/useWalkingDurationQuery.ts b/src/hooks/queries/useWalkingDurationQuery.ts index 2aa9ee86..1735ee73 100644 --- a/src/hooks/queries/useWalkingDurationQuery.ts +++ b/src/hooks/queries/useWalkingDurationQuery.ts @@ -75,7 +75,7 @@ export const useWalkingDurationQuery = ({ const endingLocation = [longitude, latitude].join(','); const params = new URLSearchParams({ - api_key: env.OPEN_ROUTE_SERVICE_API_KEY, + api_key: env.VITE_OPEN_ROUTE_SERVICE_API_KEY, start: startingLocation, end: endingLocation }); diff --git a/src/services/db.ts b/src/services/db.ts index 423e3f28..351d9ede 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -6,7 +6,7 @@ import { env } from 'config'; // Need access to the database? Please refer to .example.env and message us in the #phlask-data channel on Slack const databaseUrl = 'https://wantycfbnzzocsbthqzs.supabase.co'; -const databaseApiKey = env.DB_API_KEY; +const databaseApiKey = env.VITE_DB_API_KEY; const resourceDatabaseName = 'resources'; const contributorDatabaseName = 'airtable_contributors'; const providersDatabaseName = 'providers'; From d5f20fbdd0d56fa5586aaa7791bb980ddab1bdfd Mon Sep 17 00:00:00 2001 From: Gabriel Cardona <2278918+gcardonag@users.noreply.github.com> Date: Tue, 24 Mar 2026 19:55:03 -0400 Subject: [PATCH 27/27] Adds vite preflight check to ensure environment variables are set and fixes workflow references to GMaps API key secret --- .github/workflows/betasite.yml | 2 +- .github/workflows/build_testsite.yml | 2 +- .github/workflows/cypress_testing.yml | 2 +- .github/workflows/prodsite.yml | 2 +- vite.config.ts | 55 +++++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 4 deletions(-) diff --git a/.github/workflows/betasite.yml b/.github/workflows/betasite.yml index 61100e48..e0df6b4d 100644 --- a/.github/workflows/betasite.yml +++ b/.github/workflows/betasite.yml @@ -8,7 +8,7 @@ env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_API_KEY }} VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} diff --git a/.github/workflows/build_testsite.yml b/.github/workflows/build_testsite.yml index 0e5038b3..eacc785a 100644 --- a/.github/workflows/build_testsite.yml +++ b/.github/workflows/build_testsite.yml @@ -9,7 +9,7 @@ jobs: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_API_KEY }} VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} diff --git a/.github/workflows/cypress_testing.yml b/.github/workflows/cypress_testing.yml index 2eb278b3..e00ca151 100644 --- a/.github/workflows/cypress_testing.yml +++ b/.github/workflows/cypress_testing.yml @@ -8,7 +8,7 @@ jobs: env: VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_API_KEY }} VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} diff --git a/.github/workflows/prodsite.yml b/.github/workflows/prodsite.yml index 18052abe..b09f6180 100644 --- a/.github/workflows/prodsite.yml +++ b/.github/workflows/prodsite.yml @@ -8,7 +8,7 @@ env: AWS_DEFAULT_REGION: us-east-2 VITE_DB_URL: https://wantycfbnzzocsbthqzs.supabase.co VITE_DB_API_KEY: ${{ secrets.SUPABASE_API_KEY }} - VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_APIKEY }} + VITE_REACT_GOOGLE_MAPS_API_KEY: ${{ secrets.REACT_GOOGLE_MAPS_API_KEY }} VITE_OPEN_ROUTE_SERVICE_API_KEY: ${{ secrets.OPEN_ROUTE_SERVICE_API_KEY }} VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} VITE_VERIFICATION_PASSWORD: ${{ secrets.VERIFICATION_PASSWORD }} diff --git a/vite.config.ts b/vite.config.ts index 377b92f7..402ca777 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,61 @@ import { defineConfig } from 'vite'; +import type { Plugin } from 'vite'; import react from '@vitejs/plugin-react'; import tsconfigPaths from 'vite-tsconfig-paths'; +const REQUIRED_ENV_VARS = [ + 'VITE_DB_API_KEY', + 'VITE_REACT_GOOGLE_MAPS_API_KEY', + 'VITE_OPEN_ROUTE_SERVICE_API_KEY', + 'VITE_PUBLIC_POSTHOG_KEY', + 'VITE_VERIFICATION_PASSWORD', +]; + +function envCheckPlugin(): Plugin { + let missingVars: string[] = []; + + return { + name: 'env-check', + configResolved(config) { + missingVars = REQUIRED_ENV_VARS.filter(key => !config.env[key]); + if (missingVars.length > 0) { + console.warn( + '\n\x1b[33m[env-check] Missing required environment variables:\x1b[0m\n' + + missingVars.map(v => ` \x1b[31m✗ ${v}\x1b[0m`).join('\n') + + '\n\x1b[33m Copy src/.example.env to .env and fill in the values following the guidance described in the example file.\x1b[0m\n' + ); + } + }, + transformIndexHtml(html) { + if (missingVars.length === 0) return html; + + const listItems = missingVars.map(v => `
  • ${v}
  • `).join(''); + const overlay = ` +`; + + return html.replace('', overlay + '\n'); + }, + }; +} + export default defineConfig(() => ({ base: './', // This is set to allow for deployments on dynamic subpaths (i.e. - test.phlask.me) build: { @@ -9,6 +63,7 @@ export default defineConfig(() => ({ target: 'es2022' }, plugins: [ + envCheckPlugin(), react(), tsconfigPaths(), ]