Kamu bisa curhat sepuasnya disini, lanturkan kata-kata mutiara biar pikiran makin ringan (tapi ingat semua ketikan kamu bersifat publik jadi harus bijak). web ini dibuat menggunakan NextJS 15 + Tailwind + shadcn/ui. Full-stack monolith (server actions) dan tech kalcer lainnya.
- Next.js 15 (App Router) + Server Actions
- Firestore (Firebase Admin SDK) — akses hanya di server
- TailwindCSS + shadcn/ui components (komponen inti disertakan)
- TypeScript, Zod validation, next-themes (dark mode)
cp .env.example .env
# Isi kredensial service account (Admin SDK)
npm install
npm run devLihat .env.example. Gunakan Service Account JSON lalu isi variabel berikut:
FIREBASE_PROJECT_IDFIREBASE_CLIENT_EMAILFIREBASE_PRIVATE_KEY(ingat untuk escape newline menjadi\n)
app/
page.tsx # Landing page
keluh-kesah/page.tsx # Feed + form posting
layout.tsx
components/
nav.tsx
post-card.tsx
ui/* # Komponen dasar shadcn-like
lib/
firebase-admin.ts # Inisialisasi Admin SDK
schema.ts # Zod schemas
utils.ts # helper cn(), hashIP()
server/
actions.ts # Server Actions (createPost, likePost, fetchPosts)
Collection: posts
{
content: string;
mood: "curhat" | "pertanyaan" | "saran" | "pujian";
isAnonymous: boolean;
ipHash?: string;
likes: number;
createdAt: Timestamp;
status: "published";
}Deploy ke Vercel. Pastikan Environment Variables diisi di Project Settings. Jalankan npm run build dan npm start (otomatis di Vercel).
- Runtime halaman Firestore di-set ke
nodejsagar kompatibel dengan Admin SDK. - Untuk komponen shadcn/ui lain, Anda bisa menambahkannya seiring kebutuhan.
- Rate limit & moderation tidak diaktifkan di starter ini — tambahkan sesuai kebutuhan (misal Upstash Ratelimit, Perspective, dll).