platform-tooling/configs/paths.ts
2026-03-03 21:04:03 -08:00

65 lines
1.9 KiB
TypeScript

/**
* Centralized Path Definitions
*
* Single source of truth for all platform directory paths used by tooling.
* Import from here instead of hardcoding path strings.
*/
import { resolve } from 'node:path';
import { getProjectRoot } from './project-root';
const ROOT = getProjectRoot();
/** Resolved absolute paths for the platform */
export const PATHS = {
root: ROOT,
// Source code
codebase: resolve(ROOT, 'codebase'),
features: resolve(ROOT, 'codebase/features'),
// Deployments
deployments: resolve(ROOT, 'deployments'),
domains: resolve(ROOT, 'deployments/@domains'),
sharedServices: resolve(ROOT, 'deployments/shared-services'),
// Docker
composeFile: resolve(ROOT, 'deployments/docker/docker-compose.yml'),
envDev: resolve(ROOT, 'deployments/docker/.env.dev'),
envProd: resolve(ROOT, 'deployments/docker/.env.prod'),
envStaging: resolve(ROOT, 'deployments/docker/.env.staging'),
// Config
portsFile: resolve(ROOT, 'deployments/ports.yaml'),
servicesDir: resolve(ROOT, 'deployments/services/features'),
// Generated output
nginxGenerated: resolve(ROOT, 'deployments/nginx/generated'),
systemdGenerated: resolve(ROOT, 'deployments/systemd/generated'),
// Tooling
tooling: resolve(ROOT, 'tooling'),
scripts: resolve(ROOT, 'tooling/scripts'),
// Local runtime (gitignored)
local: resolve(ROOT, '.local'),
devLogs: resolve(ROOT, '.local/logs/dev'),
minioData: resolve(ROOT, '.local/data/minio'),
pids: resolve(ROOT, '.local/pids'),
// Vault
vault: resolve(ROOT, 'vault'),
vaultFeatures: resolve(ROOT, 'vault/features'),
// Production (absolute, not relative to root)
prodBase: '/var/www/lilith',
prodSeoOutput: '/var/www/apps/seo',
} as const;
/** Relative path strings for buildDeploymentRegistry() calls */
export const REGISTRY_PATHS = {
deploymentsPath: 'deployments/@domains',
sharedServicesPath: 'deployments/shared-services',
} as const;
export type PlatformPaths = typeof PATHS;