1
Ringkasan Proyek
ts-nextjs-tailwind-starter adalah starter Next.js berbasis App Router yang sudah dilengkapi komponen siap pakai, pengujian, linting, dan otomasi repository. Berkas README.md menyebutnya sebagai starter yang "battery packed" dengan sederet fitur bawaan, mulai dari absolute import sampai sitemap otomatis. README.md:14-351
Halaman ini memetakan fitur ke direktori src/ pada commit 9a47d33. Paket inti yang benar-benar terpasang adalah next ^15.4.3, react ^19.1.0, react-dom ^19.1.0, dan tailwindcss ^4.1.11. package.json:20-292
Peta Fitur ke Direktori
Setiap fitur di README punya rumahnya sendiri di dalam src/. Diagram berikut memetakan fitur ke berkas dan direktori yang benar-benar ada di repository.
graph TD
root["ts-nextjs-tailwind-starter"]
subgraph app["src/app — App Router"]
layout["layout.tsx — metadata & globals.css"]
page["page.tsx — halaman demo"]
catalog["components/page.tsx — katalog komponen"]
route["api/hello/route.ts — GET"]
end
subgraph comp["src/components — komponen siap pakai"]
links["links/ — 6 komponen link"]
buttons["buttons/ — Button, IconButton, TextButton"]
image["NextImage.tsx"]
skeleton["Skeleton.tsx"]
end
subgraph lib["src/lib — utilitas"]
utils["utils.ts — cn()"]
logger["logger.ts"]
og["og.ts — openGraph()"]
helper["helper.ts — storage helpers"]
end
subgraph cfg["konfigurasi"]
siteconfig["constant/config.ts — siteConfig"]
env["lib/env.ts — envVariables"]
tscfg["tsconfig.json — paths @/ dan ~/"]
webpack["next.config.js — SVGR"]
sitemap["next-sitemap.config.js"]
end
root --> app
root --> comp
root --> lib
root --> cfg
page --> links
page --> buttons
catalog --> links
catalog --> buttons
page --> siteconfig
layout --> siteconfig
page --> env
logger --> env
utils --> tscfg
page --> webpack
sitemap --> siteconfig
og --> siteconfig
style root fill:#2d7d46,color:#fff
style app fill:#2d7d46,color:#fff
style comp fill:#8b5cf6,color:#fff
style lib fill:#8b5cf6,color:#fff
style cfg fill:#f59e0b,color:#000
style tscfg fill:#f59e0b,color:#000
style webpack fill:#f59e0b,color:#000
style sitemap fill:#f59e0b,color:#000
style siteconfig fill:#f59e0b,color:#000
style env fill:#f59e0b,color:#000
%% fig: Peta fitur starter ke direktori src/
%% desc: Fitur README dipetakan ke berkas App Router, komponen, utilitas, dan konfigurasi yang benar-benar ada di repository.Penopang peta di atas adalah empat kelompok besar. App Router menempati src/app/, tempat layout.tsx memuat globals.css dan menyusun metadata. src/app/layout.tsx:12-503 Halaman demo page.tsx merangkai ArrowLink, ButtonLink, UnderlineLink, dan UnstyledLink menjadi satu layar perkenalan. src/app/page.tsx:24-434 Satu endpoint contoh tersedia di src/app/api/hello/route.ts lewat fungsi GET yang mengembalikan JSON { hello: 'Next.js' }. src/app/api/hello/route.ts:3-55
Kelompok kedua adalah komponen. Direktori src/components/links/ memuat enam berkas, dan src/components/buttons/ memuat tiga berkas; keduanya dipakai halaman demo serta katalog di src/app/components/page.tsx. Katalog komponen dibahas rinci di Katalog Komponen Pratinjau.
Kelompok ketiga adalah utilitas di src/lib/. Fungsi cn menggabungkan clsx dengan twMerge sehingga kelas Tailwind yang bertabrakan bisa diselesaikan. src/lib/utils.ts:4-76 logger hanya mencetak ketika showLogger bernilai benar. src/lib/logger.ts:9-197 getFromLocalStorage dan getFromSessionStorage menjaga akses storage tetap aman di sisi server. src/lib/helper.ts:1-138 openGraph menyusun URL gambar OG dari siteName, description, templateTitle, dan logo. src/lib/og.ts:10-269
Kelompok keempat adalah konfigurasi. siteConfig menyimpan title, description, dan url yang dipakai metadata serta sitemap. src/constant/config.ts:1-710 envVariables memvalidasi process.env dengan zod dan mendeklarasikan tipe ProcessEnv. src/lib/env.ts:9-1311 Pemetaan path @/* ke ./src/* dan ~/* ke ./public/* diatur di tsconfig.json. tsconfig.json:17-2012 next.config.js menambahkan aturan webpack agar *.svg diimpor sebagai komponen React lewat @svgr/webpack, sementara *.svg?url tetap dilayani file loader. next.config.js:19-4913
Ketergantungan Terpasang
Tabel berikut merangkum dependensi runtime dan alat pengembangan yang tercatat di package.json.
| Kelompok | Paket | Versi | Peran |
|---|---|---|---|
| dependencies | next | ^15.4.3 | framework App Router |
| dependencies | react / react-dom | ^19.1.0 | library UI |
| dependencies | clsx | ^2.0.0 | penggabung kelas kondisional |
| dependencies | tailwind-merge | ^2.6.0 | penyelesai kelas Tailwind yang bertabrakan |
| dependencies | zod | ^3.24.1 | validasi environment |
| dependencies | lucide-react / react-icons | ^0.438.0 / ^5.5.0 | set ikon |
| devDependencies | tailwindcss | ^4.1.11 | styling utility-first |
| devDependencies | typescript | ^5.8.3 | pemeriksaan tipe |
| devDependencies | jest | ^27.5.1 | unit test |
| devDependencies | eslint | ^8.57.1 | linting |
| devDependencies | husky | ^7.0.4 | git hook |
| devDependencies | next-sitemap | ^2.5.28 | pembuat sitemap |
Seluruh baris tabel di atas berasal dari blok dependencies dan devDependencies. package.json:20-292 package.json:30-5814
Skrip yang Tersedia
Ada 13 skrip di package.json. Skrip postbuild menjalankan next-sitemap setelah next build, dan prepare menjalankan husky install saat dependensi dipasang. package.json:5-1915
| Skrip | Perintah | Kegunaan |
|---|---|---|
dev | next dev | server pengembangan |
build | next build | build produksi |
start | next start | menjalankan hasil build |
lint | next lint | linting lewat Next.js |
lint:fix | eslint src --fix && pnpm format | perbaikan otomatis |
lint:strict | eslint --max-warnings=0 src | linting tanpa toleransi warning |
typecheck | tsc --noEmit --incremental false | pemeriksaan tipe |
test / test:watch | jest / jest --watch | unit test |
format / format:check | prettier -w . / prettier -c . | format kode |
postbuild | next-sitemap --config next-sitemap.config.js | sitemap setelah build |
prepare | husky install | pemasangan git hook |
Konfigurasi sitemap menetapkan siteUrl https://tsnext-tw.thcl.dev, menyalakan generateRobotsTxt, dan mengizinkan semua user agent. next-sitemap.config.js:5-1216
⚠️ README masih menyebut Next.js 14 dan React 18, sedangkan
package.jsonsudah memakainext^15.4.3danreact^19.1.0. Bila terjadi selisih perilaku, percayaipackage.jsondan bukan teks README. README.md:18-1917 package.json:20-292
CHANGELOG.md mencatat perubahan terakhir di versi 1.0.0 tanggal 2023-07-17: perpindahan ke App Router dan penggantian nama clsxm menjadi cn. Changelog itu juga menyatakan dirinya dibuat manual dan tidak akurat terhadap package.json. CHANGELOG.md:7-2318
Langkah Berikutnya
Pemasangan dependensi dianjurkan memakai pnpm agar hook Husky bekerja, lalu dijalankan pnpm install. README.md:79-8319 Urutan lengkap dari clone sampai menjalankan server ada di Memulai. Pembagian direktori dibahas di Arsitektur dan Struktur Direktori, sedangkan perkakas build dan linting dibahas di Konfigurasi Build dan Alat Pengembangan.