diff --git a/.github/workflows/gcp-deploy-frontend.yaml b/.github/workflows/gcp-deploy-frontend.yaml
index 61395633..51cfc7ae 100644
--- a/.github/workflows/gcp-deploy-frontend.yaml
+++ b/.github/workflows/gcp-deploy-frontend.yaml
@@ -73,10 +73,10 @@ jobs:
CLOUDRUN_REGION: ${{steps.first.outputs.CLOUDRUN_REGION}}
DOCKER_REGISTRY: ${{steps.first.outputs.DOCKER_REGISTRY}}
FRONTEND_URL: ${{steps.first.outputs.FRONTEND_URL}}
- GA4_ID: ${{steps.first.outputs.GA4_ID}}
DOCKER_PATH: ${{steps.second.outputs.DOCKER_PATH}}
GRAPHQL_URL: ${{steps.second.outputs.GRAPHQL_URL}}
FRONTEND_TAG: ${{steps.third.outputs.FRONTEND_TAG}}
+ NODE_ENV: ${{steps.first.outputs.NODE_ENV}}
steps:
- name: First Interpolation of Variables
@@ -85,10 +85,11 @@ jobs:
echo "::set-output name=CLOUDRUN_REGION::${{env.REGISTRY_REGION}}"
echo "::set-output name=DOCKER_REGISTRY::${{env.REGISTRY_REGION}}-docker.pkg.dev"
if [[ ${{github.ref_name}} == 'master' ]]; then
+ echo ::set-output name=NODE_ENV::production
echo ::set-output name=HASURA_HOST::api.metagame.wtf
echo ::set-output name=FRONTEND_URL::https://metagame.wtf
- echo ::set-output name=GA4_ID::G-B1NKK3Q1BP
else
+ echo ::set-output name=NODE_ENV::test
echo ::set-output name=HASURA_HOST::api-staging.metagame.wtf
echo ::set-output name=FRONTEND_URL::https://test.metagame.wtf
fi
@@ -124,9 +125,9 @@ jobs:
. -f docker/frontend/Dockerfile \
--tag ${{needs.env.outputs.FRONTEND_TAG}} \
--build-arg GRAPHQL_URL=${{needs.env.outputs.GRAPHQL_URL}} \
+ --build-arg NODE_ENV=${{needs.env.outputs.NODE_ENV}} \
--build-arg NEXT_PUBLIC_FRONTEND_URL=${{needs.env.outputs.FRONTEND_URL}} \
- --build-arg NEXT_PUBLIC_YOUTUBE_API_KEY=${{secrets.YOUTUBE_API_KEY}} \
- --build-arg NEXT_PUBLIC_GA4_ID=${{needs.env.outputs.GA4_ID}}
+ --build-arg NEXT_PUBLIC_YOUTUBE_API_KEY=${{secrets.YOUTUBE_API_KEY}}
cache_key: "${{github.event.inputs.cache_key}}-${{hashFiles('packages/web/**', 'packages/design-system/**', 'packages/utils/**', 'package.json')}}"
- name: "Login to Registry: ${{needs.env.outputs.DOCKER_REGISTRY}}"
@@ -163,13 +164,13 @@ jobs:
--ingress all \
--min-instances 1 \
--allow-unauthenticated \
+ --set-env-vars NODE_ENV=${{needs.env.outputs.NODE_ENV}} \
--set-env-vars WEB3_STORAGE_TOKEN=${{secrets.WEB3_STORAGE_TOKEN}} \
--set-env-vars OPENSEA_API_KEY=${{secrets.OPENSEA_API_KEY}} \
--set-env-vars NEXT_PUBLIC_IMGIX_TOKEN=${{secrets.IMGIX_TOKEN}} \
--set-env-vars NEXT_PUBLIC_YOUTUBE_API_KEY=${{secrets.YOUTUBE_API_KEY}} \
--set-env-vars NEXT_PUBLIC_GRAPHQL_URL=${{needs.env.outputs.GRAPHQL_URL}} \
- --set-env-vars NEXT_PUBLIC_FRONTEND_URL=${{needs.env.outputs.FRONTEND_URL}} \
- --set-env-vars NEXT_PUBLIC_GA4_ID=${{needs.env.outputs.GA4_ID}}
+ --set-env-vars NEXT_PUBLIC_FRONTEND_URL=${{needs.env.outputs.FRONTEND_URL}}
finish-deployment:
name: Finish Deployment
diff --git a/packages/backend/README.md b/packages/backend/README.md
new file mode 100644
index 00000000..6d88643f
--- /dev/null
+++ b/packages/backend/README.md
@@ -0,0 +1,12 @@
+# MetaGame Backend
+
+This instance is not exposed to the public, but only accessible through Hasura.
+
+## Restoring a local DB from a Postgres dump
+
+- Obtain a postgres dump (`.sql` or `.sql.gz`) from render.com or by way of another friendly builder.
+- If the dump is compressed, run `gunzip backup.sql.gz`
+- Copy the dump into the running container:
+ - `docker cp backup.sql the-game_database_1:/var/lib/postgresql`
+- Restore using `psql`:
+ - `docker-compose exec database psql -U metagame -d metagame-db -W -f /var/lib/postgresql/backup.sql`
diff --git a/packages/web/config.ts b/packages/web/config.ts
index eba06561..5af3acd3 100644
--- a/packages/web/config.ts
+++ b/packages/web/config.ts
@@ -1,4 +1,5 @@
export const CONFIG = {
+ environment: process.env.NODE_ENV || 'development',
graphqlURL: (() => {
const { NEXT_PUBLIC_GRAPHQL_URL: url, NEXT_PUBLIC_GRAPHQL_HOST: host } =
process.env;
@@ -16,12 +17,13 @@ export const CONFIG = {
brightIdNodeURL:
process.env.NEXT_BRIGHTID_NODE_URL || 'http:%2f%2fnode.brightid.org',
publicURL: process.env.NEXT_PUBLIC_FRONTEND_URL,
- gaId: process.env.NEXT_PUBLIC_GA4_ID,
- honeybadgerApiKey: process.env.NEXT_PUBLIC_HONEYBADGER_API_KEY,
- honeybadgerReportData:
- process.env.NEXT_PUBLIC_HONEYBADGER_REPORT_DATA === 'true',
- honeybadgerDebug: process.env.NEXT_PUBLIC_HONEYBADGER_DEBUG === 'true',
- userbackToken: process.env.NEXT_PUBLIC_USERBACK_TOKEN || '',
+ gaId: process.env.NEXT_PUBLIC_GA4_ID || 'G-B1NKK3Q1BP',
+ honeybadgerApiKey:
+ process.env.NEXT_PUBLIC_HONEYBADGER_API_KEY ||
+ 'hbp_Z4027J7qYTktQkqvUHcOHJqIbpjpWD30A1kd',
+ userbackToken:
+ process.env.NEXT_PUBLIC_USERBACK_TOKEN ||
+ '37882|74240|mjn1zXGiYaozZR6qmqFfjl9Sk',
discordApiBaseUrl:
process.env.DISCORD_API_BASE_URL || 'https://discord.com/api/v8',
ceramicURL:
diff --git a/packages/web/pages/_app.tsx b/packages/web/pages/_app.tsx
index 41e29d81..af7ba18d 100644
--- a/packages/web/pages/_app.tsx
+++ b/packages/web/pages/_app.tsx
@@ -12,65 +12,69 @@ import Head from 'next/head';
import { WithUrqlProps } from 'next-urql';
import React from 'react';
-const {
- userbackToken,
- honeybadgerReportData,
- honeybadgerApiKey,
- honeybadgerDebug,
-} = CONFIG;
+const { environment, userbackToken, honeybadgerApiKey } = CONFIG;
const honeybadgerConfig = {
apiKey: honeybadgerApiKey,
- environment: process.env.NODE_ENV || 'production',
+ environment,
enableUncaught: true,
- reportData: honeybadgerReportData,
- debug: honeybadgerDebug,
+ reportData: environment !== 'development',
+ // TODO include git SHA in github action deployment
+ // revision: 'git SHA/project version'
};
const honeybadger = Honeybadger.configure(honeybadgerConfig);
+const Analytics: React.FC = () => (
+ <>
+
+
+ >
+);
+
const App: React.FC = ({
pageProps,
resetUrqlClient,
Component,
+}) => (
+
+
+
+
+ MetaGame
+ {environment === 'production' && }
+
+
+
+
+
+
+
+);
+
+const DeployedApp: React.FC = ({
+ pageProps,
+ resetUrqlClient,
+ Component,
}) => (
-
-
-
-
-
- MetaGame
- {CONFIG.gaId != null && (
- <>
-
-
- >
- )}
-
-
-
-
-
-
-
-
+
+
);
-export default wrapUrqlClient(App);
+export default environment === 'development'
+ ? wrapUrqlClient(App)
+ : wrapUrqlClient(DeployedApp);