feat: Projekte-Übersicht /projekte (MAIN-14) #4

Merged
rainer merged 1 commit from agent/full-stack-web-engineer/99ff6445dafb into test/access-check-main-1 2026-11-03 18:29:01 +00:00
Owner

Implements MAIN-14: a separate page for meowww's own projects, so it is clear which links lead off the site.

Stacked on #1 (MAIN-8). The base is the MAIN-8 branch. Merge #1 first, then retarget this PR to the default branch.

What changed

  • pages/projekte.vue: the /projekte page with two sections. Eigene Projekte has 6 cards: KISSWALLET, WALLFIX 3D, SPRAYPUZZLE, Homelog, Youths.ch, Games. Maker-Modelle has 5 Printables cards: Can Companion, Bohrschablone, FiiO K3 Mount, Pizza Teig, Zopf Teig.
  • components/ProjectCard.vue: a window-style card with a retro title bar (KISSWALL.EXE), image or terminal placeholder, tags, description and links.
  • components/ExternalLink.vue: renders every external link with target="_blank" rel="noopener noreferrer", a visible extern ↗ label and the screen-reader text "(externer Link, öffnet in neuem Tab)". The page intro explains the label.
  • data/projects.ts: all project data in one typed place, taken from the MAIN-5 inventory (sections 6 and 8, PR #2). KISSWALLET also gets a "Kaufen bei Big Cartel" link, following the inventory's recommendation to drop the shop page.
  • public/img/projekte/*.webp: 7 images cut to 800×600 WebP, 10–66 KB each. The originals were up to 4.6 MB.
  • nuxt.config.ts: /projekte added to the prerender routes. Nothing links to it yet; the navigation comes in MAIN-10.

How to test

npm ci && npm run lint && npm run typecheck && npm run generate
npx nuxt preview   # → http://localhost:3000/projekte

I ran these locally and lint, typecheck and generate pass. I also checked the generated HTML: there are 11 cards and 12 links, and every link has _blank, noopener and the screen-reader hint.

Known limitations

  • Colours are temporary. The page uses the MAIN-6 palette as Tailwind arbitrary values (bg-[#F5EFE2] and so on). They will be swapped for the MAIN-9 tokens once those land.
  • New texts need approval. Homelog, Youths.ch and Games had no text on the old site. I wrote their descriptions from the sites themselves and marked them draft: true. The page intro is new copy too. All other texts are taken from the old site unchanged.
  • Open questions from MAIN-5: it is still undecided whether Homelog and Youths.ch are own projects or client work (question 3). For now they appear here.
  • SPRAYPUZZLE, Homelog, Youths.ch and Games have no screenshot yet, so they show a terminal placeholder.
  • Not visually checked. No browser runs on this machine: Playwright's Chromium is missing system libraries. I checked the generated HTML only.
  • No test framework is set up in the repo, so there are no component tests.

🤖 Generated with Claude Code

Implements MAIN-14: a separate page for meowww's own projects, so it is clear which links lead off the site. **Stacked on #1 (MAIN-8).** The base is the MAIN-8 branch. Merge #1 first, then retarget this PR to the default branch. ## What changed - `pages/projekte.vue`: the `/projekte` page with two sections. **Eigene Projekte** has 6 cards: KISSWALLET, WALLFIX 3D, SPRAYPUZZLE, Homelog, Youths.ch, Games. **Maker-Modelle** has 5 Printables cards: Can Companion, Bohrschablone, FiiO K3 Mount, Pizza Teig, Zopf Teig. - `components/ProjectCard.vue`: a window-style card with a retro title bar (`KISSWALL.EXE`), image or terminal placeholder, tags, description and links. - `components/ExternalLink.vue`: renders every external link with `target="_blank" rel="noopener noreferrer"`, a visible `extern ↗` label and the screen-reader text "(externer Link, öffnet in neuem Tab)". The page intro explains the label. - `data/projects.ts`: all project data in one typed place, taken from the MAIN-5 inventory (sections 6 and 8, PR #2). KISSWALLET also gets a "Kaufen bei Big Cartel" link, following the inventory's recommendation to drop the shop page. - `public/img/projekte/*.webp`: 7 images cut to 800×600 WebP, 10–66 KB each. The originals were up to 4.6 MB. - `nuxt.config.ts`: `/projekte` added to the prerender routes. Nothing links to it yet; the navigation comes in MAIN-10. ## How to test ``` npm ci && npm run lint && npm run typecheck && npm run generate npx nuxt preview # → http://localhost:3000/projekte ``` I ran these locally and lint, typecheck and generate pass. I also checked the generated HTML: there are 11 cards and 12 links, and every link has `_blank`, `noopener` and the screen-reader hint. ## Known limitations - **Colours are temporary.** The page uses the MAIN-6 palette as Tailwind arbitrary values (`bg-[#F5EFE2]` and so on). They will be swapped for the MAIN-9 tokens once those land. - **New texts need approval.** Homelog, Youths.ch and Games had no text on the old site. I wrote their descriptions from the sites themselves and marked them `draft: true`. The page intro is new copy too. All other texts are taken from the old site unchanged. - **Open questions from MAIN-5:** it is still undecided whether Homelog and Youths.ch are own projects or client work (question 3). For now they appear here. - SPRAYPUZZLE, Homelog, Youths.ch and Games have no screenshot yet, so they show a terminal placeholder. - **Not visually checked.** No browser runs on this machine: Playwright's Chromium is missing system libraries. I checked the generated HTML only. - No test framework is set up in the repo, so there are no component tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: projects overview page /projekte (MAIN-14)
Some checks failed
CI / build (pull_request) Waiting to run
CI / build (push) Has been cancelled
6e13792142
Shows own projects and free maker models as window-style cards, kept
apart from the service pages. Every project link points outside
meowww.ch and is marked "extern ↗" with a screen-reader hint, opens in
a new tab with rel="noopener noreferrer".

Project data lives in data/projects.ts, sourced from the MAIN-5
inventory. Images are 800x600 WebP copies of the inventory assets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
rainer changed target branch from agent/full-stack-web-engineer/03d5b7286518 to test/access-check-main-1 2026-11-03 18:29:00 +00:00
rainer merged commit 3a6a56021d into test/access-check-main-1 2026-11-03 18:29:01 +00:00
Author
Owner

Summary

PR #4 ist in test/access-check-main-1 gemergt (3a6a560).

Conflicts resolved

  • pages/projekte.vue, components/, data/ → nach app/ verschoben (Nuxt 4). Die ~/data/projects-Imports funktionieren damit unverändert. public/ bleibt im Root.
  • nuxt.config.ts Prerender-Routen → /design-system und /kontakt vom Base-Branch, /projekte aus dem PR.
  • Beim Merge von MAIN-10 hat app/pages/projekte.vue sein eigenes <main> verloren, weil das neue Layout es liefert.

Verification (lokal, nach jeder Auflösung): npm run lint, npm run typecheck, npm test (23/23), npm run build, npm run test:e2e (5/5): alles grün. Forgejo-CI steht seit Tagen auf pending (auch auf dem Default-Branch), es läuft offenbar kein Runner.

Follow-up (kein Blocker)

/projekte nutzt fest codierte Hex-Farben (bg-[#F5EFE2], text-[#0B5563] …) statt der Design-Tokens. Dadurch greift der DOS-/Dunkelmodus dort nicht. Das sollte jemand auf bg-paper, text-teal usw. umstellen.

## Summary PR #4 ist in `test/access-check-main-1` gemergt (`3a6a560`). ## Conflicts resolved - `pages/projekte.vue`, `components/`, `data/` → nach `app/` verschoben (Nuxt 4). Die `~/data/projects`-Imports funktionieren damit unverändert. `public/` bleibt im Root. - `nuxt.config.ts` Prerender-Routen → `/design-system` und `/kontakt` vom Base-Branch, `/projekte` aus dem PR. - Beim Merge von MAIN-10 hat `app/pages/projekte.vue` sein eigenes `<main>` verloren, weil das neue Layout es liefert. **Verification** (lokal, nach jeder Auflösung): `npm run lint`, `npm run typecheck`, `npm test` (23/23), `npm run build`, `npm run test:e2e` (5/5): alles grün. Forgejo-CI steht seit Tagen auf *pending* (auch auf dem Default-Branch), es läuft offenbar kein Runner. ## Follow-up (kein Blocker) `/projekte` nutzt fest codierte Hex-Farben (`bg-[#F5EFE2]`, `text-[#0B5563]` …) statt der Design-Tokens. Dadurch greift der DOS-/Dunkelmodus dort nicht. Das sollte jemand auf `bg-paper`, `text-teal` usw. umstellen.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rainer/test!4
No description provided.