Files
web_meineordi/CLAUDE.md
2026-03-31 20:48:49 +02:00

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:

  • 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 → meineordiPull 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=...).