Skip to content

Setup & Instalasi

Prasyarat

  • PHP 8.4+
  • Composer
  • Node.js 20+
  • PostgreSQL 16+ (Docker direkomendasikan)
  • Docker (untuk Octane dan environment penuh)

Mulai Cepat

bash
# Install dependensi + buat .env + generate key + migrate + build
composer run setup

Langkah demi Langkah

1. Clone & Install

bash
git clone <repo-url> sutomo
cd sutomo
cp .env.example .env
composer install
npm install

2. Konfigurasi Environment

Edit .env dengan kredensial database Anda:

env
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=sutomo
DB_USERNAME=app
DB_PASSWORD=

3. Generate Key & Jalankan Migrasi

bash
php artisan key:generate
php artisan migrate

4. Build Frontend Assets

bash
npm run build

5. Jalankan Dev Server

bash
composer run dev

Menjalankan tiga proses secara bersamaan:

  • php artisan serve --port=8080 — Laravel dev server
  • php artisan queue:listen — Queue worker
  • npm run dev — Vite hot-reload

Lingkungan Docker

Untuk environment production dengan Octane (FrankenPHP):

bash
docker compose up -d

Octane Reload

Setelah perubahan PHP saat development:

bash
docker compose exec app php artisan octane:reload

Pertama Kali — Setup Wizard

Saat pertama kali mengunjungi http://localhost:8080, aplikasi akan redirect ke /setup jika belum ada super user.

Langkah Setup

LangkahDeskripsiEndpoint API
1. Super UserBuat akun admin + verifikasi emailPOST /api/setup/register, POST /api/setup/send-otp, POST /api/setup/verify-otp
2. Seed DataJalankan seeder (geographic, permissions, settings)POST /api/setup/seed (SSE stream)
3. AboutInfo yayasan, branding, kontakPOST /api/setup/about
4. SettingsTema, warna, media sosialPOST /api/setup/setting

Alur Middleware

Request → SetupMiddleware → MaintenanceMiddleware → Controller
  • SetupMiddleware: Jika belum ada super user / data geografis → redirect ke /setup
  • MaintenanceMiddleware: Jika mode maintenance ON → halaman UnderConstruction. Jika sekolah/artikel belum ada → redirect ke /portal

Kualitas Kode

bash
vendor/bin/pint --format agent          # Auto-format PHP
npm run format                          # Prettier (Svelte/TS)
npm run lint                            # ESLint
npm run types:check                     # Svelte check

Testing

bash
# Semua test
composer run test

# Filter berdasarkan nama
php artisan test --compact --filter=VacancyTest

# Frontend unit tests
npm run test:unit

# E2E (Playwright)
npm run test:e2e