Bab 12

Proyek Capstone

Dari Ide ke Production

"The difference between a student project and a real product is not the code—it's the thinking behind every decision, the care in every detail, and the responsibility for what you put into the world."

Tujuan Pembelajaran

Perjalanan Anda: Bab 1–11

1–4

Fondasi Teknis

HTML, CSS, JavaScript, arsitektur web, mental model client-server

5–6

Kolaborasi dengan AI

Prompt engineering, evaluasi kritis output AI, debugging systematic

7–10

Full-Stack Development

React/Next.js, database, authentication, deployment

11

Mindset Profesional

Meta-skills, debugging tanpa AI, production readiness

Bab 12 adalah sintesis. Anda akan mengintegrasikan semua kompetensi tersebut dalam satu proyek lengkap yang mensimulasikan pengembangan produk nyata.

Analogi: Blok Lego

Bab 1–11 adalah blok-blok Lego yang Anda kumpulkan satu per satu.

Bab 12 adalah ketika Anda menyusun semua blok tersebut menjadi struktur yang utuh, fungsional, dan bermakna.

Perbedaan penting: Blok Lego memiliki instruksi perakitan. Di bab ini, tidak ada instruksi perakitan.

Anda adalah arsitek yang menentukan apa yang dibangun, bagaimana strukturnya, dan mengapa setiap keputusan diambil.

Anatomi Produk SaaS

SaaS (Software as a Service) adalah model delivery software di mana aplikasi di-host oleh provider dan diakses user melalui internet, dengan model subscription atau pay-per-use.

Multi-tenancy

Satu instance aplikasi melayani banyak user/organisasi, tetapi data mereka terisolasi.

Subscription-based

User membayar bulanan/tahunan untuk akses. Perlu track: siapa berlangganan, kapan expired.

Self-service

User bisa sign up dan mulai tanpa sales call atau instalasi manual.

Web-accessible

Tidak perlu install software. Akses dari browser manapun.

Data Persistence

Data user disimpan di cloud, bisa diakses dari device manapun.

Scalability

Harus handle pertumbuhan user tanpa downtime atau degradasi performa.

Student Project vs Product

Aspek Student Project Product (SaaS)
Error Handling "Kalau error ya refresh" Setiap error ter-handle gracefully dengan message yang jelas
Data Loss "Kalau data hilang ya input lagi" Data TIDAK BOLEH hilang. Backup, transaction, validation ketat
Security "Cuma saya yang pakai" Siapa saja bisa sign up — proteksi dari abuse, injection, XSS
Performance "Lumayan cepat di laptop saya" Harus cepat untuk user dengan koneksi lambat di device lama
Monitoring "Kalau down saya restart" Monitoring otomatis, alert, error tracking, uptime logging
Mindset shift: Anda tidak lagi berpikir "Apakah ini cukup untuk dapat nilai A?" tetapi "Apakah saya comfortable orang asing menggunakan ini?"

Lifecycle Pengembangan Produk

  1. Ideation & Requirements — Problem definition, user persona, core value proposition
  2. Planning & Design — Feature prioritization (MVP vs Nice-to-have), information architecture, data model, technical architecture
  3. Implementation — Setup & scaffolding, core feature development, integration & testing, iteration
  4. Quality Assurance — Functional testing, security audit, performance optimization, accessibility check
  5. Deployment — Production setup, environment config, monitoring & error tracking, domain & SSL
  6. Documentation & Handoff — User docs, technical docs, architecture decision records, future roadmap
  7. Reflection & Iteration — What went well? What would I do differently? What did I learn?

Software development yang baik adalah 30% coding, 70% thinking, planning, dan reviewing.

Pilih Proyek Anda (1/3)

Opsi A: Invoice Generator SaaS

Problem: Freelancer dan small business perlu cara cepat membuat invoice profesional tanpa software mahal.

Core Features:

  • Create, edit, delete invoice dengan line items
  • Generate PDF dari invoice
  • Track status: Draft, Sent, Paid, Overdue
  • Dashboard ringkasan (outstanding, paid, overdue)
  • Public share link (tanpa login)

