ASDEV logo

ASDEV

Asdev Solution Technology

Semua Tutorial/Web Development
BeginnerWeb Development

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.

Ahmad Subadri (Lead Engineer)12 menit baca22 Oktober 20265 views
#Part 1#Pelatihan#PostgreSQL#Prisma ORM#Next.js 15

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:

prisma
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:

typescript
// 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:

  1. Pastikan string koneksi DATABASE_URL di .env sudah aktif dan terhubung ke PostgreSQL.
  2. Jalankan perintah verifikasi koneksi data: npx prisma db pull atau npx 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.

Kembali ke Katalog Tutorial