Pelatihan Full-Stack Modern Part 1: Setup Monorepo, Database Schema PostgreSQL & Prisma ORM
Bagian 1 dari seri pelatihan full-stack ASDEV: Menginisialisasi proyek Next.js 15, menyusun skema relasional PostgreSQL, koneksi Supabase, dan migrations Prisma ORM.
Selamat Datang di Seri Pelatihan Full-Stack ASDEV (Part 1/3)
Dalam seri pelatihan praktis ini, Anda akan dipandu langkah demi langkah membangun aplikasi berbasis web modern setara standar industri, mulai dari pemodelan basis data hingga siap digunakan di lingkungan produksi (production).
Materi yang Dibahas pada Part 1:
- [x] Inisialisasi struktur proyek Next.js 15 App Router & TypeScript.
- [x] Pengenalan basis data PostgreSQL pada platform Supabase.
- [x] Merancang skema relasional terstandar menggunakan Prisma ORM.
- [x] Eksekusi migrasi database dan konfigurasi Singleton Prisma Client.
Langkah 1: Merancang Schema Relasional (schema.prisma)
Buka file prisma/schema.prisma dan definisikan model data untuk sistem pengguna dan pesanan:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id String @id @default(cuid())
email String @unique
name String
role String @default("member") // member | admin
orders Order[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Order {
id String @id @default(cuid())
orderNumber String @unique
totalAmount Float
status String @default("PENDING") // PENDING | PAID | CANCELLED
userId String
user User @relation(fields: [userId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}Langkah 2: Setup Singleton Prisma Client di Next.js
Untuk menghindari kebocoran koneksi database pada mode hot-reload Next.js di Windows atau Linux, selalu gunakan pola Global Singleton:
// src/lib/db.ts
import { PrismaClient } from '@prisma/client';
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };
export const db =
globalForPrisma.prisma ||
new PrismaClient({
log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'],
});
__MD_HL_14__ (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = db;Checklist Akhir Part 1:
- Pastikan string koneksi
DATABASE_URLdi.envsudah aktif dan terhubung ke PostgreSQL. - Jalankan perintah verifikasi koneksi data:
npx prisma db pullataunpx prisma generate.
Langkah Selanjutnya: Pada Part 2, kita akan membangun RESTful API yang aman dengan JWT Authentication, Zod Schema Validation, dan proteksi hak akses Role-Based Access Control (RBAC)!
Siap mendalami topik lainnya?
Koleksi tutorial arsitektur, clean code, dan DevOps kami diperbarui secara berkala.

