# Zvonce

SaaS za dečije školice (ples, drama, muzika, sport). Multi-tenant Laravel 13 + Livewire + Filament.
Škola je kupac, roditelj je korisnik, dete je subjekt podataka.

## Komande

- `composer test` — ceo test paket (baza `zvonce_test`)
- `php artisan test --filter=Isolation` — testovi izolacije stanara
- `composer check` — formatiranje + statička analiza; mora biti čisto pre spajanja
- `composer seed` — sveža lokalna baza sa test podacima
- Aplikacija radi na https://zvonce.test (Valet). Ne pokreći `php artisan serve`.

## Nepregovarljiva pravila

**IZOLACIJA STANARA JE PRAVILO BROJ JEDAN.** Svaki entitet unutar granice stanara nosi oznaku škole i
podrazumevano se filtrira. NIKADA ne piši upit koji zaobilazi tenant scope. Novi entitet YOU MUST prati
test izolacije — bez izuzetka. Radimo sa podacima dece.

**NE KOMITUJEŠ.** Marko commituje sam. Ne pokreći `git commit`, `git push`, `git reset`, `git checkout`.
Dozvoljeno: `git status`, `git diff`, `git log`.

**NE DIRAJ `.env`.** Ni čitanje ni pisanje. Nova vrednost okruženja ide u `.env.example` sa objašnjenjem,
i javi mi.

**BRISANJE NE POSTOJI.** U ovom proizvodu brisanje znači arhiviranje sa zadržanom istorijom.
Ne piši `forceDelete`. Ne pokreći `rm`.

**BEZ NOVIH PAKETA.** Composer paket se ne dodaje bez moje saglasnosti. Stek je zaključan.

## Stil koda

- PHP 8.3+, PSR-4, `declare(strict_types=1)`
- Vanilla JS uz `fetch()` — bez jQuery
- Tailwind osnovne klase; bez zasebnih CSS fajlova
- Filament resursi: `app/Filament/Platforma/` i `app/Filament/Skola/` — nikad izmešano
- Kod, nazivi i komentari na engleskom; SVAKI tekst koji vidi korisnik na srpskom, latinica
- Tekst za korisnika bez tehničkog žargona — ni „tenant", ni „modul", ni „entitet"

## Rad

- Izmena koja dira više fajlova: prvo plan mode
- Posle izmena pokreni `composer check` i `composer test` — pa tek onda javi da je gotovo
- Pokaži dokaz (izlaz testa), ne tvrdnju da radi
- Zadatak je gotov kada prođu kriterijumi prihvatanja iz ClickUp zadatka, ne kada kod „izgleda dobro"

## Kontekst

Domenska pravila po oblastima: `.claude/skills/`
Izvori istine: D1 (ADR), D2 (uloge), D3 (model), D4 (tokovi), D6 (ekrani) — Google Drive.
Lične beleške: `CLAUDE.local.md` (van gita).

Pravilo održavanja: za svaku liniju pitati „da li bi njeno uklanjanje navelo Claude na grešku?" Ako ne — brisati.
Napumpan CLAUDE.md znači da se prava pravila gube u šumu i Claude ih ignoriše. Ako Claude uporno radi nešto
protiv pravila koje postoji — fajl je predugačak, ne pravilo pogrešno.
