Kenapa Web Profile Ini Dibangun dengan Pendekatan Headless
Web profile Sendi Studio saya bangun bukan hanya sebagai halaman company profile statis, tetapi sebagai portal yang bisa berkembang untuk kebutuhan portfolio, blog, produk digital, layanan, rate card, legalitas, dan link bio. Karena itu, arsitektur yang saya pilih adalah headless: frontend fokus pada pengalaman pengguna dan SEO, sedangkan backend fokus sebagai API provider dan pusat data.
Pendekatan ini membuat setiap bagian lebih mudah dipelihara. Konten blog, project, client, product, dan profile tidak harus diubah langsung dari source code. Semuanya bisa dikelola dari admin dashboard, lalu frontend mengambil data melalui endpoint API.
Frontend: Next.js, React, Tailwind CSS, dan App Router
Di sisi frontend, stack utama yang saya gunakan adalah Next.js App Router dengan React. Next.js dipilih karena mendukung server component, metadata dinamis, routing berbasis folder, optimasi image, sitemap, robots, dan struktur SEO yang lebih rapi.
React menjadi fondasi UI, sedangkan Tailwind CSS digunakan untuk styling agar desain bisa dikembangkan cepat tanpa kehilangan konsistensi. Untuk komponen dasar seperti dialog, tabs, form, dan elemen interaktif, saya memakai pendekatan component-based dengan shadcn/ui dan Radix UI.
Library penting di frontend
- Next.js untuk App Router, SSR/SSG, metadata, dan routing.
- React untuk struktur komponen.
- Tailwind CSS untuk styling utility-first.
- next-intl untuk dukungan bahasa Indonesia dan English.
- TanStack React Query untuk data fetching di sisi client/admin.
- Axios sebagai API client.
- GSAP untuk animasi landing page yang tetap terkontrol performanya.
- Quill dan quill-table-better untuk rich text editor blog di admin.
Backend: API Provider untuk Konten Dinamis
Backend saya posisikan sebagai API provider untuk semua konten dinamis. Di dalamnya ada endpoint untuk profile, experience, services, projects, clients, articles, digital products, dan links. Setiap response dibuat agar frontend bisa langsung membaca data dengan struktur yang jelas.
Untuk konten bilingual, beberapa tabel menggunakan field lang dan translation_key. Dengan pola ini, satu konten bisa punya versi ID dan EN yang berbeda slug-nya, tetapi tetap dianggap sebagai satu pasangan terjemahan yang sama di admin.
Data penting untuk blog
titleuntuk judul artikel.descriptionuntuk ringkasan dan SEO description.contentuntuk isi artikel dari rich text editor.sluguntuk URL yang SEO-friendly.languntuk membedakan konten ID dan EN.translation_keyuntuk memasangkan artikel bilingual.editorial_noteuntuk catatan editorial di halaman detail.
Admin CMS: Agar Konten Bisa Dikelola Tanpa Deploy
Salah satu tujuan utama web profile ini adalah memisahkan pekerjaan konten dari proses deploy. Karena itu, saya membuat admin dashboard untuk mengelola data publik. Admin bisa mengubah blog, project, client, layanan, produk digital, profile, dan links tanpa menyentuh source code frontend.
Untuk editor blog, saya menggunakan Quill agar proses menulis lebih nyaman dibanding textarea biasa. Dukungan tabel dari quill-table-better juga penting karena artikel teknis sering membutuhkan perbandingan stack, fitur, atau arsitektur.
SEO dan Performa
Karena web profile ini berfungsi sebagai aset publik, SEO menjadi prioritas. Setiap public page disiapkan dengan metadata, Open Graph, struktur heading, sitemap, robots, dan URL yang terlokalisasi. Di sisi performa, animasi dibuat selektif menggunakan GSAP agar halaman tetap terasa hidup tanpa mengorbankan loading dan scroll performance.
Dengan kombinasi Next.js, API backend, CMS admin, dan rich text editor, web profile ini bisa menjadi fondasi yang fleksibel untuk company profile, personal branding, portfolio, content hub, dan katalog produk digital.
