#Developer Guide

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

  • PHP 8.4+ with extensions: pdo_pgsql, gd, bcmath, mbstring, xml
  • PostgreSQL 17+
  • Node.js 20+
  • Composer 2+
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:

  • Unit tests for new functionality
  • Feature tests for user interactions
  • Minimum 99.9% type coverage

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 .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:

  • app - Web server (nginx + php-fpm) on port 8080
  • horizon - Queue processing
  • scheduler - Cron jobs
  • postgres - Database
  • redis - Cache and sessions
  1. Pull latest code
  2. composer install --no-dev --optimize-autoloader
  3. npm ci && npm run build
  4. php artisan migrate --force
  5. php artisan optimize
  6. php 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

  1. Fork the repository
  2. Create a feature branch: git checkout -b feat/your-feature
  3. Make changes following coding standards
  4. Run tests: composer test
  5. Commit with conventional messages
  6. Open a Pull Request

PRs must pass all checks before merge.