Sebelum menyentuh tRPC, kalian perlu menguasai TypeScript modern, konsep API contract, serta perbedaan RPC, REST, dan GraphQL. Di episode ini kalian juga menyiapkan Node.js, membuat project TypeScript, menginstall @trpc/server, @trpc/client, dan zod, lalu memverifikasi instalasi pertama.

Selamat datang di series Belajar tRPC! Series ini akan membawa kalian menguasai tRPC — library TypeScript RPC yang membuat server dan client berbagi tipe secara langsung, tanpa codegen dan tanpa duplikasi schema. Total ada 19 episode yang tersusun dari enam fase, dari konsep dasar sampai production readiness.
Tapi sebelum menulis router pertama, ada beberapa skill dasar dan perangkat lunak yang wajib kalian miliki. Mengapa prasyarat penting? Karena kekuatan utama tRPC adalah inferensi tipe TypeScript end-to-end. Kalau kalian belum paham generics atau tidak pernah melihat kode TypeScript yang memakai tipe statis, sebagian besar keajaiban tRPC akan terasa seperti sihir.
Episode 0 ini adalah peta jalan kalian: memastikan skill dasar, menyiapkan Node.js dan TypeScript, menginstall paket tRPC, dan melakukan verifikasi pertama. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.
tRPC dibangun di atas TypeScript. Pastikan kalian nyaman dengan tipe primitif, interface, union type, dan terutama generics — karena router tRPC secara internal memakai generics untuk menurunkan tipe dari server ke client. Berikut pola yang akan sering muncul:
function ambil<T>(items: T[], index: number): T {
return items[index];
}
const nama = ambil(["andi", "budi"], 0);
const angka = ambil([1, 2, 3], 1);Perhatikan bahwa nama bertipe string dan angka bertipe number — tipe diturunkan otomatis tanpa penulisan eksplisit. Inilah prinsip dasar yang sama dipakai tRPC untuk menurunkan tipe procedure dari server ke client.
Pahami juga konsep API contract-first: menentukan bentuk data lebih dulu sebelum implementasi. tRPC tidak wajib memakai JSON Schema, tetapi bekerja sangat baik dengan validator seperti zod yang mendeskripsikan bentuk input dan output prosedur. Nanti di episode 3, kalian akan melihat bahwa schema input menjadi satu-satunya sumber kebenaran di kedua sisi.
Secara umum, kalian perlu paham tiga paradigma API:
getUser.GET /users/1.tRPC adalah bentuk RPC modern yang memanfaatkan TypeScript. Perbandingan detailnya akan kita bedah di episode 1.
tRPC berjalan di atas Node.js. Install Node.js LTS terbaru — package manager npm sudah otomatis menyertainya. Untuk series ini kita akan memakai npm, tapi pnpm dan bun juga didukung penuh.
node --version
npm --versionPastikan versi Node minimal 18. Jika belum ada, kunjungi situs resmi Node.js dan unduh versi LTS, atau pakai Node Version Manager untuk berpindah versi dengan mudah.
Editor yang wajib kalian miliki adalah yang mendukung TypeScript dengan baik — VS Code adalah pilihan paling umum. Untuk menguji API nanti di episode 4, siapkan browser untuk frontend dan sebuah HTTP client seperti Postman atau cukup curl di terminal.
Untuk integrasi service di episode 10 dan deployment nanti, Docker opsional namun sangat membantu. Verifikasi dengan perintah berikut jika kalian memutuskan menggunakannya:
docker --versionMulai dengan membuat direktori project dan inisialisasi npm:
mkdir belajar-trpc
cd belajar-trpc
npm init -y
npm install typescript @types/node zod
npm install --save-dev tsx
npx tsc --initnpx tsc --init membuat file tsconfig.json dengan konfigurasi default. Ubah "target" menjadi "ES2020" atau lebih baru, dan pastikan "strict" bernilai true — mode strict akan menangkap banyak bug sebelum runtime.
Sekarang install paket inti tRPC. Untuk server dan client generic:
npm install @trpc/server @trpc/clientDua paket ini sudah cukup untuk membangun API dan mengkonsumsinya tanpa React. Di episode 4 nanti kita akan menambahkan @trpc/react-query dan @tanstack/react-query untuk integrasi dengan frontend React.
Sebelum lanjut ke episode 1, buat file verify.ts dengan isi berikut untuk memastikan semuanya terpasang dengan benar:
import { initTRPC } from "@trpc/server";
import { createCallerFactory } from "@trpc/server";
import { z } from "zod";
const t = initTRPC.create();
const appRouter = t.router({
halo: t.procedure
.input(z.object({ nama: z.string() }))
.query(({ input }) => `Halo, ${input.nama}!`),
});
const createCaller = createCallerFactory(appRouter);
const caller = createCaller({});
const hasil = await caller.halo({ nama: "Arman" });
console.log(hasil);Jalankan dengan tsx:
npx tsx verify.tsJika menampilkan Halo, Arman!, environment kalian sudah siap. Perintah createCallerFactory(appRouter) membuat pemanggil langsung di dalam server — detail router dan procedure akan kita bedah mulai episode 3.
Rangkuman prasyarat yang sudah kalian siapkan di episode 0:
halo yang dipanggil lewat caller.Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Fondasi yang kuat akan membuat 18 episode berikutnya terasa jauh lebih ringan.
Di episode 0 ini kalian sudah menyiapkan pijakan untuk seluruh series: memahami skill TypeScript yang dibutuhkan, menyiapkan Node.js dan tooling, menginstall paket tRPC, serta memverifikasi router pertama yang menghasilkan output.
Inti yang harus dibawa pulang:
@trpc/server dan @trpc/client adalah dua paket inti.createCallerFactory.Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa membutuhkan tRPC — dari asal usulnya di komunitas TypeScript, evolusinya dari RPC sederhana ke full-stack zero-boilerplate, hingga perbandingannya dengan REST dan GraphQL. Pastikan environment kalian sudah siap, karena perjalanan Belajar tRPC baru saja dimulai!