41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { load } from "@std/dotenv";
|
|
|
|
await load({ export: true });
|
|
|
|
export const config = {
|
|
// Server
|
|
PORT: parseInt(Deno.env.get("PORT") || "3000"),
|
|
|
|
// Database
|
|
DB_HOST: Deno.env.get("DB_HOST") || "localhost",
|
|
DB_USER: Deno.env.get("DB_USER") || "root",
|
|
DB_PASSWORD: Deno.env.get("DB_PASSWORD") || "admin123",
|
|
DB_NAME: Deno.env.get("DB_NAME") || "work_allocation",
|
|
DB_PORT: parseInt(Deno.env.get("DB_PORT") || "3306"),
|
|
|
|
// JWT - Security: Use strong secret in production
|
|
JWT_SECRET: Deno.env.get("JWT_SECRET") || "work_alloc_jwt_secret_key_change_in_production_2024",
|
|
JWT_EXPIRES_IN: Deno.env.get("JWT_EXPIRES_IN") || "7d",
|
|
|
|
// Security settings
|
|
BCRYPT_ROUNDS: parseInt(Deno.env.get("BCRYPT_ROUNDS") || "12"),
|
|
RATE_LIMIT_WINDOW_MS: parseInt(Deno.env.get("RATE_LIMIT_WINDOW_MS") || "900000"), // 15 minutes
|
|
RATE_LIMIT_MAX_REQUESTS: parseInt(Deno.env.get("RATE_LIMIT_MAX_REQUESTS") || "100"),
|
|
|
|
// CORS
|
|
CORS_ORIGIN: Deno.env.get("CORS_ORIGIN") || "http://localhost:5173",
|
|
|
|
// Environment
|
|
NODE_ENV: Deno.env.get("NODE_ENV") || "development",
|
|
|
|
isDevelopment(): boolean {
|
|
return this.NODE_ENV === "development";
|
|
},
|
|
|
|
isProduction(): boolean {
|
|
return this.NODE_ENV === "production";
|
|
}
|
|
};
|
|
|
|
export default config;
|