wget in node:22-alpine can't connect to localhost:3000 — use node's built-in fetch instead, which works correctly.
Port 3000 conflicts with Dokploy. Traefik routes traffic via Docker network, so expose is sufficient. Also remove env_file refs since Dokploy injects env vars directly.
- Multi-stage Dockerfile for Go backend (golang:1.25-alpine -> alpine:3) - Multi-stage Dockerfile for Next.js frontend (bun:1 -> node:22-alpine) - docker-compose.yml with backend + frontend services, health checks - Next.js standalone output + API rewrites to proxy /api/* to backend - .dockerignore files for both services - .env.example documenting required environment variables
- Root monorepo: /backend (Go) + /frontend (Next.js 15) - Go module: mgit.msbls.de/m/KanzlAI with minimal HTTP server - Next.js 15: TypeScript strict, Tailwind CSS v4, App Router, Bun - Root Makefile: dev, build, lint, test targets - Root .gitignore covering Go, Node, IDE, OS files - CLAUDE.md updated with project structure and tech stack - .claude/CLAUDE.md with coding conventions (Go stdlib style, TS strict)