- TypeScript 71.6%
- CSS 25%
- JavaScript 3.4%
|
|
||
|---|---|---|
| src | ||
| .env.example | ||
| .gitignore | ||
| .prettierignore | ||
| AGENTS.md | ||
| catalog-info.yaml | ||
| CLAUDE.md | ||
| components.json | ||
| eslint.config.js | ||
| package-lock.json | ||
| package.json | ||
| prettier.config.js | ||
| README.md | ||
| tsconfig.json | ||
| tsr.config.json | ||
| vite.config.ts | ||
stack-check
Testing a template that follows logfab techstack
Created from the "Logikfabriken app" template in Developer Hub: TanStack Start (React with server-side rendering), TypeScript, Tailwind CSS and shadcn/ui, 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://stack-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.
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
stack-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
logfromsrc/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/healthtells OpenShift the app is up.
Files
src/routes/: the pages (index.tsxis the start page) andapi/endpoints.src/components/ui/: shadcn/ui components; add more withnpx 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.