tbleckert / libero
The skeleton application for the Laravel framework.
Package info
Type:project
pkg:composer/tbleckert/libero
Requires
- php: ^8.3
- filament/filament: ^5.6
- http-interop/http-factory-guzzle: ^1.2
- laravel/ai: ^0.8.1
- laravel/framework: ^13.8
- laravel/horizon: ^5.47
- laravel/reverb: ^1.10
- laravel/sanctum: ^4.3
- laravel/scout: ^11.3
- laravel/tinker: ^3.0
- meilisearch/meilisearch-php: ^1.16
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/boost: ^2.0
- laravel/pail: ^1.2.5
- laravel/pao: ^1.0.6
- laravel/pint: ^1.27
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- pestphp/pest: ^4.7
- pestphp/pest-plugin-laravel: ^4.1
This package is auto-updated.
Last update: 2026-08-02 18:23:52 UTC
README
Libero for Laravel is a small backend starter kit for native apps. It starts with iOS and gives you a Laravel API with email-verified users, Sign in with Apple, Sanctum API tokens, Filament admin, APNs push notifications, versioned endpoints, and Horizon queues.
Getting Started
composer setup
Run the local development stack:
composer dev
This starts the Laravel server, Horizon queue worker, and Pail logs. Horizon requires Redis, and .env.example uses QUEUE_CONNECTION=redis by default.
Create an admin user for Filament:
php artisan make:filament-user
The admin panel is available at /admin. The API starts at /api/v1.
Main Endpoints
GET /api/v1/healthPOST /api/v1/auth/registerPOST /api/v1/auth/tokensPOST /api/v1/auth/applePOST /api/v1/auth/forgot-passwordPOST /api/v1/auth/reset-passwordGET /api/v1/userPATCH /api/v1/userPUT /api/v1/user/passwordPOST /api/v1/push-devicesDELETE /api/v1/push-devices
Authenticated requests use a Sanctum bearer token:
Authorization: Bearer <token>
Apple Setup
In Apple Developer, create or select an explicit App ID for your iOS app. Enable Sign in with Apple and Push Notifications for that App ID.
Set these values in .env:
APPLE_TEAM_ID= APPLE_IOS_CLIENT_ID=com.example.App APPLE_KEY_ID= APPLE_PRIVATE_KEY_BASE64= APNS_TEAM_ID="${APPLE_TEAM_ID}" APNS_KEY_ID= APNS_PRIVATE_KEY_BASE64= APNS_BUNDLE_ID="${APPLE_IOS_CLIENT_ID}" LIBERO_ADMIN_EMAILS=admin@example.com LIBERO_EMAIL_VERIFIED_URL=https://example.com/email-verified LIBERO_PASSWORD_RESET_URL=https://example.com/reset-password
Sign in with Apple
- Create an explicit App ID with your app bundle ID, for example
com.example.App. - Enable Sign in with Apple on that App ID.
- Create a Sign in with Apple private key.
- Copy the key ID into
APPLE_KEY_ID. - Base64 encode the downloaded
.p8key intoAPPLE_PRIVATE_KEY_BASE64:
base64 < AuthKey_XXXXXXXXXX.p8 | tr -d '\n'
For native iOS, APPLE_IOS_CLIENT_ID is your app bundle ID. If you later add web Sign in with Apple, create a Services ID and put it in APPLE_WEB_CLIENT_ID.
Push Notifications
- Enable Push Notifications on the same App ID.
- Create an APNs auth key.
- Copy the APNs key ID into
APNS_KEY_ID. - Base64 encode the downloaded
.p8key intoAPNS_PRIVATE_KEY_BASE64. - Set
APNS_BUNDLE_IDto the app bundle ID that receives notifications.
Never commit .env or .p8 files.
Queues
Queues run through Horizon. Keep QUEUE_CONNECTION=redis for local development and production, and use composer dev locally to start Horizon with the rest of the development stack.
Testing
composer test