#!/usr/bin/env node /** * Seed / reset local demo login accounts (cross-platform). * Requires Postgres + DATABASE_URL (defaults to docker-compose URL). * * Usage: node scripts/seed-local.mjs */ import { spawnSync } from "node:child_process"; import path from "node:path"; import { DEV_API_PORT, DEV_WEB_PORT } from "./dev-ports.mjs"; import { detectHostProfile, withGoLowMem } from "./lowmem-env.mjs"; import { loadRootEnv, repoRoot } from "./root-env.mjs"; const env = withGoLowMem(loadRootEnv(process.env), detectHostProfile()); if (!env.DATABASE_URL) { env.DATABASE_URL = "postgres://descrybe:descrybe@localhost:5433/descrybe?sslmode=disable"; } const demoEmail = env.SEED_DEMO_EMAIL || "demo@descrybe.local"; const demoPass = env.SEED_DEMO_PASSWORD || "DemoPass123!"; const adminEmail = env.SEED_ADMIN_EMAIL || "berce.tim@gmail.com"; const adminPass = env.SEED_ADMIN_PASSWORD || "LocalDemo!Admin1"; const apiDir = path.join(repoRoot, "apps", "api"); function run(args) { const r = spawnSync("go", args, { cwd: apiDir, env, stdio: "inherit", shell: false, }); if (r.status !== 0) process.exit(r.status ?? 1); } console.log(`==> seed-platform-admin ${adminEmail}`); run([ "run", "./cmd/seed-platform-admin", "-postgres", env.DATABASE_URL, "-email", adminEmail, "-password", adminPass, "-name", "Local Admin", "-company", "Local Admin Co", "-confirm", ]); console.log( "==> seed-demo (also upserts demo@descrybe.test)", ); run([ "run", "./cmd/seed-demo", "-postgres", env.DATABASE_URL, "-email", demoEmail, "-password", demoPass, "-also-email", "demo@descrybe.test", ]); console.log(""); console.log("Local accounts:"); console.log(` demo: ${demoEmail} / ${demoPass} (also demo@descrybe.test)`); console.log(` admin: ${adminEmail} / ${adminPass} (platform admin)`); console.log(" plan: Enterprise — Local Demo Co"); console.log(`Web: http://localhost:${DEV_WEB_PORT}/login`); console.log(`API: http://localhost:${DEV_API_PORT}`);