Compare commits

..

8 Commits

Author SHA1 Message Date
owenrees 1245bf74c2 no string for maintenance mode 2026-07-13 21:04:24 +02:00
owenrees 908dd9b57b parse maintenance mode message 2026-07-13 21:00:26 +02:00
owenrees 18f86125da pass build args for Vite 2026-07-13 20:43:25 +02:00
owenrees f4ff9d8c68 pass build args for Vite 2026-07-13 20:40:18 +02:00
owenrees 7994f79e02 remove build envs, change zod items to url 2026-07-13 20:31:33 +02:00
owenrees d11d360cbf print mopre detailed error logs 2026-07-13 20:25:52 +02:00
owenrees 573d063d55 set maintenance mode false 2026-07-12 22:46:43 +02:00
owenrees 2dd006f14e update api base URL 2026-07-12 21:56:18 +02:00
3 changed files with 18 additions and 7 deletions
+3 -3
View File
@@ -33,11 +33,11 @@ jobs:
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
VITE_API_BASE_URL=http://chess-pdf-api:5000/api/v1
VITE_API_BASE_URL=https://api.chess-scribe.org/api/v1
VITE_MATOMO_URL=https://analytics.owenrees.eu
VITE_MATOMO_SITE_ID=3
VITE_MATOMO_SITE_ID="3"
VITE_MAINTENANCE_MODE=
VITE_MAINTENANCE_MODE_MESSAGE=ChessScribe is currently undergoing maintenance. Some features may be unavailable.
VITE_MAINTENANCE_MODE_MESSAGE="ChessScribe is currently undergoing maintenance. Some features may be unavailable."
deploy:
needs: publish
+11 -2
View File
@@ -1,17 +1,26 @@
import { Link } from "@tanstack/react-router";
import { Image } from "@unpic/react";
import { z } from "zod";
import MaintenanceModeBanner from "#/components/MaintenanceModeBanner.tsx";
import { env } from "#/env.ts";
import logo from "@/assets/images/logo.svg?url";
export default function Header() {
const maintenanceModeMessage = env.VITE_MAINTENANCE_MODE
? z
.string()
.transform((value) => (value.trim() === "" ? null : value))
.parse(env.VITE_MAINTENANCE_MODE_MESSAGE)
: null;
return (
<header>
{env.VITE_MAINTENANCE_MODE ? (
{maintenanceModeMessage ? (
<div className="absolute w-full">
<MaintenanceModeBanner message={env.VITE_MAINTENANCE_MODE_MESSAGE} />
<MaintenanceModeBanner message={maintenanceModeMessage} />
</div>
) : null}
<nav className="w-full max-w-screen-2xl place-self-center p-8">
<div className="container mx-auto flex items-center justify-between">
<div className="flex items-center">
+4 -2
View File
@@ -1,8 +1,8 @@
import { z } from "zod";
const clientSchema = z.object({
VITE_API_BASE_URL: z.string("Invalid API Base URL format"),
VITE_MATOMO_URL: z.string("Invalid URL format"),
VITE_API_BASE_URL: z.url("Invalid API Base URL format"),
VITE_MATOMO_URL: z.url("Invalid URL format"),
VITE_MATOMO_SITE_ID: z.string("Invalid Site ID"),
VITE_MAINTENANCE_MODE: z.string("Invalid Maintenance Mode"),
VITE_MAINTENANCE_MODE_MESSAGE: z.string().optional(),
@@ -27,6 +27,7 @@ const getEnv = () => {
const _env = fullSchema.safeParse(rawEnv);
if (!_env.success) {
console.error("❌ Invalid Server Environment Variables:");
console.error(JSON.stringify(_env.error.format(), null, 2));
throw new Error("Invalid environment variables");
}
return _env.data;
@@ -34,6 +35,7 @@ const getEnv = () => {
const _env = clientSchema.safeParse(rawEnv);
if (!_env.success) {
console.error("❌ Invalid Client Environment Variables:");
console.error(JSON.stringify(_env.error.format(), null, 2));
throw new Error("Invalid environment variables");
}
return _env.data as z.infer<typeof fullSchema>;