Next.js 14 terus menjadi standar de‑facto untuk aplikasi React full‑stack. Tutorial ini mengajarkan langkah‑demi‑langkah instalasi, konfigurasi, contoh kode, serta best practice hingga deployment otomatis ke Vercel, lengkap dengan integrasi linting, testing, dan keamanan.
1. Prasyarat
- Node.js >=20.10 (LTS) – unduh di nodejs.org
- Git 2.45+ dan akun GitHub
- Editor kode – VS Code rekomendasi dengan ekstensi ESLint, Prettier, dan Tailwind CSS IntelliSense
- Akun Vercel (free tier) untuk deployment
2. Membuat Projek Next.js 14
- Buka terminal dan jalankan perintah berikut untuk membuat project baru dengan template
create‑next‑app:npx create-next-app@latest my-next14-app --typescript --app
Parameter--appmengaktifkan App Router (direktoriapp/) yang menjadi default sejak Next.js 13, dan--typescriptmenyiapkan tipe statis. - Pindah ke folder project:
cd my-next14-app
- Jalankan server development untuk memastikan semuanya berfungsi:
npm run dev
Bukahttp://localhost:3000– Anda akan melihat halaman starter Next.js.
3. Integrasi Tailwind CSS 3.4
- Instal dependensi Tailwind, PostCSS, dan autoprefixer:
npm install -D tailwindcss@latest postcss@latest autoprefixer@latest
- Inisialisasi konfigurasi Tailwind:
npx tailwindcss init -p
Perintah ini membuattailwind.config.jsdanpostcss.config.js. - Modifikasi
tailwind.config.jsagar memindai semua file di direktoriappdancomponents:/** @type {import('tailwindcss').Config} */ module.exports = { content: [ "./app/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}" ], theme: { extend: {}, }, plugins: [], }; - Ganti file global CSS (
app/globals.css) dengan boilerplate Tailwind:@tailwind base; @tailwind components; @tailwind utilities; /* Custom utilities */ @layer utilities { .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; } } - Uji dengan menambahkan kelas Tailwind pada halaman utama (
app/page.tsx):export default function Home() { return ( ); }Next.js 14 + Tailwind
4. Menambahkan ESLint & Prettier (Lint‑Fix CI)
- Instal paket linting:
npm install -D eslint prettier eslint-config-prettier eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y
- Jalankan init ESLint:
npx eslint --init
Pilih “To check syntax, find problems, and enforce code style”, “JavaScript modules (import/export)”, “React”, “TypeScript”, “Browser”, dan “Use a popular style guide → Airbnb”. - Tambahkan file
.prettierrcdi root:{ "singleQuote": true, "trailingComma": "all", "printWidth": 100, "tabWidth": 2 } - Update
package.jsondengan script lint & format:"scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", "format": "prettier --write ." } - Gunakan Git hook pre‑commit lewat
husky(opsional tetapi best practice):npm install -D husky npx husky install npx husky add .husky/pre-commit "npm run lint && npm run format"
5. Membuat API Route dengan Server Actions (Next.js 14)
Server Actions memungkinkan mengirim data langsung ke fungsi server tanpa membuat endpoint terpisah.
- Buat folder
app/api/feedbackdan fileaction.ts:"use server"; import { revalidatePath } from "next/cache"; export async function submitFeedback(data: { email: string; message: string }) { // Simulasi penyimpanan ke DB – di produksi gunakan Prisma atau Supabase console.log("Feedback received:", data); // Revalidasi halaman yang menampilkan feedback revalidatePath("/feedback"); return { success: true }; } - Buat komponen form di
app/feedback/page.tsxyang memanggil action:"use client"; import { useState } from "react"; import { submitFeedback } from "@/app/api/feedback/action"; export default function FeedbackPage() { const [email, setEmail] = useState(""); const [message, setMessage] = useState(""); const [status, setStatus] = useState(null); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setStatus("Sending…"); const res = await submitFeedback({ email, message }); setStatus(res.success ? "Thanks!" : "Error"); setEmail(""); setMessage(""); }; return ( ); }Give us your feedback
{status &&{status}
}
6. Testing Unit dengan Jest & React Testing Library
- Instal dependensi testing:
npm install -D jest @types/jest ts-jest @testing-library/react @testing-library/jest-dom @testing-library/user-event
- Inisialisasi konfigurasi Jest:
npx jest --init
PilihTypeScript,Node environment, dancoverage. - Tambahkan file
jest.config.ts:/** @type {import('jest').Config} */ export default { preset: "ts-jest", testEnvironment: "jsdom", moduleNameMapper: { "^@/(.*)$": "/$1", }, setupFilesAfterEnv: [" /jest.setup.ts"], }; - Buat
jest.setup.tsuntuk memperluas matchers:import "@testing-library/jest-dom";
- Contoh tes untuk komponen
FeedbackPage( letakkan diapp/feedback/__tests__/FeedbackPage.test.tsx):import { render, screen, fireEvent } from "@testing-library/react"; import FeedbackPage from "../page"; test("renders form and submits", async () => { render(); const emailInput = screen.getByPlaceholderText(/your email/i); const messageBox = screen.getByPlaceholderText(/your message/i); const button = screen.getByRole("button", { name: /send/i }); fireEvent.change(emailInput, { target: { value: "test@example.com" } }); fireEvent.change(messageBox, { target: { value: "Great site!" } }); fireEvent.click(button); expect(await screen.findByText(/thanks!/i)).toBeInTheDocument(); }); - Jalankan tes:
npm test
7. Optimasi Performansi & SEO
- Image Optimization: gunakan
next/imagedengan layoutresponsivedanpriorityuntuk hero image. - Font Loading: manfaatkan
next/font/googleuntuk meng‑inline font‑display swap. - Metadata: definisikan
metadatadi setiap route (Next.js 14) untuk SEO dan Open Graph. - Incremental Static Regeneration (ISR): tambahkan
revalidate: 60padafetchdata server‑side untuk cache 1 menit.
8. Deploy ke Vercel (Zero‑Config)
- Push repository ke GitHub:
git init git add . git commit -m "Initial commit" git remote add origin https://github.com/username/my‑next14‑app.git git push -u origin main
- Masuk ke Vercel Dashboard, klik New Project**, pilih repo tadi, dan biarkan default (Next.js preset).
- Vercel otomatis meng‑install dependensi, menjalankan
npm run build, dan menyediakan preview URL dalam beberapa detik. - Aktifkan Automatic Deployments pada setiap push ke branch
main. - Tambahkan variabel lingkungan (mis.
DATABASE_URL) lewat tab Settings → Environment Variables jika diperlukan.
9. Best Practice Tambahan
- Folder Structure: pisahkan
app/(page routes) dancomponents/(UI),lib/(utility functions),services/(API / DB layer). - Type Safety: gunakan
zoduntuk validasi skema pada Server Actions dan API routes. - Security: aktifkan
Content‑Security‑Policylewat middleware, hindari inline scripts, dan selalu sanitasi input. - Monitoring: integrasikan Vercel Analytics atau Sentry untuk error tracking di production.
Dengan mengikuti langkah‑demi‑langkah di atas, Anda kini memiliki aplikasi Next.js 14 modern yang terstruktur, ter‑test, dan siap produksi. Kombinasi App Router, Tailwind CSS, lint‑fix pipeline, serta deployment otomatis ke Vercel memberikan fondasi kuat untuk proyek skala kecil hingga enterprise. Ingatlah untuk terus memperbarui dependensi, meninjau laporan keamanan, dan menambahkan CI/CD checks sehingga aplikasi tetap cepat, aman, dan mudah dipelihara.
Tutorial lengkap setup Next.js 14 dengan App Router, Tailwind CSS, linting, testing, dan deployment otomatis ke Vercel. Langkah demi langkah, contoh kode, dan best practice untuk Programming, Software Engineering, dan Web Development.
Programming,Software Engineering,Web Development,Next.js 14,Tailwind CSS,Vercel,React,DevOps
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar