Kroeng Community Showcase: Website untuk Komunitas yang Ingin Menampilkan Diri
Brief awal proyek ini sederhana: "Kita butuh website yang bisa nunjukin ke orang luar apa aja yang anggota Kroeng bisa lakukan."
Bukan website company profile — karena bukan company. Bukan portofolio individu — karena bukan satu orang. Sesuatu di antaranya.
Menyelesaikan Ambiguitas Brief
Langkah pertama saya bukan nulis kode. Tapi nanya balik:
- Siapa target pembaca? — Calon partner, klien, atau anggota baru.
- Apa yang perlu mereka ambil setelah kunjungi site? — Gambaran konkret "komunitas ini bisa apa" + cara kontak.
- Siapa yang maintain konten? — Anggota itu sendiri, secara kolaboratif.
Dari jawaban ini, struktur konten jadi jelas:
- Knowledge base — anggota share skill/insight sebagai artikel
- News — update kegiatan komunitas
- Achievements — showcase pencapaian anggota
- Gallery — visual proof dari event/project
Stack Pilihan
- Next.js 15 — server components, app router, static generation untuk halaman marketing, dynamic untuk dashboard anggota
- TypeScript — kolaborasi tim butuh type safety
- Supabase — auth + Postgres + storage dalam satu paket. Setup cepat, hosting managed
- Radix UI — primitive accessible, headless
- Tailwind — styling yang konsisten
Keputusan Arsitektur: Middleware Auth
Salah satu decision yang saya suka: proteksi route pakai middleware Next.js, bukan per-page check.
// middleware.ts (pseudocode)
export async function middleware(request: NextRequest) {
const { session } = await supabase.auth.getSession()
const pathname = request.nextUrl.pathname
const isProtected = pathname.startsWith('/dashboard') ||
pathname.startsWith('/contribute')
if (isProtected && !session) {
return NextResponse.redirect(new URL('/login', request.url))
}
return NextResponse.next()
}
Dengan satu file ini, semua protected route otomatis ter-protect. Nggak ada chance programmer baru lupa nge-check auth di page baru.
Content Management: Lewat Supabase, Bukan CMS Eksternal
Anggota butuh bisa add/edit konten sendiri. Opsi yang saya pertimbangkan:
- Headless CMS (Sanity, Contentful) — fleksibel tapi satu more layanan untuk dibayar dan dipelajari.
- Custom admin panel — penuh kontrol, tapi butuh bikin UI CRUD.
- Supabase Studio untuk power user + form sederhana di site untuk user umum — pilihan saya.
Supabase Studio sudah include UI admin yang cukup untuk maintainer. Sementara anggota umum pakai form custom di site untuk submit knowledge base article — lebih user-friendly.
Status + Next Steps
Status sekarang: active development. Git history-nya masih aktif bulan ini. Yang sudah:
- Setup Next.js 15 production-grade
- Middleware auth jalan
- Struktur routing semua section
- Environment terkonfigurasi
Yang belum:
- Konten real (masih placeholder)
- Gallery upload flow dari UI
- News editor untuk non-technical member
Pelajaran
- Brief ambigu = tanya balik, bukan asumsi. Setengah design work adalah nanya pertanyaan yang benar.
- Middleware auth lebih scalable daripada per-page check. Sekali setup, semua route ikut.
- Jangan adopsi CMS kalau belum tahu pain point real. Supabase Studio sudah cukup untuk banyak use case community-scale.
Stack: Next.js 15 + TypeScript + Supabase + Radix UI + Tailwind + Vercel.