feat: runtime env

Support runtime environment variables using server components.

This will mean docker images can change env vars for runtime as required.
This commit is contained in:
Mythie
2023-11-12 13:10:30 +11:00
parent aec0d2ae97
commit 1cd60e1abb
29 changed files with 254 additions and 70 deletions

View File

@ -1,3 +1,5 @@
import { getRuntimeEnv } from '../universal/runtime-env/get-runtime-env';
export const IS_APP_MARKETING = process.env.NEXT_PUBLIC_PROJECT === 'marketing';
export const IS_APP_WEB = process.env.NEXT_PUBLIC_PROJECT === 'web';
@ -6,3 +8,21 @@ export const APP_FOLDER = IS_APP_MARKETING ? 'marketing' : 'web';
export const APP_BASE_URL = IS_APP_WEB
? process.env.NEXT_PUBLIC_WEBAPP_URL
: process.env.NEXT_PUBLIC_MARKETING_URL;
export const appBaseUrl = () => {
const { NEXT_PUBLIC_WEBAPP_URL, NEXT_PUBLIC_MARKETING_URL } = getRuntimeEnv();
if (IS_APP_WEB) {
return NEXT_PUBLIC_WEBAPP_URL;
}
if (IS_APP_MARKETING) {
return NEXT_PUBLIC_MARKETING_URL;
}
if (typeof window !== 'undefined') {
return window.location.origin;
}
return NEXT_PUBLIC_WEBAPP_URL ?? 'http://localhost:3000';
};

View File

@ -1,4 +1,4 @@
import { APP_BASE_URL } from './app';
import { appBaseUrl } from './app';
/**
* The flag name for global session recording feature flag.
@ -25,7 +25,7 @@ export const LOCAL_FEATURE_FLAGS: Record<string, boolean> = {
*/
export function extractPostHogConfig(): { key: string; host: string } | null {
const postHogKey = process.env.NEXT_PUBLIC_POSTHOG_KEY;
const postHogHost = `${APP_BASE_URL}/ingest`;
const postHogHost = `${appBaseUrl()}/ingest`;
if (!postHogKey || !postHogHost) {
return null;

View File

@ -1,9 +1,7 @@
import { APP_BASE_URL } from './app';
export const DEFAULT_STANDARD_FONT_SIZE = 15;
export const DEFAULT_HANDWRITING_FONT_SIZE = 50;
export const MIN_STANDARD_FONT_SIZE = 8;
export const MIN_HANDWRITING_FONT_SIZE = 20;
export const CAVEAT_FONT_PATH = `${APP_BASE_URL}/fonts/caveat.ttf`;
export const CAVEAT_FONT_PATH = `/fonts/caveat.ttf`;