Tonne of debugging - getting ready for the production builds

This commit is contained in:
2026-02-16 10:44:18 -07:00
parent a77306fac2
commit 7895ce683e
1367 changed files with 404191 additions and 2005 deletions

View File

@@ -26,6 +26,10 @@ const envSchema = z.object({
// Encryption (for DB-stored secrets like SMTP password; falls back to JWT_ACCESS_SECRET)
ENCRYPTION_KEY: z.string().optional(),
// Initial Super Admin (auto-created during database seeding)
INITIAL_ADMIN_EMAIL: z.string().email().default('admin@cmlite.org'),
INITIAL_ADMIN_PASSWORD: z.string().min(12).default('REQUIRED_STRONG_PASSWORD_CHANGE_THIS'),
// SMTP
SMTP_HOST: z.string().default('mailhog-changemaker'),
SMTP_PORT: z.coerce.number().default(1025),
@@ -56,6 +60,17 @@ const envSchema = z.object({
// Geocoding
MAPBOX_API_KEY: z.string().optional(),
GEOCODING_RATE_LIMIT_MS: z.coerce.number().default(1100),
GEOCODING_CACHE_ENABLED: z.string().default('true'),
GEOCODING_CACHE_TTL_HOURS: z.coerce.number().default(24),
// Phase 2: Performance & Accuracy
GOOGLE_MAPS_API_KEY: z.string().optional(),
GOOGLE_MAPS_ENABLED: z.string().default('false'),
GEOCODING_PARALLEL_ENABLED: z.string().default('true'),
GEOCODING_BATCH_SIZE: z.coerce.number().default(10),
// Bulk Re-Geocoding (Phase 3)
BULK_GEOCODE_ENABLED: z.string().default('true'),
BULK_GEOCODE_MAX_BATCH: z.coerce.number().default(5000),
// Platform Services (NocoDB, n8n, Gitea)
NOCODB_URL: z.string().default('http://changemaker-v2-nocodb:8080'),
@@ -72,8 +87,23 @@ const envSchema = z.object({
MAILHOG_URL: z.string().default('http://mailhog-changemaker:8025'),
MAILHOG_EMBED_PORT: z.coerce.number().default(8884),
// Mini QR (QR code generator)
MINI_QR_URL: z.string().default('http://mini-qr:8080'),
MINI_QR_PORT: z.coerce.number().default(8089),
MINI_QR_EMBED_PORT: z.coerce.number().default(8885),
// Excalidraw (collaborative whiteboard)
EXCALIDRAW_URL: z.string().default('http://excalidraw-changemaker:80'),
EXCALIDRAW_PORT: z.coerce.number().default(8090),
EXCALIDRAW_EMBED_PORT: z.coerce.number().default(8886),
// Pangolin (tunnel / reverse proxy)
PANGOLIN_API_URL: z.string().default(''),
PANGOLIN_API_URL: z.string()
.default('')
.refine(
(url) => !url || url.startsWith('https://'),
{ message: 'PANGOLIN_API_URL must use HTTPS for secure credential transmission' }
),
PANGOLIN_API_KEY: z.string().default(''),
PANGOLIN_ORG_ID: z.string().default(''),
PANGOLIN_SITE_ID: z.string().default(''),
@@ -84,6 +114,14 @@ const envSchema = z.object({
// NAR (National Address Register)
NAR_DATA_DIR: z.string().default('/data'),
// Media Management
ENABLE_MEDIA_FEATURES: z.string().default('false'),
MEDIA_API_PORT: z.coerce.number().default(4100),
MEDIA_API_PUBLIC_URL: z.string().default('http://media-api:4100'),
MEDIA_ROOT: z.string().default('/media/library'),
MEDIA_UPLOADS: z.string().default('/media/uploads'),
MAX_UPLOAD_SIZE_GB: z.coerce.number().default(10),
// Docs / Code Server
CODE_SERVER_URL: z.string().default('http://code-server-changemaker:8080'),
CODE_SERVER_PORT: z.coerce.number().default(8888),
@@ -94,6 +132,22 @@ const envSchema = z.object({
MKDOCS_CONTAINER_NAME: z.string().default('mkdocs-changemaker'),
MKDOCS_SITE_SERVER_URL: z.string().default('http://mkdocs-site-server-changemaker:80'),
MKDOCS_SITE_SERVER_PORT: z.coerce.number().default(4004),
// Monitoring Services (behind 'monitoring' profile)
PROMETHEUS_URL: z.string().default('http://prometheus-changemaker:9090'),
PROMETHEUS_PORT: z.coerce.number().default(9090),
GRAFANA_URL: z.string().default('http://grafana-changemaker:3000'),
GRAFANA_PORT: z.coerce.number().default(3005),
ALERTMANAGER_URL: z.string().default('http://alertmanager-changemaker:9093'),
ALERTMANAGER_PORT: z.coerce.number().default(9093),
CADVISOR_URL: z.string().default('http://cadvisor-changemaker:8080'),
CADVISOR_PORT: z.coerce.number().default(8086),
NODE_EXPORTER_URL: z.string().default('http://node-exporter-changemaker:9100'),
NODE_EXPORTER_PORT: z.coerce.number().default(9100),
REDIS_EXPORTER_URL: z.string().default('http://redis-exporter-changemaker:9121'),
REDIS_EXPORTER_PORT: z.coerce.number().default(9121),
GOTIFY_URL: z.string().default('http://gotify-changemaker:80'),
GOTIFY_PORT: z.coerce.number().default(8889),
});
export type Env = z.infer<typeof envSchema>;