Files
descrybe/scripts/seed-local.mjs
T
2026-08-13 21:38:42 +02:00

75 lines
1.9 KiB
JavaScript

#!/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",
"-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}`);