Episode ini membedah arsitektur Gatsby dari dalam: data layer GraphQL dengan source plugins, proses build source-transform- generate, struktur project, serta perbedaan page query, static query, dan jenis-jenis routing.

Setelah memahami sejarah dan posisi Gatsby, sekarang kita masuk ke bagian paling penting: bagaimana Gatsby bekerja di balik layar. Kalian tidak perlu menghafal setiap detail internal, tapi memahami arsitekturnya akan membuat semua episode praktik berikutnya jauh lebih masuk akal.
Episode 2 membedah data layer GraphQL, proses build, struktur project, sistem query, dan routing. Ini adalah fondasi konseptual yang akan kalian pakai setiap hari selama mengembangkan Gatsby.
Gatsby membangun sebuah graph di memori yang berisi seluruh data situs: file, Markdown, CMS, API, dan metadata. Graph ini di-query dengan GraphQL. Keunggulannya: kalian hanya meminta data yang dibutuhkan, dan hasilnya ter-typed dengan jelas.
Source plugins bertugas menarik data masuk. Contohnya gatsby-source-filesystem membaca file lokal, gatsby-source-contentful menarik konten dari Contentful, dan gatsby-source-graphql mengambil data dari API GraphQL eksternal.
Seluruh alur Gatsby mengikuti tiga tahap utama:
source → transform → generateSaat kalian menjalankan gatsby build, tiga tahap ini dieksekusi secara berurutan dan hasilnya ditulis ke folder public.
Sebuah project Gatsby standar memiliki struktur seperti ini:
my-gatsby-site/
src/
pages/
components/
templates/
images/
content/
posts/
gatsby-config.js
gatsby-node.js
gatsby-browser.js
gatsby-ssr.js
package.jsonPeran masing-masing folder dan file:
src/pages: file .jsx di sini otomatis menjadi route.src/components: komponen reusable seperti header dan footer.src/templates: template untuk halaman yang dibuat programatis.gatsby-config.js: konfigurasi utama, situs metadata, dan daftar plugin.gatsby-node.js: API untuk membuat halaman dinamis dan memodifikasi schema.gatsby-browser.js: API lifecycle untuk kode yang berjalan di browser.Page query hanya bisa dipakai di file page atau template. Query didefinisikan sebagai named export query dan dijalankan saat build:
import { graphql } from "gatsby"
export const query = graphql`
query HalamanTentang {
site {
siteMetadata {
title
}
}
}
`Hasil query otomatis tersedia sebagai prop data pada komponen halaman.
Komponen non-page tidak bisa memakai page query. Untuk itu Gatsby menyediakan useStaticQuery:
import { useStaticQuery, graphql } from "gatsby"
const Header = () => {
const data = useStaticQuery(graphql`
query {
site {
siteMetadata {
title
}
}
}
`)
return <header>{data.site.siteMetadata.title}</header>
}Hook useStaticQuery hanya boleh dipanggil satu kali per komponen dan dijalankan saat build time.
Routing Gatsby berbasis file: src/pages/index.jsx menjadi /, src/pages/about.jsx menjadi /about/, dan src/pages/blog/first-post.jsx menjadi /blog/first-post/. Tidak perlu konfigurasi router manual.
Kadang kita butuh halaman yang hanya ada di client, misalnya rute aplikasi setelah login. Caranya dengan properti matchPath di page:
const AppPage = () => <h1>Halaman Aplikasi</h1>
export default AppPage
export function Head() {
return <title>Aplikasi</title>
}
AppPage.matchPath = "/app/*"Properti matchPath: "/app/*" memberitahu Gatsby bahwa rute ini ditangani sepenuhnya di client. Ini berguna untuk aplikasi yang memerlukan autentikasi — akan kita bahas detail di episode 13.
Gatsby mengoptimalkan gambar secara otomatis melalui gatsby-plugin-image dan Sharp: format modern seperti WebP dan AVIF, ukuran responsif, lazy loading, serta placeholder blur. Episode 6 akan membahasnya mendalam.
Salah satu fitur yang membuat Gatsby terasa sangat cepat: saat pengguna mengarahkan kursor ke tautan Link dari Gatsby, halaman tujuan langsung di-prefetch sehingga navigasi terasa instan. Ini perilaku bawaan, bukan plugin tambahan.
Episode 2 memberikan peta konseptual Gatsby: data layer GraphQL yang menyatukan banyak sumber, proses build source-transform-generate, struktur project, sistem page query dan static query, serta routing file-based dan client-only.
Inti yang harus dibawa pulang:
src/pages menentukan route; sisanya dikelola gatsby-node.useStaticQuery untuk komponen.matchPath membuat client-only routes.Di episode 3 selanjutnya kita akan praktik langsung: membuat project Gatsby dengan CLI, menjelajahi struktur yang terbentuk, menjalankan dev server, dan menambahkan plugin dasar. Buka terminal kalian — saatnya kode nyata.