diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..6a2e0fa6b --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,93 @@ +# AGENTS.md + +This file provides guidance to OpenCode when working with code in this repository. + +## Project Overview + +Coolify is an open-source, self-hostable platform for deploying applications and managing servers - an alternative to Heroku/Netlify/Vercel. It's built with Laravel (PHP) and uses Docker for containerization. + +## Development Commands + +### Frontend Development +- `npm run dev` - Start Vite development server for frontend assets +- `npm run build` - Build frontend assets for production + +### Backend Development +Only run artisan commands inside "coolify" container when in development. +- `php artisan serve` - Start Laravel development server +- `php artisan migrate` - Run database migrations +- `php artisan queue:work` - Start queue worker for background jobs +- `php artisan horizon` - Start Laravel Horizon for queue monitoring +- `php artisan tinker` - Start interactive PHP REPL + +### Code Quality +- `./vendor/bin/pint` - Run Laravel Pint for code formatting +- `./vendor/bin/phpstan` - Run PHPStan for static analysis +- `./vendor/bin/pest` - Run Pest tests + +## Architecture Overview + +### Technology Stack +- **Backend**: Laravel 12 (PHP 8.4) +- **Frontend**: Livewire + Alpine.js + Tailwind CSS +- **Database**: PostgreSQL 15 +- **Cache/Queue**: Redis 7 +- **Real-time**: Soketi (WebSocket server) +- **Containerization**: Docker & Docker Compose + +### Key Components + +#### Core Models +- `Application` - Deployed applications with Git integration +- `Server` - Remote servers managed by Coolify +- `Service` - Docker Compose services +- `Database` - Standalone database instances (PostgreSQL, MySQL, MongoDB, Redis, etc.) +- `Team` - Multi-tenancy support +- `Project` - Grouping of environments and resources + +#### Job System +- Uses Laravel Horizon for queue management +- Key jobs: `ApplicationDeploymentJob`, `ServerCheckJob`, `DatabaseBackupJob` +- `ServerManagerJob` and `ServerConnectionCheckJob` handle job scheduling + +#### Deployment Flow +1. Git webhook triggers deployment +2. `ApplicationDeploymentJob` handles build and deployment +3. Docker containers are managed on target servers +4. Proxy configuration (Nginx/Traefik) is updated + +#### Server Management +- SSH-based server communication via `ExecuteRemoteCommand` trait +- Docker installation and management +- Proxy configuration generation +- Resource monitoring and cleanup + +### Directory Structure +- `app/Actions/` - Domain-specific actions (Application, Database, Server, etc.) +- `app/Jobs/` - Background queue jobs +- `app/Livewire/` - Frontend components (full-stack with Livewire) +- `app/Models/` - Eloquent models +- `bootstrap/helpers/` - Helper functions for various domains +- `database/migrations/` - Database schema evolution + +## Development Guidelines + +### Code Organization +- Use Actions pattern for complex business logic +- Livewire components handle UI and user interactions +- Jobs handle asynchronous operations +- Traits provide shared functionality (e.g., `ExecuteRemoteCommand`) + +### Testing +- Uses Pest for testing framework +- Tests located in `tests/` directory + +### Deployment and Docker +- Applications are deployed using Docker containers +- Configuration generated dynamically based on application settings +- Supports multiple deployment targets and proxy configurations + +## Cloud instance +We have a cloud instance of Coolify, a hosted Coolify. +This consists of 2 horizon worker servers. +It has thousands of servers connected, thousands of users, so make sure develop features to that usecase. \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index 8bf2fe84d..4ab6b748d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -48,7 +48,7 @@ Only run artisan commands inside "coolify" container when in development. #### Job System - Uses Laravel Horizon for queue management - Key jobs: `ApplicationDeploymentJob`, `ServerCheckJob`, `DatabaseBackupJob` -- `ScheduledJobManager` and `ServerResourceManager` handle job scheduling +- `ServerManagerJob` and `ServerConnectionCheckJob` handle job scheduling #### Deployment Flow 1. Git webhook triggers deployment @@ -85,4 +85,9 @@ Only run artisan commands inside "coolify" container when in development. ### Deployment and Docker - Applications are deployed using Docker containers - Configuration generated dynamically based on application settings -- Supports multiple deployment targets and proxy configurations \ No newline at end of file +- Supports multiple deployment targets and proxy configurations + +## Cloud instance +We have a cloud instance of Coolify, a hosted Coolify. +This consists of 2 horizon worker servers. +It has thousands of servers connected, thousands of users, so make sure develop features to that usecase. \ No newline at end of file