Files
web_meineordi/meineordi-project-summary.md
2026-03-31 15:22:40 +02:00

185 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Project Summary: meineordi.at Website Redesign
## Overview
Complete static HTML redesign of the medical practice website for **Dr. med. Carina Kautsch**, Ärztin für Allgemeinmedizin, replacing a Joomla 3 CMS with a single self-contained `index.html` file served via nginx in Docker.
**Live site (old):** https://meineordi.at/
**New site (staging):** https://new.meineordi.at/
**Git repository:** https://git.stranto.com/cgasser/web_meineordi
---
## Practice Information
| Field | Value |
|---|---|
| Doctor | Dr. med. Carina Kautsch |
| Specialty | Ärztin für Allgemeinmedizin |
| Address | Pfenninggeldgasse 1B/3, A-1160 Wien |
| Phone | +43 / 1 / 493 17 73 |
| Email | info@meineordi.at |
### Opening Hours
| Day | Hours |
|---|---|
| Montag | 14:00 19:00 |
| Dienstag | 14:00 18:00 |
| Mittwoch | 07:30 11:30 |
| Donnerstag | 13:00 17:00 |
| Freitag | 09:00 12:00 |
| Sa / So | geschlossen |
---
## Infrastructure
### Server Stack
| Component | Details |
|---|---|
| Docker host | existing server |
| Reverse proxy | Nginx Proxy Manager |
| Docker network | `nginx_internal_network` (external, shared with NPM) |
| Container manager | Portainer |
| Git server | Gitea at `https://git.stranto.com` (Docker, stack name: `gitea`) |
### Gitea Setup
- Stack deployed in Portainer, name: `gitea`
- Data volume: `gitea-data`
- Web UI port: `3000` (internal only, routed via NPM)
- SSH git port: `222`
- NPM proxy host: `git.stranto.com` → container `gitea`, port `3000`, SSL/HTTPS
- ROOT_URL: `https://git.stranto.com`
- Database: SQLite (built-in, no separate DB container)
- Gitea stack file: `gitea-stack.yml` in this repo
### meineordi Website Container
- Stack deployed in Portainer from **Git repository source**
- Repository: `https://git.stranto.com/cgasser/web_meineordi`
- Branch: `master`
- Compose path: `docker-compose.yml`
- Portainer authenticates with a Gitea access token (scope: repository)
- Container name: `meineordi-web`
- Port: `8094:80` (also accessible via NPM at `new.meineordi.at`)
- NPM proxy host: `new.meineordi.at` → container `meineordi-web`, port `80`, SSL/HTTPS
---
## Repository File Structure
```
web_meineordi/
├── index.html # Full website — single self-contained file
├── logo.png # Practice logo (copied into Docker image)
├── favicon.svg # SVG favicon (red circle + white cross, #C8102E)
├── Dockerfile # nginx:alpine, copies index.html + logo.png + favicon.svg
├── docker-compose.yml # Portainer stack definition, builds from Dockerfile
├── gitea-stack.yml # Gitea server stack (deploy separately in Portainer)
└── meineordi-project-summary.md # This file
```
### Dockerfile
```dockerfile
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
COPY logo.png /usr/share/nginx/html/logo.png
COPY favicon.svg /usr/share/nginx/html/favicon.svg
```
### docker-compose.yml
```yaml
services:
meineordi-web:
build: .
container_name: meineordi-web
restart: unless-stopped
ports:
- "8094:80"
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost/"]
interval: 30s
timeout: 5s
retries: 3
networks:
nginx_internal_network: {}
networks:
nginx_internal_network:
external: true
```
---
## index.html — Sections & Features
**Sections (top to bottom):**
1. Sticky header — logo + nav links + font size toggle (A / A+) + phone button
2. Hero — logo (float animation) + headline + CTA buttons + 4 quick-info cards (address, phone, email, today's hours)
3. Öffnungszeiten — 2-column card grid with red border, hover lift effect
4. Schließzeiten — dynamically rendered from JS array (see below)
5. Leistungen — 6-item service grid with emoji icons
6. Aktuelles — 3 notice cards (prescriptions, diabetes supplies, sick notes)
7. Kontakt & Standort — contact rows + embedded Google Maps iframe
8. Footer — logo + copyright + Impressum/Datenschutz links (pages not yet built)
### Design
| Property | Value |
|---|---|
| Fonts | Cormorant Garamond (headings) + DM Sans (body), Google Fonts |
| Primary color | `#C8102E` (red from logo) |
| Background | `#ffffff`, alt sections `#f7f7f7` |
| Base font size | 18px normal / 22px large mode |
| Border radius | 12px |
| Map | Google Maps iframe embed (no API key required) |
| Mobile | Fully responsive, hamburger menu below 768px |
| Animations | `fadeUp` on hero elements, `floatLogo` on hero logo |
| Favicon | `favicon.svg` — red circle with white medical cross |
### Accessibility — Font Size Toggle
- **A** / **A+** buttons in navbar and mobile menu
- Switches base font between 18px (normal) and 22px (large)
- Active button highlighted in red
- Preference saved in `localStorage` — persists across visits
### Closure/Holiday Management
At the very top of `<body>` is a clearly commented JavaScript array — **the only place that needs editing** to manage holidays:
```js
const SCHLIESSZEITEN = [
{
dates: "30.3. 3.4.",
reason: "Karwoche",
deputy: "Dr. Irene Lachawitz",
deputyAddr: "1160 Wien, Neulerchenfelderstraße 14/6",
deputyPhone: "01 / 406 31 04",
deputyHours: "Mo & Mi 812 Uhr · Di & Do 1418 Uhr · Fr 1216 Uhr"
},
// add more entries here...
];
```
Empty array → "Keine Schließzeiten" message shown automatically.
---
## Everyday Update Workflow
```
1. Edit index.html locally (e.g. update SCHLIESSZEITEN array)
2. Right-click folder → TortoiseGit → Git Commit → master
3. Enter commit message → Commit & Push
4. Portainer → Stacks → meineordi → Pull and redeploy
```
Git client used locally: **TortoiseGit** (Windows Explorer integration)
---
## Open Items / Next Steps
- [ ] **Impressum** — required by Austrian law (ECG). Needs: company name, address, responsible person, UID if applicable.
- [ ] **Datenschutzerklärung** — required by DSGVO. Google Maps embed requires a note in the privacy policy.
- [ ] **Switch main domain** — point `meineordi.at` DNS to the new server and configure NPM proxy host once staging (`new.meineordi.at`) is approved.
- [ ] **Portainer auto-redeploy** — configure Gitea webhook → Portainer webhook URL so pushes trigger automatic redeployment without manual "Pull and redeploy".
- [ ] **Content review** — all text (Leistungen, Aktuelles) is placeholder-quality; Dr. Kautsch should review and approve final wording.
- [ ] **Google Maps** — currently using a no-API-key embed URL. If Google blocks it, switch to official Maps Embed API with a key.