feat: project scaffolding and env config loader

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 14:06:56 +02:00
co-authored by Claude Sonnet 5
parent fe93139c6e
commit 378ca762a2
6 changed files with 4553 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
import 'dotenv/config';
const REQUIRED_VARS = ['STORAGE_DIR', 'DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME'];
export function loadConfig() {
const missing = REQUIRED_VARS.filter((key) => !process.env[key]);
if (missing.length > 0) {
throw new Error(`Missing required environment variables: ${missing.join(', ')}`);
}
return {
port: Number(process.env.PORT ?? 3000),
storageDir: process.env.STORAGE_DIR,
db: {
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
},
maxFileSizeMb: Number(process.env.MAX_FILE_SIZE_MB ?? 100),
retentionHours: Number(process.env.RETENTION_HOURS ?? 1),
workerPollIntervalMs: Number(process.env.WORKER_POLL_INTERVAL_MS ?? 1500),
workerConcurrency: Number(process.env.WORKER_CONCURRENCY ?? 3),
rateLimitMaxJobs: Number(process.env.RATE_LIMIT_MAX_JOBS ?? 20),
rateLimitWindowMinutes: Number(process.env.RATE_LIMIT_WINDOW_MINUTES ?? 10),
};
}