hitaqnia / haykal-starter
HiTaqnia Laravel app starter — Haykal pre-wired, Huwiya-backed authentication, ready to grow into any new project.
Requires
- php: ^8.3
- hitaqnia/haykal: ^1.0
- hitaqnia/huwiya-laravel: ^1.0
- laravel/framework: ^13.0
- laravel/horizon: ^5.43
- laravel/tinker: ^3.0
- league/flysystem-aws-s3-v3: ^3.29
- predis/predis: ^3.0
- spatie/laravel-data: ^4.17
- spatie/laravel-medialibrary: ^11.15
- spatie/laravel-translatable: ^6.11
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/boost: ^2.4
- laravel/pail: ^1.2.5
- laravel/pint: ^1.27
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- phpunit/phpunit: ^12.5.12
README
A Laravel 13 starter pre-wired with the Haykal suite — Huwiya authentication, Filament-ready base, REST API envelope, Spatie permissions, and a complete Docker dev stack. Clone it as the starting point for any new HiTaqnia project.
Quick start
Prerequisites: Docker Desktop (or any Docker Engine) and make.
make setup # build images, install deps, migrate make docker-up # subsequent sessions
Once running:
- App — http://localhost:8000
- Mailpit — http://localhost:8025
- MinIO console — http://localhost:9001 (
minio/minio123) - Postgres —
localhost:5432(dbhaykal, user/passpostgres)
Renaming the project
Every container, image, and volume is prefixed with APP_SLUG (default haykal-app). Rename in one shot:
make docker-down make rename-project NAME=my-new-project make docker-rebuild make setup
Common commands
make docker-shell # shell into the app container make docker-logs # tail app logs make docker-psql # psql into the database make migrate # run migrations make migrate-fresh # drop everything and re-migrate make seed # run seeders make test # php artisan test make tinker # php artisan tinker make artisan <cmd> # passthrough, e.g. make artisan route:list make vite # vite dev server make build-fe # production frontend build
Full list: make help.
Configuration
Edit .env.docker for the Dockerized stack (or .env for non-Docker). The two things you must fill in before the app can authenticate:
HUWIYA_URL=https://your-huwiya-instance.example HUWIYA_PROJECT_ID=... HUWIYA_CLIENT_ID=... HUWIYA_CLIENT_SECRET=... HUWIYA_REDIRECT_URI=https://your-app.example/huwiya/callback
APP_KEY is generated automatically by the container entrypoint on first start.
Host ports are overridable in .env.docker — useful when 8000/5432/6379 are already taken:
APP_PORT=8100 POSTGRES_PORT=5532 REDIS_PORT=6479
What's wired up
- Auth — Huwiya guards (
huwiya-web,huwiya-api) wired inconfig/auth.php. TheUser,Role, andPermissionmodels live indomain/Identity/Models/and are owned by the app — edit them directly. - Schema — Migrations under
database/migrations/ship withusers,sessions, Spatie permission tables (ULID-keyed, teams disabled), Media Library, and notifications. - API — Haykal response envelope is registered. Add modules by subclassing
HiTaqnia\Haykal\Api\ApiProvider. No modules ship by default. - Filament —
BasePanelis available. No panels ship by default. Register them inbootstrap/providers.php. - Middleware —
haykal.permissions.teamalias available for tenant-scoped routes (not registered globally).
Project layout
app/ Laravel framework glue (providers, HTTP, Filament).
domain/ DDD bounded contexts. Identity ships pre-wired.
support/ App-wide utilities. Empty — add as needed.
packages/ In-tree path repositories. Empty.
deployment/ Dockerfile, php.ini, container entrypoint.
docker-compose.yaml app + horizon + scheduler + postgres + redis + minio + mailpit.
Makefile setup / docker-* / migrate / artisan / rename-project.
Autoload roots: App\ → app/, Domain\ → domain/, Support\ → support/.
Next steps
When you're ready to build the actual app:
- Define your tenant model(s) by extending
HiTaqnia\Haykal\Core\Tenancy\Models\Tenant. - Mark tenant-owned models with the
HasTenanttrait. - Create Filament panels by subclassing
HiTaqnia\Haykal\Filament\BasePaneland registering them inbootstrap/providers.php. - Define
<panel-id>.accessGates inAppServiceProvider::boot(). - Add API modules by subclassing
HiTaqnia\Haykal\Api\ApiProvider. - Customize
domain/Identity/Models/User.php— add columns, relations, and Huwiya claim hooks inline.
Documentation
| Package | Repository |
|---|---|
haykal (metapackage) |
https://github.com/hitaqnia/haykal |
haykal-core (tenancy, permissions, result pattern) |
https://github.com/hitaqnia/haykal-core |
haykal-api (REST conventions, envelope, Scramble) |
https://github.com/hitaqnia/haykal-api |
haykal-filament (BasePanel, BaseResource, themes) |
https://github.com/hitaqnia/haykal-filament |
License
Proprietary. Property of HiTaqnia.