Technical Challenges: PDF generation, public sharing dengan secure token, auto-calculation, invoice number auto-increment

Pilih Proyek Anda (2/3 & 3/3)

Opsi B: Booking System SaaS

Problem: Profesional (konsultan, dokter, tutor) perlu sistem booking yang memudahkan client memesan slot waktu.

Technical Challenges: Timezone handling, conflict detection, calendar UI, email notification

Opsi C: URL Shortener dengan Analytics

Problem: Marketer dan content creator perlu link pendek yang trackable — tahu berapa kali di-click, dari mana, device apa.

Technical Challenges: Unique short code generation, high-volume tracking, analytics query optimization, privacy (hash IP)

User Persona: North Star Anda

User persona adalah representasi fiktif tetapi realistis dari target user Anda. Ini menjadi north star — setiap keputusan desain dan implementasi harus mengacu kembali ke: "Apakah ini membantu user persona saya?"

Komponen User Persona

  • Nama fiktif — misalnya "Sarah the Freelancer"
  • Background — pekerjaan, tech savviness, goals
  • Pain Points — masalah yang dialami tanpa produk ini
  • Use Cases — skenario penggunaan step-by-step
  • Success Metrics — outcome yang terukur

Action Item: Tulis user persona untuk proyek yang Anda pilih. Ini bukan formalitas — persona yang baik mencegah Anda membangun fitur yang tidak ada yang butuhkan.

MVP: MoSCoW Prioritization

Priority Label Meaning Action
Must Have 🔴 Critical Tanpa fitur ini, produk tidak berfungsi Build di MVP
Should Have 🟡 Important Important tetapi tidak blocking Build jika waktu tersedia
Could Have 🟢 Nice-to-Have Akan bagus jika ada, tetapi tidak esensial Skip untuk MVP, document untuk future
Won't Have ⚪ Deferred Tidak akan di-build dalam scope ini Document sebagai future roadmap
Kemampuan mengatakan "tidak" pada fitur yang menarik adalah salah satu skill terpenting product development.

Tech Stack Decision Matrix

Concern Decision Justification
Frontend Framework Next.js 14 (App Router) Familiar, SSR & SSG, API routes, Vercel deployment seamless
Backend & Database Supabase (PostgreSQL + Auth) Familiar, built-in auth, RLS untuk data isolation
Styling Tailwind CSS Rapid development, consistent design system, responsive
Deployment Vercel + Supabase Zero-config, auto HTTPS, monitoring built-in
Monitoring Sentry (free tier) Real-time error tracking, source map support, email alerts

Arsitektur: Monolithic Next.js App

Tier 1: Client (Browser)

Next.js frontend dengan React components, App Router pages, client-side state management. Ini yang user lihat dan interaksikan.

Tier 2: Server (Next.js + Supabase Client)

Next.js API Routes untuk server-side logic. Supabase Client SDK sebagai jembatan ke backend.

Tier 3: Supabase (BaaS)

PostgreSQL database, Authentication Service, Storage untuk file (PDFs, images).

Data flow: user interaction → HTTP request → Next.js API → Supabase SDK → PostgreSQL → response kembali

Database Schema Design

1. Normalization

Hindari data duplication. Pecah data menjadi tabel-tabel yang saling terelasi via foreign key.

2. Foreign Keys

Setiap relasi harus eksplisit dengan FK constraint. Memastikan referential integrity.

3. Indexes

Tambahkan index di kolom yang sering di-query. Trade-off: mempercepat read, memperlambat write.

4. Timestamps

Setiap tabel harus punya created_at dan updated_at. Memudahkan debugging dan audit trail.

5. Row Level Security

RLS memastikan data isolation di level database — enforcement, bukan hanya check di API.

6. Race Condition Awareness

Auto-increment dan concurrent operations perlu unique constraints + retry logic.

Information Architecture & User Flow

User harus bisa menemukan fitur dengan intuitif — tanpa harus "berpikir" di mana sesuatu berada.

