Deployment
A Tachi Kit app deploys like any Laravel application, whether on Laravel Cloud, Forge, or your own server. This checklist covers the kit-specific steps.
Environment
Section titled “Environment”APP_ENV=productionAPP_DEBUG=falseAPP_URL=https://your-app.com
ALLOWS_PUBLIC_REGISTRATION=false # decide explicitlyAVATAR_DISK=s3 # or public, with storage:link
MAIL_MAILER=smtp # verification and password reset emailsWith APP_ENV=production:
- passwords must meet the strict rules (12+ characters, mixed case, numbers, symbols, not breached),
DatabaseSeederskips demo accounts, and- destructive database commands such as
migrate:freshare blocked (DB::prohibitDestructiveCommands()inAppServiceProvider).
Deploy steps
Section titled “Deploy steps”composer install --no-dev --optimize-autoloadernpm cinpm run build
php artisan migrate --forcephp artisan db:seed --force # roles and permissions onlyphp artisan storage:link # if AVATAR_DISK=public
php artisan optimizeFirst deploy only: create the owner account.
php artisan tachi:superadminAfter adding permissions in a later release, the db:seed --force step creates them. It’s safe to run on every deploy.
Scheduler
Section titled “Scheduler”The activity log is pruned by a scheduled command (activitylog:clean, daily). Laravel’s scheduler must run every minute:
* * * * * cd /path-to-your-app && php artisan schedule:run >> /dev/null 2>&1Laravel Cloud and Forge can set this up for you. Check with php artisan schedule:list.
QUEUE_CONNECTION=database is the default. The kit doesn’t queue anything itself, but emails and your own jobs may. Run a worker (php artisan queue:work) or switch to a managed queue if you queue work.
Checklist
Section titled “Checklist”-
APP_ENV=production,APP_DEBUG=false,APP_KEYset -
ALLOWS_PUBLIC_REGISTRATIONset deliberately - A real mailer configured
- Avatar storage reachable (S3 bucket policy, or
storage:link) -
migrate --forceanddb:seed --forcerun - First superadmin created with
tachi:superadmin - Scheduler cron running
- Assets built with
npm run build