No description
Find a file
2026-10-03 13:05:30 +07:00
.env.example Add .env.example template 2026-08-31 13:43:46 +07:00
.gitignore Portfolio prototype: PHP + SQLite, panel admin, dummy seed 2026-08-31 13:42:27 +07:00
admin.php Portfolio prototype: PHP + SQLite, panel admin, dummy seed 2026-08-31 13:42:27 +07:00
index.php Make image preview close button more prominent 2026-10-03 13:05:30 +07:00
init.php Portfolio prototype: PHP + SQLite, panel admin, dummy seed 2026-08-31 13:42:27 +07:00
README.md Portfolio prototype: PHP + SQLite, panel admin, dummy seed 2026-08-31 13:42:27 +07:00
seed_dummy.php Portfolio prototype: PHP + SQLite, panel admin, dummy seed 2026-08-31 13:42:27 +07:00

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

  1. Clone repositori ke htdocs/webroot Anda.
  2. Buka index.php — init.php akan otomatis membuat portfolio.db, tabel, seed 3 project, dan .env default.
  3. Jalankan developer server (opsional):
    php -S localhost:8000
    
  4. 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 .env ke 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%\"");'