Next.js 14 menjadi standar de‑facto untuk pengembangan web React modern. Tutorial ini membimbing Anda dari instalasi hingga deployment, lengkap dengan contoh kode, konfigurasi, dan best practice terkini.
1. Prasyarat
Pastikan mesin Anda memiliki:
- Node.js v20.12 atau lebih tinggi (
node -v) - npm v10 atau Yarn v4 (
npm -v/yarn -v) - Git untuk version control
2. Instalasi Next.js 14 dengan TypeScript
Jalankan perintah berikut di terminal untuk membuat project baru:
npx create-next-app@latest my-next14-app \
--ts \
--eslint \
--experimental-app
Opsi --experimental-app mengaktifkan App Router secara default, yang sudah stabil di versi 14.
2.1 Verifikasi Struktur Proyek
Setelah selesai, struktur utama akan terlihat seperti:
my-next14-app/
├─ app/ # App Router root
│ ├─ layout.tsx
│ ├─ page.tsx
│ └─ globals.css
├─ public/
├─ src/
│ └─ ...
├─ next.config.mjs
├─ tsconfig.json
└─ package.json
3. Konfigurasi Dasar
3.1 next.config.mjs
Tambahkan pengaturan berikut untuk meningkatkan performa dan keamanan:
import { defineConfig } from 'next';
export default defineConfig({
reactStrictMode: true,
swcMinify: true,
images: { remotePatterns: [{ protocol: 'https', hostname: '**' }] },
experimental: {
serverComponentsExternalPackages: ['@prisma/client']
}
});
3.2 ESLint & Prettier
Instal plugin recommended:
npm i -D eslint eslint-config-next prettier
npx eslint --init # pilih "Use a popular style guide" → "Next.js"
Tambahkan file .prettierrc dengan format standar:
{
"singleQuote": true,
"trailingComma": "all",
"printWidth": 100
}
4. Membuat Halaman dengan Server Component
4.1 Buat Layout
// app/layout.tsx
import './globals.css';
import { Inter } from 'next/font/google';
const inter = Inter({ subsets: ['latin'] });
export const metadata = {
title: 'Next.js 14 Demo',
description: 'Tutorial step‑by‑step dengan App Router & Server Components',
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
4.2 Buat Route dengan Server Component
// app/page.tsx (Server Component secara default)
import Image from 'next/image';
import Link from 'next/link';
export default async function HomePage() {
// Contoh fetch data secara server‑side (no client bundle)
const res = await fetch('https://api.github.com/repos/vercel/next.js');
const repo = await res.json();
return (
Welcome to Next.js 14
Repository stars: {repo.stargazers_count}
About this demo
);
}
4.3 Client Component untuk Interaktivitas
Buat file app/components/Counter.tsx:
'use client';
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return (
);
}
Import di halaman:
// app/page.tsx (lanjutan)
import Counter from './components/Counter';
...
...
5. Integrasi Database dengan Prisma (Server Component)
5.1 Instalasi Prisma 5
npm i -D prisma@5 @prisma/client@5
npx prisma init --datasource-provider postgresql
Ubah .env dengan kredensial PostgreSQL Anda.
5.2 Definisikan Model
// prisma/schema.prisma
model Post {
id Int @id @default(autoincrement())
title String
content String?
createdAt DateTime @default(now())
}
Jalankan migrasi:
npx prisma migrate dev --name init
5.3 Fetch di Server Component
// app/posts/page.tsx
import { prisma } from '@/lib/prisma';
export default async function PostsPage() {
const posts = await prisma.post.findMany({ orderBy: { createdAt: 'desc' } });
return (
Latest Posts
{posts.map(p => (
- {p.title}
))}
);
}
6. Optimasi Performansi
- Streaming: gunakan
awaitdi dalam komponen untuk streaming data ke client tanpa menunggu seluruh query selesai. - Edge Runtime: tambahkan
export const runtime = 'edge';pada route yang sangat ringan untuk menurunkan latency. - Image Optimization: manfaatkan
next/imagedenganloader: 'default'untuk CDN otomatis.
7. Testing dengan Jest & React Testing Library
npm i -D jest @types/jest ts-jest @testing-library/react @testing-library/jest-dom
npx jest --init # pilih "Node" environment, "ts-jest" preset
Contoh test untuk Counter:
// __tests__/Counter.test.tsx
import { render, screen, fireEvent } from '@testing-library/react';
import Counter from '@/app/components/Counter';
test('increments count on click', () => {
render( );
const button = screen.getByRole('button');
fireEvent.click(button);
expect(button).toHaveTextContent('Clicked 1 times');
});
8. CI/CD dengan GitHub Actions & Vercel
8.1 Workflow GitHub Actions
# .github/workflows/deploy.yml
name: Deploy Next.js 14 to Vercel
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run lint
- run: npm run test
- name: Deploy to Vercel
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
working-directory: .
8.2 Pengaturan di Vercel
1. Buat project baru di dashboard Vercel dan hubungkan repository GitHub.
2. Tambahkan environment variable DATABASE_URL untuk Prisma.
3. Aktifkan Next.js Edge Functions bila membutuhkan runtime edge.
9. Best Practice Tambahan
- Folder Struktur: gunakan
app/untuk rute,components/untuk UI yang reusable,lib/untuk utilitas seperti Prisma client. - Typed API Routes: bila menggunakan
app/api/, definisikan request/response schema dengan Zod untuk validasi. - Security: aktifkan
Content‑Security‑Policydinext.config.mjs, hindari penggunaandangerouslySetInnerHTMLkecuali sudah disanitasi. - Monitor: integrasikan Vercel Analytics atau LogRocket untuk memantau real‑user metrics.
10. Deploy dan Verifikasi
Setelah workflow selesai, Vercel akan men-deploy otomatis. Buka URL yang diberikan, periksa:
- Halaman utama menampilkan data GitHub repo (Server Component).
- Counter berfungsi (Client Component).
- Daftar posting dari PostgreSQL muncul di
/posts.
Jika semua tampak baik, proyek Anda siap produksi.
Next.js 14 menyatukan kekuatan App Router, Server Components, dan integrasi TypeScript dalam satu paket yang mudah di‑setup. Dengan mengikuti tutorial ini, Anda tidak hanya memperoleh aplikasi yang modern dan performant, tetapi juga fondasi CI/CD yang solid, testing otomatis, serta praktik keamanan dan optimasi terbaru. Selamat membangun!
Panduan lengkap langkah demi langkah setup Next.js 14 dengan App Router, Server Components, TypeScript, Prisma, testing, dan CI/CD menggunakan Vercel pada 2026.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar