mandant-crm/CLAUDE.md
Tim Stollberg e5e0be57da feat(frontend): scaffold Nuxt 3 CSR SPA with full auth + client/history UI
- Nuxt 3 CSR (ssr:false), @nuxtjs/tailwindcss, dev proxy to backend
- useAuth composable: CSRF cookie, XSRF token, login/logout/fetchUser
- auth middleware: redirects to /login if no session
- Login page, client list with search + create modal
- Client detail with editable name, dynamic notes (JSON), history feed
- History form with type select, inline edit/delete per entry
- Print layout at /clients/:id/print (calls window.print on mount)
- TypeScript interfaces: User, Client, HistoryEntry, PaginatedResponse
- German UI labels throughout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 17:33:39 +07:00

1.3 KiB

Mandant CRM — Monorepo

Layout

  • backend/ — Laravel 10 API + Filament admin
  • frontend/ — Nuxt 3 CSR SPA
  • docker/ — Docker Compose, nginx, PHP Dockerfile

Dev commands (run from repo root)

make dev          # docker compose up -d
make stop         # docker compose down
make test         # composer test inside backend container
make lint         # composer static-analysis inside backend container
make migrate      # php artisan migrate
make fresh        # migrate:fresh --seed
make shell-php    # bash into backend container
make shell-node   # sh into frontend container

Agent scope rules

  • Backend feature → edit only backend/
  • Frontend feature → edit only frontend/
  • Auth / Docker / infra → root + both apps
  • New module → follow scaffold in .claude/skills/new-module.md
  • New history type → follow .claude/skills/new-history-type.md

Commit style

feat/fix/chore/refactor/test/docs — conventional commits Examples: feat(client): add search endpoint, fix(history): soft delete cascade

Telegram Channel Guidelines

  • Before calling any write_file, edit_file, or bash tools that trigger system permission prompts, you MUST send a Telegram text message summarizing exactly what you are about to modify and why.
  • Never trigger a tool call blindly without explaining the context to the user first.