No description
  • Vue 50.2%
  • TypeScript 45.2%
  • CSS 4.5%
  • JavaScript 0.1%
Find a file
2026-11-03 18:30:47 +00:00
.forgejo/workflows feat: Kontaktseite mit Formular ohne Tracking (MAIN-15) 2026-11-03 19:02:36 +01:00
app Merge test/access-check-main-1 into MAIN-10 header/footer/navigation 2026-11-03 19:30:46 +01:00
docs Merge test/access-check-main-1 into MAIN-10 header/footer/navigation 2026-11-03 19:30:46 +01:00
public/img/projekte feat: projects overview page /projekte (MAIN-14) 2026-11-03 18:57:36 +01:00
server feat: Kontaktseite mit Formular ohne Tracking (MAIN-15) 2026-11-03 19:02:36 +01:00
tests feat: Kontaktseite mit Formular ohne Tracking (MAIN-15) 2026-11-03 19:02:36 +01:00
.env.example feat: Kontaktseite mit Formular ohne Tracking (MAIN-15) 2026-11-03 19:02:36 +01:00
.gitignore chore: set up Nuxt 3, Tailwind, ESLint and Forgejo CI (MAIN-8) 2026-11-03 18:49:49 +01:00
.nvmrc chore: set up Nuxt 3, Tailwind, ESLint and Forgejo CI (MAIN-8) 2026-11-03 18:49:49 +01:00
ACCESS_TEST.md test: access check commit (MAIN-1) 2026-11-03 18:32:40 +01:00
eslint.config.mjs chore: set up Nuxt 3, Tailwind, ESLint and Forgejo CI (MAIN-8) 2026-11-03 18:49:49 +01:00
nuxt.config.ts Merge test/access-check-main-1 into MAIN-10 header/footer/navigation 2026-11-03 19:30:46 +01:00
package-lock.json Merge test/access-check-main-1 into MAIN-9 design system (Nuxt 4 + Tailwind 4) 2026-11-03 19:27:59 +01:00
package.json Merge test/access-check-main-1 into MAIN-9 design system (Nuxt 4 + Tailwind 4) 2026-11-03 19:27:59 +01:00
README.md Merge test/access-check-main-1 into MAIN-10 header/footer/navigation 2026-11-03 19:30:46 +01:00
tsconfig.json chore: upgrade to Nuxt 4 and Tailwind CSS 4 (MAIN-8) 2026-11-03 18:55:48 +01:00
vitest.config.ts feat: Kontaktseite mit Formular ohne Tracking (MAIN-15) 2026-11-03 19:02:36 +01:00

meowww innovation gmbh – Website

Nuxt 4 + Tailwind CSS 4. Alle Seiten sind vorgerendert. Nur das Kontaktformular (/api/contact) läuft als Server-Route im Nitro-Node-Server. Kein Tracking, keine Third-Party-Requests.

Voraussetzungen

  • Node.js 22 (siehe .nvmrc, mindestens 22.22.3)
  • npm

Befehle

npm ci              # Abhängigkeiten installieren
npm run dev         # Dev-Server auf http://localhost:3000
npm run lint        # ESLint (inkl. Stylistic-Regeln)
npm run lint:fix    # ESLint mit Autofix
npm run typecheck   # vue-tsc über nuxt typecheck
npm test            # Unit-/Integrationstests (Vitest)
npm run build       # Build nach .output (Seiten vorgerendert + Node-Server)
npm run test:e2e    # E2E-Tests gegen den Build (vorher npm run build)
npm run preview     # Build lokal ansehen
node .output/server/index.mjs   # Produktion starten (PORT, NUXT_CONTACT_* setzen)

Struktur

app/pages/              Routen (dateibasiert), Demo unter /design-system, Kontakt unter /kontakt
app/layouts/            Seitengerüst (Skip-Link, Header, Main, Footer)
app/components/site/    Header, Footer, DOS-Umschalter, Platzhalter
app/components/ui/      Design-System-Komponenten (UiButton, UiCard, …)
app/utils/navigation.ts Navigations- und F-Tasten-Daten
app/assets/css/main.css Design-Tokens (CSS-Variablen, Tailwind @theme) und Basisstile
server/api/contact      Endpoint des Kontaktformulars
server/lib/contact      Validierung, Spam-Schutz, Mailversand (pur, testbar)
tests/                  Vitest: Unit/Integration (tests/server), E2E (tests/e2e)
docs/                   Doku, u. a. design-system.md
nuxt.config.ts          Nuxt-Konfiguration, Prerendering, Tailwind-Vite-Plugin
.forgejo/workflows      CI: Lint, Typecheck, Tests, Build

Design-System

Tokens, Schriften und Komponenten sind in docs/design-system.md beschrieben. Die Demo-Seite liegt unter /design-system.

Kontaktformular

Ablauf, Spam-Schutz, Fehlercodes und Konfiguration: docs/kontaktformular.md. Umgebungsvariablen: .env.example.

CI

.forgejo/workflows/ci.yml läuft bei jedem Push und Pull Request: npm ci, Lint, Typecheck, Unit-Tests, nuxt build und E2E-Tests. Das Ergebnis (.output) wird als Artefakt site hochgeladen.