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 setupLangkah demi Langkah
1. Clone & Install
bash
git clone <repo-url> sutomo
cd sutomo
cp .env.example .env
composer install
npm install2. 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 migrate4. Build Frontend Assets
bash
npm run build5. Jalankan Dev Server
bash
composer run devMenjalankan tiga proses secara bersamaan:
php artisan serve --port=8080— Laravel dev serverphp artisan queue:listen— Queue workernpm run dev— Vite hot-reload
Lingkungan Docker
Untuk environment production dengan Octane (FrankenPHP):
bash
docker compose up -dOctane Reload
Setelah perubahan PHP saat development:
bash
docker compose exec app php artisan octane:reloadPertama Kali — Setup Wizard
Saat pertama kali mengunjungi http://localhost:8080, aplikasi akan redirect ke /setup jika belum ada super user.
Langkah Setup
| Langkah | Deskripsi | Endpoint API |
|---|---|---|
| 1. Super User | Buat akun admin + verifikasi email | POST /api/setup/register, POST /api/setup/send-otp, POST /api/setup/verify-otp |
| 2. Seed Data | Jalankan seeder (geographic, permissions, settings) | POST /api/setup/seed (SSE stream) |
| 3. About | Info yayasan, branding, kontak | POST /api/setup/about |
| 4. Settings | Tema, warna, media sosial | POST /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 checkTesting
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