2.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project
Static website for Dr. med. Carina Kautsch, Ärztin für Allgemeinmedizin, 1160 Wien.
Served via nginx:alpine in Docker. No build step, no framework, no CMS.
Full project context (infrastructure, design decisions, open items) is in meineordi-project-summary.md.
Architecture
Everything is a single file: index.html contains all HTML, CSS, and JavaScript inline.
logo.png and favicon.svg are served as static assets alongside it.
The only dynamic behaviour is client-side JavaScript:
SCHLIESSZEITENarray — at the very top of<body>, the sole place to edit holiday closures.renderClosures()reads it and builds cards; empty array shows a "no closures" message automatically.- Today's hours — populated on load from a hardcoded day→time map.
- Font size toggle — switches
body.large-fontclass (18px → 22px), persisted inlocalStorage. - Hamburger menu — toggles
.openclass on mobile nav.
Deployment
Changes go live by:
- Commit & push to
https://git.stranto.com/cgasser/web_meineordi(branch:master) - Portainer → Stacks →
meineordi→ Pull and redeploy
Portainer builds the Docker image directly from the repo (via build: . in docker-compose.yml).
The container joins nginx_internal_network (shared with Nginx Proxy Manager).
NPM routes new.meineordi.at → container meineordi-web port 80.
Key constraints
- No external CSS/JS files — everything must stay embedded in
index.html. - No framework, no npm, no build step — plain HTML/CSS/JS only.
logo.pngmust exist in the repo root — it isCOPY'd into the image by the Dockerfile. Missing it breaks the Docker build.- Primary color is
#C8102E— do not change, it is extracted from the practice logo. - Base font size is 18px — deliberately large for older patients; large mode is 22px.
- Google Maps embed uses a no-API-key URL. If Google blocks it, switch to the official Maps Embed API (
/maps/embed/v1/place?key=...).