Files
temetro/frontend
Khalid Abdi 7c92c03eed docker: stop a Windows checkout from breaking the backend image
The repo had no .gitattributes at all, so nothing pinned line endings —
`git ls-files --eol backend/docker-entrypoint.sh` showed an empty attr/.
Git for Windows installs with core.autocrlf=true, which rewrites the
entrypoint to CRLF on checkout. The image then ships a script whose
shebang is "#!/bin/sh\r" and the container dies at startup with

  exec /usr/local/bin/docker-entrypoint.sh: no such file or directory

naming the file it just copied in, which reads like the COPY failed.

Verified by building an image from a deliberately CRLF-ified copy of the
entrypoint: it reproduces that exact error, and passes with the sed.

Pin *.sh (and the Dockerfiles) to LF, and strip CR in the image before
chmod as well — .gitattributes only helps fresh clones, and a Windows
contributor who cloned before this commit still has CRLF on disk.
Renormalizing changes no tracked file today; this is purely a guard.

The arm64/Apple Silicon failure that prompted this is already fixed by
6127a0a (Turbopack has no musl/arm64 binding; the build uses webpack).
Confirmed by building both images on an arm64 Mac. Release publishes
linux/amd64 + linux/arm64, there are no bind mounts, no platform: keys
and no host.docker.internal, so the remaining cross-platform hazard was
just the line endings.

Also tighten .dockerignore: backend was shipping docker-compose.tunnel
.yml, fly.toml, railway.json, render.yaml, .env.example and
drizzle.config.ts into the build context; frontend was shipping
tsconfig.tsbuildinfo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 20:27:03 +03:00
..
2026-05-31 11:19:10 +03:00
2026-07-12 21:17:55 +03:00
2026-06-17 20:50:09 +03:00
2026-07-10 20:51:04 +03:00
2026-07-15 02:35:22 +03:00

temetro frontend

The clinician-facing AI chat UI for temetro — a Next.js 16 app where clinicians retrieve and organize patient data in natural language, rendered as rich record cards. It's wired to the ../backend for real auth, multi-tenant clinics, and live patient data.

temetro AI chat

Stack

Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS v4 · COSS UI components (Base UI) · i18next · Socket.io client.

This app runs a customized Next.js 16 whose conventions differ from the public docs (e.g. route protection lives in proxy.ts, not middleware.ts). See CLAUDE.md and node_modules/next/dist/docs/ before writing Next.js code.

Develop

npm install
npm run dev      # Next dev server (Turbopack) on http://localhost:3000

Other scripts: npm run build (production build), npm run start (serve the build), npm run lint. There is no test runner — verify changes by running the dev server.

Talking to the backend

The frontend needs the API running (see ../backend). It resolves the backend URL from the host you open the app on — so it works on localhost and across the clinic LAN (http://<server-IP>:3000) without a rebuild. Set NEXT_PUBLIC_API_URL only to pin a fixed or reverse-proxied URL; see lib/backend-url.ts.

Architecture

  • app/ — App Router. app/(app)/ is the authenticated product shell; app/(auth)/ holds the login / signup / onboarding pages.
  • components/chat/ — the chat UI (input, message state, patient cards).
  • components/settings/ — settings panels, including About & updates (version + LAN access).
  • components/ui/ — COSS primitives (Base UI, added via the shadcn CLI).
  • lib/ — API + auth clients, i18n, and data helpers.

See CLAUDE.md for the full architecture, theming, and gotchas.

License

MIT.