41 lines
2.1 KiB
Markdown
41 lines
2.1 KiB
Markdown
# 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:
|
|
- **`SCHLIESSZEITEN` array** — 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-font` class (18px → 22px), persisted in `localStorage`.
|
|
- **Hamburger menu** — toggles `.open` class on mobile nav.
|
|
|
|
## Deployment
|
|
|
|
Changes go live by:
|
|
1. Commit & push to `https://git.stranto.com/cgasser/web_meineordi` (branch: `master`)
|
|
2. 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.png` must exist** in the repo root — it is `COPY`'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=...`).
|