# jamulix.de — Landing Page Next.js 16 Landing Page für [jamulix.de](https://jamulix.de), statisch exportiert und unter `/landingpage/` deployed. --- ## Tech Stack - **Next.js 16.2** mit `output: 'export'` (statischer Export, kein Node.js-Server nötig) - **React 19**, **TypeScript** - **Tailwind CSS v4** + shadcn/ui-Komponenten - **Framer Motion** für Animationen - **next-themes** für Dark/Light Mode --- ## Projektstruktur ``` app/ layout.tsx # Root Layout, Fonts, Theme-Init-Script page.tsx # Hauptseite (alle Sections zusammengesetzt) globals.css # CSS-Variablen (OKLCH), Tailwind, Fly.io-Farbschema impressum/ # Impressum-Seite datenschutz/ # Datenschutzerklärung components/ hero.tsx # Hero-Section mit Gradient-Überschrift about-section.tsx projects-section.tsx focus-section.tsx philosophy-section.tsx footer.tsx # Footer mit E-Mail (obfuskiert) und Forgejo-Link header.tsx # Navigation + Theme-Toggle programmer-graphic.tsx # Foto (statischer Import wegen basePath) theme-toggle.tsx ui/ # shadcn/ui-Basiskomponenten public/ Programmierer.png # Foto (statischer Import in programmer-graphic.tsx) ``` --- ## Lokale Entwicklung ```bash npm install npm run dev ``` Aufruf im Browser: - Lokal: http://localhost:3000/landingpage - Netzwerk: http://192.168.179.124:3000/landingpage (Handy im WLAN) > Port 3000 muss in der Firewall offen sein: `sudo ufw allow 3000/tcp` --- ## Build ```bash npm run build ``` Erzeugt `out/`, benennt es in `landingpage/` um. Dieses Verzeichnis wird deployed. --- ## Persönliche Daten (Impressum / Datenschutz) Werden **nicht** im Repository gespeichert, sondern zur Build-Zeit aus `.env.local` gelesen. ```bash cp .env.local.example .env.local # .env.local mit echten Daten befüllen ``` Variablen: `OWNER_NAME`, `OWNER_STREET`, `OWNER_ZIP_CITY`, `OWNER_EMAIL`, `HOSTER_NAME`, `HOSTER_STREET`, `HOSTER_ZIP`, `HOSTER_CITY`, `HOSTER_COUNTRY` `.env.local` ist per `.gitignore` ausgeschlossen. Die E-Mail im Footer (`footer.tsx`) wird als Prop von `app/page.tsx` übergeben: ```tsx