Contoh Sitemap (Invoice Generator)

  • / — Homepage (public, landing page)
  • /signup — Form registrasi
  • /login — Form login
  • /dashboard — Overview dengan summary cards (private)
  • /invoices — List semua invoice
  • /invoices/new — Create invoice form
  • /invoices/[id] — View/edit invoice detail
  • /invoices/[id]/pdf — Generate PDF
  • /settings — User profile & preferences

Action Item: Buat sitemap untuk proyek Anda. Pilih 2 user flow terpenting dan tulis step-by-step dengan error states yang jelas.

ATWS Level 4: AI sebagai Accelerator

AI Training Wheels dilepas sepenuhnya. Ini adalah graduation test.

✅ AI Boleh

  • Generate scaffolding & boilerplate
  • Implementasi fitur
  • Refactoring & optimasi
  • Draft dokumentasi
  • Generate test cases

⚠️ Tanggung Jawab Non-Delegable

  • Keputusan arsitektur
  • Security audit manual
  • Code review menyeluruh
  • Testing critical path
  • Production deployment checklist

Gunakan AI untuk kecepatan, jangan korbankan kualitas atau pemahaman.

Quality Assurance: Non-Negotiable

Functional Testing

Setiap fitur must-have harus ditest manual. Happy path dan error path.

Security Audit

RLS policies diverifikasi. Input validation di semua form. Auth check di semua protected routes.

Performance Optimization

Lighthouse score ≥ 90. Image optimization. Bundle size analysis. Core Web Vitals lolos.

Accessibility Check

Semantic HTML. ARIA labels. Keyboard navigation. Screen reader friendly.

Error Tracking

Sentry dikonfigurasi. Error boundaries di React. Graceful error messages.

Documentation

User docs. Technical docs. Architecture decision records. Future roadmap.

Deployment & Monitoring

  1. Environment Variables — Production secrets terenkripsi di Vercel. Verifikasi semua var terkonfigurasi.
  2. Database Migration — Run migration di production database. Backup sebelum migrate.
  3. Custom Domain — Configure DNS, SSL auto-generated oleh Vercel.
  4. Error Tracking — Sentry terpasang dan tested. Alert notifications ke email Anda.
  5. Performance Monitoring — Vercel Analytics (opsional) atau Plausible untuk privacy-friendly tracking.
  6. Final Smoke Test — Test semua critical path di production. Signup, login, core features.

Production Readiness Checklist wajib diselesaikan sebelum launch

Refleksi: Meta-Learning

Setelah deployment, refleksi adalah tahap terpenting untuk konsolidasi pembelajaran.

Pertanyaan Refleksi

  • What went well? — Keputusan mana yang tepat? Skill apa yang ternyata sudah solid?
  • What was challenging? — Di mana Anda stuck paling lama? Mengapa?
  • What would I do differently? — Jika memulai ulang, arsitektur atau tech stack yang berbeda?
  • What did I learn? — Skill baru? Insight tentang product development?
  • Gap kompetensi apa yang teridentifikasi? — Apa yang perlu dipelajari next?
"The unexamined project is not worth building." — Refleksi mengubah experience menjadi learning.

Capstone sebagai Portfolio Piece

Proyek ini bukan hanya latihan — ini adalah bukti konkret kompetensi Anda kepada calon employer.

Live Demo

URL production yang bisa diakses siapa saja. Lebih powerful dari 100 baris CV.

GitHub Repository

Clean commit history, README yang comprehensive, code yang readable.

Case Study

Dokumentasi keputusan desain, trade-offs, challenges solved. Menunjukkan thinking process.

Yang dicari employer bukan "bisa coding" tetapi "bisa ship product dari ide ke production"

The Journey Ahead

Anda telah membangun fondasi yang solid. Capstone ini adalah titik awal, bukan akhir.

Software development adalah craft yang terus berkembang. AI akan terus berevolusi. Framework akan datang dan pergi. Tetapi kemampuan Anda berpikir sistemik, mengevaluasi trade-off, dan bertanggung jawab atas kualitas produk — skill ini akan tetap relevan.

Selamat membangun. 🚀