From 39b7d58a24e11fb2e010a486dbd28f33611b76f6 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Thu, 2 Oct 2025 10:54:23 +0200 Subject: [PATCH] Using .env for secrets #4 --- README.md | 13 +++++++++++++ src/app/api/db.ts | 9 +++++---- src/lib/env.ts | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 src/lib/env.ts diff --git a/README.md b/README.md index 49a4bcf..f823d74 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,16 @@ +## Setup +### Requirements +- Node.Js with npm +- Postgres DB + +```python +DB_USER= # Usually related to the OS username but do your own research +DB_HOST=localhost +DB_PASSWORD= # Can be empty +DB_PORT=5432 # Optional +``` + + ## Keywords - Voxa Client: The user-side app which communicates with all below. diff --git a/src/app/api/db.ts b/src/app/api/db.ts index 69d603c..fd45a72 100644 --- a/src/app/api/db.ts +++ b/src/app/api/db.ts @@ -1,11 +1,12 @@ +import { envEnsure, envNumber } from "@/lib/env"; import { Pool } from "pg"; const pool = new Pool({ - user: "klestiselimaj", - host: "localhost", + user: envEnsure("DB_USER"), + host: envEnsure("DB_HOST"), database: "postgres", - password: "", - port: 5432, + password: envEnsure("DB_PASSWORD"), + port: envNumber("DB_PORT") || 5432, }); const createUsersTableQuery = ` diff --git a/src/lib/env.ts b/src/lib/env.ts new file mode 100644 index 0000000..14690ff --- /dev/null +++ b/src/lib/env.ts @@ -0,0 +1,32 @@ +export function env(name: string): string | undefined { + return process.env[name]; +} + +export function envEnsure(name: string): string { + const v = process.env[name]; + + if (v === undefined) { + throw new Error( + `Environment variable '${name}' is required but doesn't exist` + ); + } + + return v; +} + +export function envNumber(name: string): number | undefined { + const v = process.env[name]; + return v ? parseInt(v) : undefined; +} + +export function envNumberEnsure(name: string): number { + const v = process.env[name]; + + if (v === undefined) { + throw new Error( + `Environment variable '${name}' is required but doesn't exist` + ); + } + + return parseInt(v); +}