web web-development unggulan

Website Karang Taruna Banjarsari

Website organisasi Karang Taruna dengan struktur organisasi interaktif, kotak aspirasi warga tanpa login, artikel multi-kategori, galeri foto dan video, serta AI chatbot ber-knowledge base khusus organisasi.

web langsung · kartabanjarsari.fun · ai-integration· firebase· full-stack· responsive
Screenshot From 2026-08-21 16-57-15
AI Integration Firebase Full Stack Responsive Vanilla JS

Situs web resmi Karang Taruna Desa Banjarsari — organisasi kepemudaan di Kandangan, Temanggung, Jawa Tengah — tayang di https://kartabanjarsari.fun/. Situs statis multi-halaman tanpa framework dan tanpa langkah build, di mana organisasinya sendiri menyunting isi lewat panel admin di browser.

Sorotan

  • Tanpa framework, memang disengaja — HTML, CSS, dan JavaScript ES6 biasa tanpa bundler dan tanpa TypeScript. Satu-satunya dependensi npm adalah dotenv; fungsi serverless-nya memakai tanda tangan native Vercel module.exports = async (req, res), bukan Express, sehingga header CORS dipasang eksplisit alih-alih lewat middleware.
  • Firebase Realtime Database sebagai CMS — komentar, galeri, artikel, testimoni, data pengurus, catatan pengunjung, dan aspirasi warga semuanya tinggal di Realtime Database dengan aturan di database.rules.json, dan Firebase Auth menggerbangi login admin. Organisasi memperbarui situsnya sendiri tanpa perlu deploy.
  • Sistem cache-busting tiga lapis dengan satu token versi — URL aset berversi, header Cache-Control per folder (7 hari untuk CSS/JS berversi, 1 hari untuk foto, must-revalidate untuk HTML, no-store untuk version.json), dan pemeriksaan ASSET_VERSION saat runtime yang memuat ulang sekali bila keduanya berbeda. Halaman admin dilewati agar reload tidak pernah membuang artikel yang baru separuh ditulis.
  • Efek visual diukur dulu, lalu dipangkas — tsParticles dibuang dan diganti latar bintang murni CSS, dan animasi meteor di kanvas membawa profil LITE untuk perangkat mobile. Aturan yang akhirnya melekat: periksa dulu biayanya per frame sebelum menambah efek apa pun.
  • Aset pihak ketiga tidak pernah menghambat render — Font Awesome dan Google Fonts dimuat lewat preload+onload dengan cadangan <noscript>.
  • Kunci AI tetap di sisi server — chatbot memanggil DeepSeek hanya melalui api/chat.js.

Fitur Utama

  1. Kegiatan dan artikel — program dan kabar organisasi, dapat disunting dari panel admin.
  2. Galeri foto — penelusuran bertenaga lightGallery atas koleksi yang dikelola lewat Firebase.
  3. Peta interaktif — peta Leaflet yang menandai lokasi desa dan titik-titik kegiatannya.
  4. Direktori pengurus dan testimoni — data terstruktur di data/pengurus.json yang dipadukan dengan entri langsung dari Firebase.
  5. Kanal aspirasi — warga mengirim usulan dan masukan langsung lewat situs.
  6. Chatbot AI — asisten bertenaga DeepSeek yang menjawab pertanyaan seputar organisasi, di-proxy di sisi server.
  7. Pencatatan pengunjung dan verifikasi manusiaapi/log-visit.js dan api/verify-human.js berdiri di belakang endpoint publik.

Tech Stack

  • HTML + CSS + JavaScript vanilla (ES6), tanpa framework maupun bundler
  • Firebase Realtime Database + Firebase Auth (SDK compat v8 lewat CDN)
  • Vercel Serverless Functions (api/*.js, handler native, 1024 MB / 30 detik)
  • DeepSeek API (chatbot, hanya di sisi server)
  • Leaflet (peta) + lightGallery (galeri)
  • Font Awesome + Google Fonts (tidak menghambat render)
  • Hosting Vercel dengan domain kustom

Status & Kematangan

Aktif dan melayani organisasi sungguhan; dengan 265 commit, ia adalah project kedua paling banyak dikerjakan di sini. Isi dan antarmukanya berbahasa Indonesia saja — <html lang="id">, tanpa lapisan i18n dan tanpa pengalih bahasa, sebuah penyesuaian yang disengaja terhadap pembacanya. Tidak ada suite test otomatis. Rintisan fitur toko (Midtrans, satu berkas JSON produk) dibuang seluruhnya begitu jelas tidak akan diselesaikan, bukan ditinggalkan setengah tersambung; aplikasi Android pendampingnya juga dihapus. Jumlah baris di bawah termasuk media statis yang ikut dilacak git.

Metrik Terukur

Commit 265
Rentang Tanggal 14 Apr 2026 – 18 Agu 2026
Baris kode 56.324 (termasuk berkas media statis yang dilacak git)
Test otomatis tidak ada
diperbarui 3 Sept 2026