Dashboard (content library, publishing queue with approvals, inbox, team management, AI runs), Meta connector, branded PDF reports, agent skills, and Docker packaging (Dockerfile, docker-compose with Caddy HTTPS, backup and path-relocation scripts). Client data, live data and secrets are excluded via .gitignore. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 lines
1.8 KiB
JavaScript
41 lines
1.8 KiB
JavaScript
// Paths and settings shared by the dashboard backend.
|
|
// Secrets come from the project .env (same file the social-manager connector uses).
|
|
import path from "node:path";
|
|
import fs from "node:fs";
|
|
import crypto from "node:crypto";
|
|
import { loadEnv, PROJECT_ROOT } from "../../connector/src/env.js";
|
|
|
|
loadEnv();
|
|
|
|
export { PROJECT_ROOT };
|
|
export const CLIENTS_DIR = path.join(PROJECT_ROOT, "clients");
|
|
export const TEMPLATE_DIR = path.join(CLIENTS_DIR, "_template");
|
|
export const DATA_DIR = path.join(PROJECT_ROOT, "data", "dashboard");
|
|
export const BRANDING_DIR = path.join(PROJECT_ROOT, "branding");
|
|
export const WEB_DIST = path.join(PROJECT_ROOT, "dashboard", "web", "dist");
|
|
|
|
fs.mkdirSync(DATA_DIR, { recursive: true });
|
|
|
|
export const PORT = Number(process.env.DASHBOARD_PORT || 4310);
|
|
export const AGENCY_NAME = process.env.AGENCY_NAME || "Metatroncube";
|
|
|
|
// Session signing secret. In production set DASHBOARD_SECRET; otherwise a random one is
|
|
// generated per process (everyone is logged out on restart).
|
|
export const SESSION_SECRET = process.env.DASHBOARD_SECRET || crypto.randomBytes(32).toString("hex");
|
|
export const SESSION_HOURS = Number(process.env.DASHBOARD_SESSION_HOURS || 12);
|
|
export const COOKIE_SECURE = process.env.DASHBOARD_COOKIE_SECURE === "true";
|
|
|
|
export const ODOO = {
|
|
url: (process.env.ODOO_URL || "").replace(/\/$/, ""),
|
|
db: process.env.ODOO_DATABASE || process.env.ODOO_DB || "",
|
|
username: process.env.ODOO_USERNAME || "",
|
|
secret: process.env.ODOO_API_KEY || process.env.ODOO_PASSWORD || "",
|
|
allowWrites: process.env.ODOO_ALLOW_WRITES === "true",
|
|
};
|
|
|
|
// AI runs (audits, plans, reports) go through the Claude Agent SDK.
|
|
export const AI = {
|
|
model: process.env.DASHBOARD_AI_MODEL || "claude-opus-5-5",
|
|
maxTurns: Number(process.env.DASHBOARD_AI_MAX_TURNS || 80),
|
|
};
|