๐ Pengenalan & Quick Start โ
FullStuck.php: Framework mikro 1 file core. Tidak ada vendor/, tanpa Composer.
๐ป Instalasi CLI / Headless โ
php fullstuck.php init --db=sqlite --agent_js=yes --scaffold=yes --htaccess=yesFlag: --db (sqlite/mysql/pgsql/none), --agent_js (yes/no), --scaffold (yes/minimal/no), --htaccess (yes/no).
๐ค Install via Coding Agent โ
Jika Anda menggunakan AI Coding Agent (seperti Cline, Cursor, Copilot Workspace), gunakan prompt berikut agar agen menginstal dan mematuhi panduan:
Install fullstuck.php. Lalu baca dan patuhi panduan di https://raw.githubusercontent.com/stuckfull/fullstuck/refs/heads/main/docs/ai-setup.mdAtau jalankan php -S localhost:8000 fullstuck.php untuk menjalankan server dev bawaan.
๐ง Web Server Deployment โ
1. Apache / LiteSpeed (.htaccess di root):
Options -Indexes -MultiViews
<FilesMatch "^\.">
Require all denied
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ fullstuck.php [L]
</IfModule>2. Nginx (Server Block):
location / {
try_files $uri $uri/ /fullstuck.php?$query_string;
}3. FrankenPHP / Caddy (Gunakan Caddyfile):
:8000 {
root * .
php_server {
index fullstuck.php
}
}Jalankan dengan: frankenphp run
๐ Arsitektur & Struktur Folder โ
my-project/
โโโ assets/ # File statis (CSS, JS, Images)
โโโ models/ # Fungsi model & query helper โ auto-loaded via "require"
โโโ middleware/ # Fungsi middleware โ auto-loaded via "require"
โโโ routes/ # File rute per modul โ loaded via "routes_file"
โโโ views/ # Template HTML / PHP
โโโ fullstuck.json # File konfigurasi utama
โโโ fullstuck.php # Framework Core (HARAM dimodifikasi!)
โโโ router.php # Definisi rute utama (entry point)โ ๏ธ Jangan menumpuk semua logika di
router.php! Pecahkan model kemodels/, middleware kemiddleware/, dan rute per modul keroutes/. Daftarkan difullstuck.json:json"routing": { "require": ["models", "middleware"], "routes_file": ["router.php", "routes/admin.php", "routes/api.php"] }
requireauto-load folder/file/glob sebelum routing.routes_filemendefinisikan file rute yang dimuat berurutan.
Konfigurasi fullstuck.json โ
Seluruh pengaturan framework berpusat pada file fullstuck.json. File ini wajib ada di root project.
{
"production": false,
"database": {
"default": "main",
"connections": {
"main": {
"driver": "sqlite",
"database_path": "database.sqlite"
}
}
},
"routing": {
"base_path": "/",
"require": ["models", "middleware"],
"public_folders": ["assets", "uploads", "storage/public"],
"routes_file": ["router.php"],
"error_handlers": {
"404": "views/404.html"
},
"regex_shortcuts": {
":id": "([0-9]+)",
":slug": "([a-zA-Z0-9_-]+)"
}
},
"agent_js": true,
"fragment": {
"header_request": "HTTP_X_FST_FRAGMENT",
"header_target": "X-FST-Target",
"indicator_class": "fst-loading",
"history_cache": true
},
"mime_types": {
"custom": "application/x-custom"
}
}Tips: Anda dapat menggunakan sintaks
${NAMA_ENV}untuk mengambil nilai secara aman dari variabel sistem operasi (Environment Variables) tanpa perlu.env.
Penjelasan Opsi: โ
production:truemenyembunyikan error stack trace dari browser dan mengalihkannya ke log file.fst.log.falseakan menampilkan error detil di browser.routing.require: Auto-load file/folder/glob sebelum rute dieksekusi. Ideal untuk model, helper, dan middleware.routing.routes_file: Array file rute. Pecahkan saat project membesar (misal:["router.php", "routes/admin.php"]).agent_js:trueakan otomatis menyuntikkan script FST Agent (<script src="/fst-agent.js">) ke setiap output HTML.
Untuk referensi konfigurasi dan penjelasan lebih lengkap, silakan lihat FULL.md.
๐ค Strict Rules for AI โ
WAJIB DITAATI OLEH AI ASSISTANT:
- Wajib pakai Helper
fst_*: Dilarang pakai$_POST/$_GET/$_FILESmentah ataunew PDO(). - Jangan Sentuh Core: Dilarang memodifikasi
fullstuck.php. - Proteksi CSRF: Rute POST/PUT/DELETE WAJIB panggil
fst_csrf_check(). - Validasi: Gunakan hanya fungsi
fst_validate(). - Pecah Kode: Dilarang menumpuk semua logika di
router.php. Pecahkan model, middleware, dan rute per modul ke file/folder terpisah. Updatefullstuck.json(require&routes_file).