Landing page + dashboard content management untuk Foto Studio Purwokerto (Lightstudio).
Project ini dibangun dengan:
- Next.js 16 (App Router)
- Tailwind CSS 4
- Sanity API (sebagai content backend)
/→ landing page utama/portfolio→ galeri portfolio (masonry + filter kategori)
/dashboard/login→ login admin/dashboard→ manajemen konten (portfolio, paket harga, kontak/info bisnis)
GET/POST /api/cms/portfolioPATCH/DELETE /api/cms/portfolio/:idGET/POST /api/cms/pricingPATCH/DELETE /api/cms/pricing/:idGET/PUT /api/cms/settingsPOST /api/cms/upload-imagePOST /api/dashboard/loginPOST /api/dashboard/logout
-
Portfolio
- judul
- kategori
- image URL (atau upload langsung ke Sanity)
- alt text
- urutan tampil
-
Paket harga
- kategori paket
- item paket
- harga
- detail/notes per paket
-
Kontak & info bisnis
- WhatsApp URL
- nomor telepon
- Instagram URL
- Instagram handle
- alamat
- jam buka
Data kontak ini otomatis dipakai di section booking + footer landing page.
Buat file .env.local dan isi:
# Sanity
NEXT_PUBLIC_SANITY_PROJECT_ID=your_project_id
NEXT_PUBLIC_SANITY_DATASET=production
NEXT_PUBLIC_SANITY_API_VERSION=2026-03-15
SANITY_API_WRITE_TOKEN=your_sanity_write_token
# Dashboard auth
DASHBOARD_USERNAME=admin
DASHBOARD_PASSWORD=your_strong_password
DASHBOARD_SESSION_SECRET=your_long_random_secret
# Legacy CMS key (masih diterima oleh API, optional)
CMS_ACCESS_KEY=optional_legacy_keyMinimal untuk operasi normal: env Sanity + env dashboard auth.
npm install
npm run devBuka:
- Public:
http://localhost:3000 - Dashboard login:
http://localhost:3000/dashboard/login
- Push repo ke GitHub
- Import project ke Vercel
- Set semua Environment Variables
- Deploy
Pastikan SANITY_API_WRITE_TOKEN punya permission write untuk dataset yang dipakai.
- Source konten public jangan hardcode ulang di komponen bila sudah tersedia via helper CMS.
- Jika ubah kontrak data settings, update serentak:
src/types/index.tssrc/lib/cms-content.tssrc/app/api/cms/settings/route.ts- form dashboard tab Settings
- komponen landing yang mengonsumsi settings
- Route
/dashboard/*diproteksi middleware session cookie. - File image besar ada di
public/imagesdanpublic/logo.
- Landing page production-ready
- Portfolio masonry
- Pricing management form detail
- Kontak bisnis editable dari dashboard
- Dashboard login auth + logout
- Upload image ke Sanity