# Issue: Peningkatan Bagian Proyek (Project Section Enhancement) ## Deskripsi Setiap kartu proyek perlu diperkaya dengan informasi tambahan: **tech stack**, **keterangan lengkap**, **interaksi klik untuk detail**, **tahun pengerjaan**, dan **target/pencapaian** yang berhasil tercapai. --- ## Langkah-langkah Implementasi ### Langkah 1 — Update Skema Prisma (Database) **File:** `prisma/schema.prisma` Tambahkan kolom baru pada model `Project`: ```prisma model Project { // ... field yang sudah ada ... techStack String[] // array nama teknologi, e.g. ["Java", "Spring Boot", "PostgreSQL"] year Int? // tahun pengerjaan, e.g. 2024 highlights String[] // target/pencapaian, e.g. ["Reduce latency 40%", "10K daily users"] } ``` Setelah edit schema, jalankan migrasi: ```bash npx prisma migrate dev --name add_project_details npx prisma generate ``` --- ### Langkah 2 — Update Zod Schema Validasi **File:** `src/features/projects/project-schema.ts` Tambahkan field baru ke `projectSchema`: ```ts techStack: z.string().optional(), // dikirim sebagai string CSV dari form, e.g. "Java,Spring Boot,Docker" year: z.coerce.number().optional(), highlights: z.string().optional(), // dikirim sebagai string CSV, e.g. "Reduce latency 40%,10K users" ``` > Catatan: Field diproses sebagai CSV string di form, lalu di-parse menjadi `String[]` sebelum disimpan ke DB. --- ### Langkah 3 — Update Server Action (Create & Update) **File:** `src/features/projects/actions.ts` Di fungsi `createProjectAction` dan `updateProjectAction`, tambahkan parsing: ```ts const rawTechStack = formData.get("techStack") as string; const rawHighlights = formData.get("highlights") as string; // Di blok prisma.project.create / prisma.project.update: techStack: rawTechStack ? rawTechStack.split(",").map(s => s.trim()) : [], year: formData.get("year") ? Number(formData.get("year")) : null, highlights: rawHighlights ? rawHighlights.split(",").map(s => s.trim()) : [], ``` --- ### Langkah 4 — Update Form Admin (Tambah Field Baru) **File:** `src/features/projects/project-form.tsx` Tambahkan tiga input baru di dalam `