No description
- PHP 100%
| .env.example | ||
| .gitignore | ||
| admin.php | ||
| index.php | ||
| init.php | ||
| README.md | ||
| seed_dummy.php | ||
Portfolio Prototype (PHP + SQLite)
Portfolio pribadi dengan halaman publik (index.php) dan panel admin (admin.php), autentikasi Basic Auth, serta SQLite sebagai basis data. Tanpa framework, tanpa composer — cukup PHP 8+ dengan ekstensi pdo_sqlite dan gd.
Fitur
Frontend (index.php)
- Profil: foto profil, nama, tagline, bio "Tentang Saya" (dikelola dari admin).
- Grid kartu project dengan gambar, judul, tag, detail singkat, dan tanggal mulai.
- Modal detail, link website otomatis disembunyikan bila kosong.
- Gambar default otomatis (canvas/GD) bertuliskan "gambar" bila project tidak punya gambar — 4 varian warna dipilih dari
id % 4. - Pencarian tidak ada di publik, tapi pagination 6 project per halaman.
- Mode tema: Sistem / Terang / Gelap (disimpan di
localStorage, anti-flicker, toggle di header). - Detail penuh pakai TinyMCE → dirender sebagai HTML.
- Auto-scroll di modal saat detail melebihi 256px.
Admin (admin.php)
- Diproteksi Basic Auth (konfigurasi via
.env). - Tab Pengaturan: judul, nama, tagline, bio, dan Profile Picture (upload dengan crop otomatis persegi 1:1 via canvas).
- Tab Project: tabel ber-no urut, pencarian, pagination 5 baris, preview gambar (klik thumbnail), tambah/edit/hapus lewat modal.
- Form project: unggah gambar, judul (max 50), tag (pisah koma), detail singkat (max 120), detail penuh TinyMCE, link, tanggal pembuatan.
- Urutan data desc (yang terakhir diinput tampil paling dulu).
- MDI (Material Design Icons) untuk ikon.
- Tab aktif tersimpan di URL
?tab=.
Struktur File
index.php Halaman publik portofolio
admin.php Panel admin (Basic Auth)
init.php Auto-install pertama kali: create DB + tabel + seed + .env + uploads/
seed_dummy.php Seed dummy data untuk menguji fitur (run ulang: php seed_dummy.php)
.env Kredensial admin (ADMIN_USER / ADMIN_PASS)
portfolio.db Database SQLite (dibuat otomatis, tidak di-commit)
uploads/ Folder gambar upload (dibuat otomatis, tidak di-commit)
Instalasi
- Clone repositori ke htdocs/webroot Anda.
- Buka
index.php—init.phpakan otomatis membuatportfolio.db, tabel, seed 3 project, dan.envdefault. - Jalankan developer server (opsional):
php -S localhost:8000 - Buka admin di
http://localhost:8000/admin.php.
Kredensial default
| User | Password |
|---|---|
| admin | admin123 |
Ubah dengan membuat/mengedit .env:
ADMIN_USER=admin
ADMIN_PASS=ganti-password
Catatan: jangan upload
.envke repositori publik.
Persyaratan
- PHP 8+ (ekstensi:
pdo_sqlite,sqlite3,gd) - CDN eksternal (Tailwind, TinyMCE, MDI) — butuh koneksi internet saat membuka halaman.
Reproduce data dummy
php seed_dummy.php
Menghapus dummy agar kembali ke 3 project seed:
php -r '$db=new PDO("sqlite:portfolio.db");$db->exec("DELETE FROM projects WHERE title LIKE \"Dummy%\"");'