Previous version described the application template, but this repository is the core-content package. Updated to document actual namespace, structure, models, API routes, rate limiters, and configuration. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
97 lines
No EOL
3.2 KiB
Markdown
97 lines
No EOL
3.2 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Package Overview
|
|
|
|
This is `host-uk/core-content`, a Laravel package providing headless CMS functionality for the Core PHP Framework. It handles content management, AI generation, revisions, webhooks, and search.
|
|
|
|
**Namespace:** `Core\Mod\Content\`
|
|
|
|
## Commands
|
|
|
|
```bash
|
|
composer run lint # Laravel Pint (PSR-12)
|
|
composer run test # Pest tests
|
|
./vendor/bin/pint --dirty # Format changed files only
|
|
./vendor/bin/pest --filter=ContentSearch # Run specific tests
|
|
```
|
|
|
|
## Architecture
|
|
|
|
### Boot.php (Service Provider)
|
|
|
|
The entry point extending `ServiceProvider` with event-driven registration:
|
|
|
|
```php
|
|
public static array $listens = [
|
|
WebRoutesRegistering::class => 'onWebRoutes',
|
|
ApiRoutesRegistering::class => 'onApiRoutes',
|
|
ConsoleBooting::class => 'onConsole',
|
|
McpToolsRegistering::class => 'onMcpTools',
|
|
];
|
|
```
|
|
|
|
### Package Structure
|
|
|
|
```
|
|
Boot.php # Service provider + event listeners
|
|
config.php # Package configuration
|
|
Models/ # Eloquent: ContentItem, ContentBrief, ContentRevision, etc.
|
|
Services/ # Business logic: ContentSearchService, ContentRender, etc.
|
|
Controllers/Api/ # REST API controllers
|
|
Mcp/Handlers/ # MCP tools for AI agent integration
|
|
Jobs/ # Queue jobs: GenerateContentJob, ProcessContentWebhook
|
|
View/Modal/ # Livewire components (Web/ and Admin/)
|
|
View/Blade/ # Blade templates
|
|
Migrations/ # Database migrations
|
|
routes/ # web.php, api.php, console.php
|
|
```
|
|
|
|
### Key Models
|
|
|
|
| Model | Purpose |
|
|
|-------|---------|
|
|
| `ContentItem` | Published content with revisions |
|
|
| `ContentBrief` | Content generation requests/queue |
|
|
| `ContentRevision` | Version history for content items |
|
|
| `ContentMedia` | Attached media files |
|
|
| `ContentTaxonomy` | Categories and tags |
|
|
| `ContentWebhookEndpoint` | External webhook configurations |
|
|
|
|
### API Routes (routes/api.php)
|
|
|
|
- `/api/content/briefs` - Content brief CRUD
|
|
- `/api/content/generate/*` - AI generation (rate limited)
|
|
- `/api/content/media` - Media management
|
|
- `/api/content/search` - Full-text search
|
|
- `/api/content/webhooks/{endpoint}` - External webhooks (no auth, signature verified)
|
|
|
|
## Conventions
|
|
|
|
- UK English (colour, organisation, centre)
|
|
- `declare(strict_types=1);` in all PHP files
|
|
- Type hints on all parameters and return types
|
|
- Pest for testing (not PHPUnit syntax)
|
|
- Livewire + Flux Pro for UI components
|
|
- Font Awesome Pro for icons (not Heroicons)
|
|
|
|
## Rate Limiters
|
|
|
|
Defined in `Boot::configureRateLimiting()`:
|
|
- `content-generate` - AI generation (10/min authenticated)
|
|
- `content-briefs` - Brief creation (30/min)
|
|
- `content-webhooks` - Incoming webhooks (60/min per endpoint)
|
|
- `content-search` - Search queries (configurable, default 60/min)
|
|
|
|
## Configuration (config.php)
|
|
|
|
Key settings exposed via environment:
|
|
- `CONTENT_GENERATION_TIMEOUT` - AI generation timeout
|
|
- `CONTENT_MAX_REVISIONS` - Revision limit per item
|
|
- `CONTENT_SEARCH_BACKEND` - Search driver (database, scout_database, meilisearch)
|
|
- `CONTENT_CACHE_TTL` - Content cache duration
|
|
|
|
## License
|
|
|
|
EUPL-1.2 (European Union Public Licence) |