prime8dev

prime8dev
git clone https://git.prime8.dev/prime8dev.git
Log | Files | Refs | README | LICENSE

commit 7f43784ef1c19ca2ff3d4f150042a2cf2417119d
parent 1367f3561df60a31344a3bf9e2f59b74ace2aacd
Author: Damian Myrda <damian@prime8.dev>
Date:   Tue, 17 Feb 2026 10:39:53 -0600

fix: use internal Docker networking for GitLab API calls

Add GITLAB_HOST env var to route GitLab API requests through internal
Docker network instead of external DNS. Fixes README not loading in
production when GitLab is on the same host.

Diffstat:
Menv.example | 2++
Msrc/external/git.ts | 10++++++++--
2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/env.example b/env.example @@ -1 +1,3 @@ +NODE_ENV=dev|prod +GITLAB_HOST=https://gitlab.com WAKATIME_API_KEY=your_wakatime_api_key_here diff --git a/src/external/git.ts b/src/external/git.ts @@ -15,7 +15,7 @@ export async function fetchGitMetadataForProject( project: Project, ): Promise<GitMetadata | null> { try { - const response = await fetch(project.apiUrl, { + const response = await fetch(getInternalGitLabUrl(project.apiUrl), { headers: { "User-Agent": "prime8dev-portfolio" }, }); @@ -43,12 +43,18 @@ export async function fetchGitMetadataForProject( } } +function getInternalGitLabUrl(externalUrl: string): string { + const internalHost = process.env.GITLAB_HOST; + if (!internalHost) return externalUrl; + return externalUrl.replace(/https?:\/\/[^/]+/, internalHost); +} + async function fetchReadme( urls: RepoUrls, readmeUrl: string, ): Promise<string | null> { try { - const response = await fetch(readmeUrl, { + const response = await fetch(getInternalGitLabUrl(readmeUrl), { headers: { "User-Agent": "prime8dev-portfolio" }, }); if (!response.ok) return null;