- PHP/Laravel with MySQL/MariaDB
- TypeScript/JavaScript with Bun (prefer Bun over Node.js for runtime and tooling)
Use British English spelling in comments, strings, and documentation (e.g., "optimise", "colour", "initialise").
- Balance brevity and clarity — pragmatic, not dogmatic
- Avoid "magic numbers" — use constants, enums, or config values
- No demos, examples, or documentation unless explicitly requested
- Always use
declare(strict_types=1) - Use typed properties, parameter types, and return types
- Follow Laravel conventions (facades, helpers, Eloquent patterns) where they don't conflict with strict typing
- Use Laravel's built-in features before reaching for packages
- Default to Bun for runtime, testing, and package management
- Use strict mode — no
any, explicit types where inference is ambiguous - Prefer
constand immutability where practical
- Always consider testability — suggest and write tests proactively
- Use the framework's native test tooling (Pest for Laravel, Bun test for TS/JS)
- Cover edge cases and error paths, not just happy paths
- Use conventional commits:
feat:,fix:,refactor:,test:,chore:, etc. - Keep commits atomic and focused
- Briefly reflect on what could have been done better — approach, structure, performance, or missed edge cases
- Share the reflection concisely so we can improve iteratively