- 05 Jul, 2026 20 commits
-
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
The forceSsl() update call only sends forceSsl:true, which causes CapRover to reset all other fields including the git webhook config. Wildcard cert + URL::forceScheme('https') handles HTTPS already. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Appends '-deleted-{timestamp}' to app_name when instance is deleted, so the name can be reused for new instances. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
CapRover only allows lowercase letters and single hyphens. The generator now strips invalid chars, forces lowercase suffix, and ignores deleted instances when checking for collisions. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
The while/read loop was failing to properly quote env values with spaces (APP_NAME="El Captain Manager" caused dotenv parse failure). sed handles all edge cases (spaces, multiple = signs, special chars) in one pass. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Add configureAppFull() to CapRoverService that sends port, instanceCount, forceSsl, volumes, envVars, and appPushWebhook in ONE update call (CapRover wipes fields not included in each call) - Rewrite InstanceProvisionerService::deployApp() to use configureAppFull() - Add progress callback through provision() → deployApp() chain - Add deploy progress panel in wizard (loading state + completion log) - Fix provision() to not wrap in DB::transaction (was blocking progress) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
key:generate writes to .env, config:cache reads from .env — order matters. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Dumps runtime env vars into .env so config:cache picks them up instead of reading stale .env.example defaults. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
config:cache bakes .env values at build time, ignoring Docker env vars at runtime. Removed it so env vars from CapRover are read directly. Fixed DB_HOST and CAPROVER_API_URL defaults in .env.example. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Replace broken deployFromGit() with setGitRepo() + forceBuild(). Add Force Build button per instance + Force Build All on list page. No auto-deploy — builds only trigger when user clicks the button. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Laravel's key:generate reads the .env file content; it must exist and be parseable before the command runs. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
The php:8.4-fpm-alpine image listens on TCP by default, not unix socket. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
CapRover injects env vars via Docker, not a .env file. The key:generate command needs the file to exist to write the generated key. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Load State button fetches replicas, build status, SSL, env var count, volumes, and recent deploy versions from CapRover API. Fetch Logs shows the container's stdout/stderr in a dark terminal-style panel with refresh. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Instead of creating a separate PostgreSQL container per El Captain instance, all instances now share the existing `elcaptainsportsonlydb` container. Provisioner creates a dedicated database + user per instance via the `pg_admin` superuser connection. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Full platform for operating El Captain as a service: - Deploy new academies via one-click wizard (CapRover API integration) - Flexible billing: monthly fee, platform %, or both per client - Daily fee collection from instance databases (pull + webhook verify) - Auto-suspend instances after grace period on overdue payments - Dashboard with MRR, platform fees, instance health overview - Complete audit log of all actions Stack: Laravel + Livewire + Tailwind, deployed to CapRover Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-