Technical documentation for developers and contributors.
git clone https://github.com/Relaticle/relaticle.git
cd relaticle && composer app-install
composer run dev
Visit http://localhost:8000 to access the application.
| Component | Technology |
|---|---|
| Backend | PHP 8.4, Laravel 12 |
| Admin UI | Filament 5 |
| Frontend | Livewire 4, Alpine.js, Tailwind CSS 4 |
| Database | PostgreSQL |
| Queue | Laravel Horizon |
| Testing | Pest v4 |
| Static Analysis | PHPStan (Level 7) |
| Code Style | Laravel Pint, Rector |
| Auth | Laravel Jetstream |
Team ─┬─ User (via Membership)
├─ Company ─┬─ People
│ └─ Opportunity ─── Contact (People)
├─ Task (many-to-many with Company, People, Opportunity)
└─ Note (many-to-many with Company, People, Opportunity)
All workspace data is isolated via the HasTeam trait. Every query automatically scopes to the current team.
| Trait | Purpose |
|---|---|
HasTeam |
Workspace isolation |
HasCreator |
Tracks record creator |
HasNotes |
Polymorphic notes relationship |
HasAiSummary |
AI-generated summaries |
git clone https://github.com/Relaticle/relaticle.git
cd relaticle
composer install
npm install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan storage:link
npm run build
composer run dev
For PostgreSQL:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=relaticle
DB_USERNAME=postgres
DB_PASSWORD=your_password
composer lint # Format with Pint + Rector
composer test:lint # Check formatting
composer test:types # PHPStan analysis
composer test:pest # Run tests
composer test # All checks (required before PR)
Enable pre-commit checks:
git config core.hooksPath .githooks
All contributions require:
Run specific tests:
php artisan test tests/Feature/ExampleTest.php
php artisan test --filter="test_method_name"
Relaticle includes a custom fields system for extending entities without migrations.
docker pull ghcr.io/relaticle/relaticle:latest
cp docker-compose.prod.yml docker-compose.yml
cp .env.example .env
# Edit .env with production settings
docker compose up -d
By default, the CRM panel is available at {APP_URL}/app (path mode). For subdomain routing, set APP_PANEL_DOMAIN in your .env (e.g., APP_PANEL_DOMAIN=app.example.com).
Included services:
composer install --no-dev --optimize-autoloadernpm ci && npm run buildphp artisan migrate --forcephp artisan optimizephp artisan queue:restart| Issue | Solution |
|---|---|
| Queue not processing | php artisan queue:restart |
| File upload errors | chmod -R 775 storage bootstrap/cache |
| Slow queries | Use Laravel Telescope to identify, then add indexes |
| View cache issues | php artisan view:clear && npm run build |
git checkout -b feat/your-featurecomposer testPRs must pass all checks before merge.