Postupy a obecné nároky na vývoj
Práce s GITem
Section titled “Práce s GITem”- Za standartní se považuje vytvářet nové featury, zpracovávat změny, aj. v samostatných vývojových větvích, standartně “
feature/[nazev_ticketu]”. - Všechny větve vycházejí z větve
dev - Zpět do větve
devse dostanou cestoumerge requestu - Z větve
devpo otestování mergujeme domaster - Deploy
mastervětve vyžaduje ruční potvrzení
Coding Standards
Section titled “Coding Standards”Naming Conventions
Section titled “Naming Conventions”- Models: Singular PascalCase (např.
User,QuizzEvent) - Controllers: PascalCase +
Controllersuffix (např.UserController) - Migrations: snake_case s časovým prefixem (např.
2024_01_01_000000_create_users_table) - Seeders: PascalCase +
Seedersuffix (např.UserRoleCompanySeeder) - Factories: PascalCase +
Factorysuffix (např.RegionFactory)
Frontend veřejného webu
Section titled “Frontend veřejného webu”- Vizuální prvky ber z playbooku, nevymýšlej vlastní varianty. Nový prvek nejdřív přidej do playbooku.
- Podrobnosti: Playbook vizuálních prvků webu
Database
Section titled “Database”- Tabulky: Plural snake_case s prefixem
chk_(např.chk_users,chk_regions) - Foreign keys:
{model}_id(např.country_id,region_id) - Pivot tabulky: Alphabetically ordered, singular (např.
chk_pub_user)
Seeders
Section titled “Seeders”- Všechny seedery musí být idempotentní — druhý běh nesmí přidat jediný
řádek ani spadnout (hlídá
DatabaseSeederIdempotenceTest) updateOrCreate()/firstOrCreate()s přirozeným klíčem (name, slug, e-mail,(event_id, team_id));insertOrIgnorejen pro lookup tabulky s pevnými ID. Nikdy klíč odvozený z data (now()->format('ym'))- Chybějící prerekvizity =
RuntimeExceptions návodem, který seeder spustit; tichéreturn/fallbacky jsou zakázané - Observované modely (QuizzEvent, QuizzBlueprint, Team, rezervace, Pub, Topic,
users…) zapisovat přes
createQuietly/withoutEvents— a ručně doplnit, co jinak dělá potlačenýboot()(např.Team.pairing_pin) - Žádné zápisy do filesystemu při seedu, žádná produkční ID, žádné nové
pojmenování region slugů (kontrakt hlídá
RegionSlugContractTest) - Jednorázové datové migrace NIKDY seederem — patří do migrace
- Kompletní pravidla: skill
writing-seedersv.claude/skills/
Testing
Section titled “Testing”- Unit testy používají SQLite in-memory databázi
- Feature testy používají MySQL testovací databázi
kviz_testing - Spouštějte testy v Docker kontejneru:
docker-compose exec -T fpm php vendor/bin/pest
