From 1b039a3d313e2d82e2d592c1d0bdc0fe0f919edd Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Thu, 29 Jan 2026 13:24:52 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20perf:=20optimize=20program=20start-?= =?UTF-8?q?up=20process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 29 ++++++++++++++++++----------- src/utils/monitoring/sentry/init.ts | 20 ++++++++++++++------ src/utils/startups/validateEnv.ts | 9 ++++++--- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/src/index.ts b/src/index.ts index 0994007..01a69cd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,18 +1,25 @@ import { middleware } from "./middleware"; import { validateEnv } from "./utils/startups/validateEnv"; + validateEnv(); -const { Elysia } = await import("elysia"); -const { routes } = await import("./routes"); +async function bootstrap() { + const { Elysia } = await import("elysia"); -const { sentryInit } = await import("./utils/monitoring/sentry/init"); -sentryInit(); + const { routes } = require("./routes"); + const { sentryInit } = require("./utils/monitoring/sentry/init"); -const app = new Elysia() - .use(middleware) - .use(routes) - .listen(process.env.APP_PORT || 3000); + sentryInit(); -console.log( - `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`, -); + console.log("\x1b[1m\x1b[33mπŸš€ Starting backend services...\x1b[0m"); + const app = new Elysia() + .use(middleware) + .use(routes) + .listen(process.env.APP_PORT || 3000); + + console.log( + `\x1b[1m\x1b[32mβœ… Backend service started on: ${process.env.APP_URL}\x1b[0m`, + ); +} + +bootstrap(); diff --git a/src/utils/monitoring/sentry/init.ts b/src/utils/monitoring/sentry/init.ts index 8848258..86266ca 100644 --- a/src/utils/monitoring/sentry/init.ts +++ b/src/utils/monitoring/sentry/init.ts @@ -1,8 +1,16 @@ import { init } from "@sentry/node"; -export const sentryInit = () => - init({ - dsn: process.env.SENTRY_DSN, - tracesSampleRate: 1.0, - environment: process.env.APP_ENV, - }); +export const sentryInit = () => { + console.log("πŸ”§ Initializing Sentry..."); + try { + init({ + dsn: process.env.SENTRY_DSN, + tracesSampleRate: 1.0, + environment: process.env.APP_ENV, + }); + console.log("βœ… Sentry initialized."); + } catch (error) { + console.error("❌ Failed to initialize Sentry:", error); + process.exit(1); + } +}; diff --git a/src/utils/startups/validateEnv.ts b/src/utils/startups/validateEnv.ts index 61ac380..24a2e45 100644 --- a/src/utils/startups/validateEnv.ts +++ b/src/utils/startups/validateEnv.ts @@ -1,18 +1,19 @@ import fs from "fs"; export const validateEnv = () => { + console.log("πŸ” Validating environment variables..."); if (!fs.existsSync(".env")) { if (fs.existsSync(".env.example")) { console.error("⚠️ .env file not found"); console.warn("πŸ“ Creating .env file from .env.example, please wait..."); fs.copyFileSync(".env.example", ".env"); console.warn( - "πŸ–ŠοΈ .env file successfully created please fill in the value in each key needed" + "πŸ–ŠοΈ .env file successfully created please fill in the value in each key needed", ); process.exit(1); } else { console.error( - `❌ Can't validate environment variable because can't find .env.example file. seems to be missing files please re-pull with β€œgit pull main”` + `❌ Can't validate environment variable because can't find .env.example file. seems to be missing files please re-pull with β€œgit pull main”`, ); process.exit(1); } @@ -25,7 +26,7 @@ export const validateEnv = () => { .filter((key) => key && !key.startsWith("#")); const missingKeys = exampleKeys.filter( - (key) => !process.env[key] || process.env[key].trim() === "" + (key) => !process.env[key] || process.env[key].trim() === "", ); if (missingKeys.length > 0) { @@ -34,4 +35,6 @@ export const validateEnv = () => { console.error(`check your .env file and make sure all keys are filled in`); process.exit(1); } + + console.log("βœ… Environment variables are valid."); };