From cce3bac5b2816cf0bc951dfabd78bd2bb878a2eb Mon Sep 17 00:00:00 2001 From: ginnoir Date: Tue, 2 Jun 2026 18:51:59 -0500 Subject: [PATCH] chore: repo cleanup and prod sync tooling - Remove stale deploy/docker-entrypoint.sh (Dockerfile copies root version) - Remove scripts/seed.ts (superseded by seed.mjs) - Add src/app/error.tsx and global-error.tsx (untracked error boundaries) - Gitignore deploy/.prod/ for synced production configs - Add scripts/sync-prod.ps1 to pull compose/env/Caddyfile from valhalla - Add scripts/apply-compose.ps1 to push compose changes and restart services --- .gitignore | 3 +++ deploy/docker-entrypoint.sh | 11 ----------- scripts/seed.ts | 30 ------------------------------ src/app/error.tsx | 27 +++++++++++++++++++++++++++ src/app/global-error.tsx | 29 +++++++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 41 deletions(-) delete mode 100644 deploy/docker-entrypoint.sh delete mode 100644 scripts/seed.ts create mode 100644 src/app/error.tsx create mode 100644 src/app/global-error.tsx diff --git a/.gitignore b/.gitignore index a972c33..bf53708 100644 --- a/.gitignore +++ b/.gitignore @@ -49,5 +49,8 @@ tests/.auth/ # Backups deploy/backups/data/ +# Production configs synced from server — never commit +deploy/.prod/ + # Design handoff bundle (reference only, not committed) .design-tmp/ diff --git a/deploy/docker-entrypoint.sh b/deploy/docker-entrypoint.sh deleted file mode 100644 index a9d63d0..0000000 --- a/deploy/docker-entrypoint.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -set -e - -if [ "${RUN_MIGRATIONS:-true}" = "true" ]; then - echo "running migrations..." - node /app/scripts/migrate.mjs -else - echo "skipping migrations (RUN_MIGRATIONS=$RUN_MIGRATIONS)" -fi - -exec node /app/server.js diff --git a/scripts/seed.ts b/scripts/seed.ts deleted file mode 100644 index 803d20a..0000000 --- a/scripts/seed.ts +++ /dev/null @@ -1,30 +0,0 @@ -import postgres from "postgres"; -import { drizzle } from "drizzle-orm/postgres-js"; -import { households } from "@/modules/_core/schema"; -import { ensureDefaultCalendars } from "@/modules/calendar/server/defaults"; -import { ensureDefaultLists } from "@/modules/lists/server/defaults"; - -const client = postgres(process.env["DATABASE_URL"]!); -const db = drizzle(client); - -async function seed() { - const [existing] = await db.select().from(households).limit(1); - if (existing) { - console.log(`Household already exists ("${existing.name}"), skipping.`); - } else { - await db.insert(households).values({ name: "Home" }); - console.log('Seeded household "Home".'); - } - - await ensureDefaultCalendars(); - console.log("Ensured default calendars."); - await ensureDefaultLists(); - console.log("Ensured default lists."); - await client.end(); - process.exit(0); -} - -seed().catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/src/app/error.tsx b/src/app/error.tsx new file mode 100644 index 0000000..30df092 --- /dev/null +++ b/src/app/error.tsx @@ -0,0 +1,27 @@ +"use client"; + +import { useEffect } from "react"; + +export default function Error({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}) { + useEffect(() => { + console.error(error); + }, [error]); + + return ( +
+

Something went wrong

+ +
+ ); +} diff --git a/src/app/global-error.tsx b/src/app/global-error.tsx new file mode 100644 index 0000000..c5a02be --- /dev/null +++ b/src/app/global-error.tsx @@ -0,0 +1,29 @@ +"use client"; + +import { useEffect } from "react"; + +export default function GlobalError({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}) { + useEffect(() => { + console.error(error); + }, [error]); + + return ( + + +

Something went wrong

+ + + + ); +}