a043b88bc0
chore: install rector with accept-current-state baseline
...
Installs rector/rector ^2.0 (v2.4.2) + driftingly/rector-laravel
^2.0 as dev-dependencies. Configures PHP 8.2 language sets + safe
quality rule sets (CODE_QUALITY, DEAD_CODE, EARLY_RETURN,
TYPE_DECLARATION, PRIVATIZATION) + Laravel-specific sets
(LARAVEL_CODE_QUALITY, LARAVEL_COLLECTION).
Dry-run baseline: 487 rule-applications across 357 files. NO
changes applied in this commit — adoption is incremental via per-
set sprints documented in BACKLOG.md.
Top rules by volume:
103 AddClosureVoidReturnTypeWhereNoReturnRector
71 AddArrowFunctionReturnTypeRector
51 AppToResolveRector
34 ConvertStaticToSelfRector
27 ReadOnlyClassRector
18 NullToStrictStringFuncCallArgRector
16 ReturnBinaryOrToEarlyReturnRector
16 MakeModelAttributesAndScopesProtectedRector
13 RemoveUnusedVariableAssignRector
13 OptionalToNullsafeOperatorRector
13 FlipTypeControlToUseExclusiveTypeRector
Composer scripts:
- composer rector — DRY-RUN (default)
- composer rector:apply — apply changes
- composer rector:clear-cache — clear Rector cache
Dry-run exits with code 2 when suggestions exist (Rector convention,
not an error state). Apply-mode exits 0 on clean runs.
Documentation: /dev-docs/RECTOR.md added; CLAUDE.md updated.
Backlog: per-set application sprints seeded
(TECH-RECTOR-01..05 + TECH-RECTOR-CI). DEAD_CODE (smallest scope)
and TYPE_DECLARATION (biggest volume, will help reduce Larastan
baseline) are the natural first two.
Disruptive sets deliberately deferred:
- LaravelLevelSetList::UP_TO_LARAVEL_* — broad bulk upgrades
- SetList::NAMING — high-churn variable renames
- SetList::INSTANCEOF — substantial logic changes
Memory limit 2G (dry-run completed within it).
No production behavior change. No code modified — Rector ran
dry-run only.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-25 03:50:41 +02:00
7542808cab
chore: install larastan at level 6 with accept-all baseline
...
Installs larastan/larastan ^3.0 (v3.9.6) as a dev-dependency. Level
6 is the starting target — catches missing typehints, method-
existence, null-safety, and model-property existence. Level 8
deferred to a follow-up sprint after level-6 baseline reaches zero.
Baseline error count at install: 1556 errors across 678 analysed
files (41 distinct identifiers).
Top 10 identifiers (errors / files):
613 / 87 property.notFound
289 / 52 missingType.generics
154 / 31 argument.templateType
98 / 61 missingType.iterableValue
77 / 32 argument.type
50 / 26 method.notFound
35 / 35 method.childReturnType
32 / 9 method.unresolvableReturnType
31 / 10 assign.propertyType
28 / 17 instanceof.alwaysTrue
Composer scripts:
- composer analyse — run static analysis
- composer analyse:baseline — regenerate baseline
- composer analyse:clear-cache — clear PHPStan result cache
Config deviation from plan: checkGenericClassInNonGenericObjectType
was removed in PHPStan 2.x (which Larastan 3 bundles) — setting
dropped from phpstan.neon, otherwise config matches the work
package verbatim. Defaults cover the original intent.
Documentation: /dev-docs/LARASTAN.md added; CLAUDE.md quality-gates
section introduced (with PHPUnit + Pint + Larastan listed).
Backlog: /dev-docs/BACKLOG.md gets 10 per-identifier reduction
sprints (TECH-LARASTAN-01..10) seeded from the actual baseline top
categories, plus TECH-LARASTAN-CI and TECH-LARASTAN-L8 follow-ups.
Memory limit 2G (baseline generation completed within it).
No production behavior change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-25 03:46:27 +02:00
a9e8e9bb62
docs: enforce correct Vuexy reference path in CLAUDE.md and .cursorrules
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-15 21:01:45 +02:00
28727f246b
chore: remove admin SPA and update to two-app production setup
...
Remove apps/admin/ entirely — platform admin functionality now lives
in apps/app/ under /platform/* routes for super_admin users.
Production URL scheme changed:
- Organizer app: crewli.app (was app.crewli.app)
- Portal: portal.crewli.app (unchanged)
- API: api.crewli.app (unchanged)
- admin.crewli.app and app.crewli.app retired
Backend:
- Removed FRONTEND_ADMIN_URL config and admin cookie (crewli_admin_token)
from SetAuthCookie, CookieBearerToken, cors.php, app.php
- Updated .env and .env.example (two origins, no port 5173)
- Updated cookie test: admin origin test → unknown origin fallback test
Infrastructure:
- Makefile: removed admin target
- deploy/nginx: updated CSP comment, removed admin vhost
- Updated README.md, CLAUDE.md, and all dev-docs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-15 08:44:10 +02:00
72120969c6
docs: add Vuexy-first strategy and frontend conventions to CLAUDE.md
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 01:27:44 +02:00
da2b9ee9e7
docs: migrate frontend conventions from .cursorrules to CLAUDE.md
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 01:07:23 +02:00
c75a93aa5d
docs: add git commit policy to CLAUDE.md
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-10 11:19:57 +02:00
83437378c8
docs: design-document v1.8, dev-docs restructure, VitePress user docs scaffold, backlog update
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-10 11:16:43 +02:00
0d24506c89
feat: consolidate frontend API layer, add query-client, and harden backend Fase 1
...
Frontend:
- Consolidate duplicate API layers into single src/lib/axios.ts per app
- Remove src/lib/api-client.ts and src/utils/api.ts (admin)
- Add src/lib/query-client.ts with TanStack Query config per app
- Update all imports and auto-import config
Backend:
- Fix organisations.billing_status default to 'trial'
- Fix user_invitations.invited_by_user_id to nullOnDelete
- Add MeResource with separated app_roles and pivot-based org roles
- Add cross-org check to EventPolicy view() and update()
- Restrict EventPolicy create/update to org_admin/event_manager (not org_member)
- Attach creator as org_admin on organisation store
- Add query scopes to Event and UserInvitation models
- Improve factories with Dutch test data
- Expand test suite from 29 to 41 tests (90 assertions)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-07 17:35:34 +02:00
fda161ee09
chore: align migrations, docs, and frontends with crewli.app setup
...
- Replace dated migrations with ordered 2026_04_07_* chain; fold users update into base migration
- Update OrganisationScope, AppServiceProvider, seeders, api routes, and .env.example
- Refresh Cursor rules, CLAUDE.md, Makefile, README, and docs (API, SCHEMA, SETUP)
- Adjust admin/app/portal HTML, packages, api-client, events types, and theme config
- Update docker-compose and VS Code settings; remove stray Office lock files from resources
Made-with: Cursor
2026-04-07 10:45:34 +02:00
1cb7674d52
refactor: align codebase with EventCrew domain and trim legacy band stack
...
- Update API: events, users, policies, routes, resources, migrations
- Remove deprecated models/resources (customers, setlists, invitations, etc.)
- Refresh admin app and docs; remove apps/band
Made-with: Cursor
2026-03-29 23:19:06 +02:00