No description
Closes #11 Adds comprehensive Livewire tests in tests/Feature/Livewire/ covering: - DashboardTest: stats structure, refresh action, blocked alert, quick links - PlansTest: auth, filters, activate/complete/archive/delete actions - PlanDetailTest: auth, plan loading, phase actions, task validation - SessionsTest: auth, filters, pause/resume/complete/fail actions - SessionDetailTest: auth, polling, modal states, session control - ToolAnalyticsTest: auth, setDays, filters, success rate colour helpers - ApiKeysTest: auth, create/edit/revoke modals, validation, stats - ApiKeyManagerTest: workspace binding, create form, toggleScope - ToolCallsTest: auth, filters, viewCall/closeCallDetail, badge helpers - RequestLogTest: filters, selectRequest/closeDetail interactions - TemplatesTest: auth, preview/import/create modals, clearFilters - PlaygroundTest: server loading, API key validation, execute behaviour Infrastructure: - LivewireTestCase base class with stub view namespace registration - HadesUser fixture for auth()->user()->isHades() checks - Minimal stub blade views in tests/views/ (agentic and mcp namespaces) - composer.json: add livewire/livewire and pest-plugin-livewire to require-dev; fix autoload-dev paths to lowercase tests/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .gemini | ||
| .github | ||
| changelog/2026/jan | ||
| Configs | ||
| Console/Commands | ||
| Controllers | ||
| database/migrations | ||
| docs | ||
| Facades | ||
| Jobs | ||
| Lang/en_GB | ||
| Mcp | ||
| Middleware | ||
| Migrations | ||
| Models | ||
| routes | ||
| Service | ||
| Services | ||
| Support | ||
| tests | ||
| View | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| Boot.php | ||
| CLAUDE.md | ||
| cliff.toml | ||
| composer.json | ||
| config.php | ||
| FINDINGS.md | ||
| GEMINI.md | ||
| LICENSE | ||
| README.md | ||
| TODO.md | ||
Core PHP Framework Project
A modular monolith Laravel application built with Core PHP Framework.
Features
- Core Framework - Event-driven module system with lazy loading
- Admin Panel - Livewire-powered admin interface with Flux UI
- REST API - Scoped API keys, rate limiting, webhooks, OpenAPI docs
- MCP Tools - Model Context Protocol for AI agent integration
Requirements
- PHP 8.2+
- Composer 2.x
- SQLite (default) or MySQL/PostgreSQL
- Node.js 18+ (for frontend assets)
Installation
# Clone or create from template
git clone https://github.com/host-uk/core-template.git my-project
cd my-project
# Install dependencies
composer install
npm install
# Configure environment
cp .env.example .env
php artisan key:generate
# Set up database
touch database/database.sqlite
php artisan migrate
# Start development server
php artisan serve
Visit: http://localhost:8000
Project Structure
app/
├── Console/ # Artisan commands
├── Http/ # Controllers & Middleware
├── Models/ # Eloquent models
├── Mod/ # Your custom modules
└── Providers/ # Service providers
config/
└── core.php # Core framework configuration
routes/
├── web.php # Public web routes
├── api.php # REST API routes
└── console.php # Artisan commands
Creating Modules
# Create a new module with all features
php artisan make:mod Blog --all
# Create module with specific features
php artisan make:mod Shop --web --api --admin
Modules follow the event-driven pattern:
<?php
namespace App\Mod\Blog;
use Core\Events\WebRoutesRegistering;
use Core\Events\ApiRoutesRegistering;
use Core\Events\AdminPanelBooting;
class Boot
{
public static array $listens = [
WebRoutesRegistering::class => 'onWebRoutes',
ApiRoutesRegistering::class => 'onApiRoutes',
AdminPanelBooting::class => 'onAdminPanel',
];
public function onWebRoutes(WebRoutesRegistering $event): void
{
$event->routes(fn() => require __DIR__.'/Routes/web.php');
$event->views('blog', __DIR__.'/Views');
}
}
Core Packages
| Package | Description |
|---|---|
host-uk/core |
Core framework components |
host-uk/core-admin |
Admin panel & Livewire modals |
host-uk/core-api |
REST API with scopes & webhooks |
host-uk/core-mcp |
Model Context Protocol tools |
Flux Pro (Optional)
This template uses the free Flux UI components. If you have a Flux Pro license:
# Configure authentication
composer config http-basic.composer.fluxui.dev your-email your-license-key
# Add the repository
composer config repositories.flux-pro composer https://composer.fluxui.dev
# Install Flux Pro
composer require livewire/flux-pro
Documentation
License
EUPL-1.2 (European Union Public Licence)