modufolio / appkit-skeleton
Minimal AppKit skeleton — a starting point for new applications.
Package info
github.com/modufolio/appkit-skeleton
Type:project
pkg:composer/modufolio/appkit-skeleton
v0.13.0
2026-08-28 16:37 UTC
Requires
- php: ^8.2
- modufolio/appkit: ^0.13
- modufolio/http: ^0.2
Requires (Dev)
- brianium/paratest: ^7.20
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/phpstan: ^2.1
- phpstan/phpstan-doctrine: ^2.0
- phpunit/phpunit: ^12
This package is not auto-updated.
Last update: 2026-08-29 02:29:02 UTC
README
A minimal starting point for modufolio/appkit applications.
Documentation
Full framework documentation lives in the AppKit repository: modufolio/appkit/docs.
Useful starting points:
- Getting started
- Controllers · Routing · Templates
- Database · Forms · File uploads
- Security · Authenticators
- Configuration · Dependency injection · Console
- Testing · Deployment
What's in the box
- A single
HomeControllerrendering a plain PHP template - A
Userentity +UserRepositorywired into the security firewall - Form-login authenticator on
/login - SQLite via Doctrine ORM + Doctrine Migrations
- Tailwind CSS 4 + esbuild for assets
- PHPUnit, PHPStan, PHP-CS-Fixer
Requirements
- PHP 8.2+
- Composer
- Node.js 18+ (only if you want to compile assets)
Getting started
composer install npm install cp .env.example .env # Generate the remember-me cookie secret (required — requests fail without it) php -r "echo 'REMEMBER_ME_SECRET=' . bin2hex(random_bytes(32)) . PHP_EOL;" >> .env # Build assets npm run build # Create database schema (or use migrations) php bin/console orm:schema-tool:create # Run the dev server composer start # → http://localhost:8000
Project layout
src/ Application code (PSR-4: App\)
App.php Kernel subclass
AppFactory.php Boots the kernel
Controller/ HTTP controllers
Entity/ Doctrine entities
Repository/ Doctrine repositories
config/ DI, routes, security, doctrine, …
routes.php Route loaders
security.php Firewalls + role hierarchy
controllers.php Controller → dependency map
services.php Application services (ServiceConfigurator)
repositories.php Repository → entity map
authenticators.php Authenticator factories
doctrine.php ORM connection + entity paths
migrations.php Doctrine Migrations config
console.php Bootstrap for bin/console
database/migrations/ Doctrine migration classes
public/ Web root (index.php, compiled assets)
resources/views/ PHP templates + layouts
assets/ Source CSS/JS (compiled into public/assets)
storage/logs/ Application logs
tests/ PHPUnit tests
var/ Cache, proxies (gitignored)
Adding a controller
// src/Controller/AboutController.php namespace App\Controller; use Modufolio\Appkit\Core\AbstractController; use Modufolio\Psr7\Http\Response; use Psr\Http\Message\ResponseInterface; use Symfony\Component\Routing\Attribute\Route; class AboutController extends AbstractController { #[Route(path: '/about', name: 'about', methods: ['GET'])] public function index(): ResponseInterface { return new Response(body: '<h1>About</h1>'); } }
If the controller takes constructor dependencies, list them in config/controllers.php.
License
MIT