testing db connection for logfab app techstack
  • TypeScript 74.7%
  • CSS 19.4%
  • JavaScript 5.9%
Find a file
Scaffolder 66b6bc54e7 initial commit
Change-Id: Iec316ea58323698df8a42cbeec40c54f86b0b5bd
2026-10-22 14:44:54 +00:00
db initial commit 2026-10-22 14:44:54 +00:00
drizzle initial commit 2026-10-22 14:44:54 +00:00
src initial commit 2026-10-22 14:44:54 +00:00
.env.example initial commit 2026-10-22 14:44:54 +00:00
.gitignore initial commit 2026-10-22 14:44:54 +00:00
.prettierignore initial commit 2026-10-22 14:44:54 +00:00
AGENTS.md initial commit 2026-10-22 14:44:54 +00:00
catalog-info.yaml initial commit 2026-10-22 14:44:54 +00:00
CLAUDE.md initial commit 2026-10-22 14:44:54 +00:00
components.json initial commit 2026-10-22 14:44:54 +00:00
drizzle.config.ts initial commit 2026-10-22 14:44:54 +00:00
eslint.config.js initial commit 2026-10-22 14:44:54 +00:00
package-lock.json initial commit 2026-10-22 14:44:54 +00:00
package.json initial commit 2026-10-22 14:44:54 +00:00
prettier.config.js initial commit 2026-10-22 14:44:54 +00:00
README.md initial commit 2026-10-22 14:44:54 +00:00
tsconfig.json initial commit 2026-10-22 14:44:54 +00:00
tsr.config.json initial commit 2026-10-22 14:44:54 +00:00
vite.config.ts initial commit 2026-10-22 14:44:54 +00:00

db-check

testing db connection for logfab app techstack

Created from the "Logikfabriken app" template in Developer Hub: TanStack Start (React with server-side rendering), TypeScript, Tailwind CSS and shadcn/ui, with its own PostgreSQL database, already set up for Logikfabriken's OpenShift platform.

Building with an AI agent (Claude Code, Cursor, Copilot and the like)? It reads AGENTS.md (Claude Code through CLAUDE.md), which tells it the stack and the platform's rules. Keep that file up to date as the app grows.

How it goes live

Push to main. A few minutes later it is live at https://db-check.apps.ocp.poc.logfab.cloud. On the way, every push is checked for leaked passwords (Gitleaks) and unsafe code (Semgrep), built, checked for known security holes (Trivy), signed, deployed, and scanned while it runs (OWASP ZAP). A failed check stops it. Follow each run in Developer Hub, on this app's CI tab.

You need no Dockerfile and no deploy settings: the platform builds it with npm run build and runs it with npm start.

Run it on your computer

npm install
cp .env.example .env    # settings for your computer
npm run dev             # http://localhost:3000

Before pushing: npm run typecheck, npm run lint and npm run build.

The database

The platform gives the app its own PostgreSQL database: two copies on two servers, so one can fail without the app noticing. The app finds it through DATABASE_URL, which the platform sets; nobody needs its password.

  • Tables are in src/db/schema.ts (Drizzle). After changing them, run npm run db:generate and commit the new file in drizzle/. The app applies it to the database when it starts.
  • Read and write in server functions, like the notes on the start page (src/routes/index.tsx).
  • On your computer the app runs without a database until you set DATABASE_URL in .env to a Postgres of your own.
  • Not backed up yet: backups come with the platform's file storage.

Settings and keys

Keep them out of this repo. On the platform they live in Bitwarden Secrets Manager, project openshift-apps, as one secret named db-check/staging whose value is JSON:

{"GREETING": "hello", "API_KEY": "...", "VITE_PUBLIC_MESSAGE": "hi"}
  • Every value reaches the server as an environment variable (process.env.GREETING), for server functions and server routes. Real secrets belong here.
  • Values starting with VITE_ also reach the browser, written in when the app is built (import.meta.env.VITE_PUBLIC_MESSAGE). Every visitor can read those, so only public values.

A changed value reaches the app at its next build: push to main.

Logs and health

  • Server code logs with log from src/lib/log.ts: one JSON line per event, plus one per request. See them in Developer Hub (Topology tab, the app's pod) or the OpenShift console.
  • GET /api/health tells OpenShift the app is up.

Files

  • src/routes/: the pages (index.tsx is the start page) and api/ endpoints.
  • src/components/ui/: shadcn/ui components; add more with npx shadcn@latest add <name>.
  • src/lib/: shared code (logger, helpers).
  • src/start.ts: what runs around every request.
  • AGENTS.md: instructions for AI agents.
  • catalog-info.yaml: how the app is listed in Developer Hub.