Stop Reinventing the Wheel: NestJS Starter Siap Produksi dengan OAuth & Clean Architecture
Kenapa Saya Membangun Nest-Zero
Setiap backend developer pasti pernah merasakannya.
Setiap kali memulai proyek baru, 2–3 hari pertama habis hanya untuk hal-hal yang itu-itu saja:
- Menyusun struktur folder
- Konfigurasi database
- Setup JWT dan authentication strategy
- Logging dan security dasar
Agar bisa mengirim MVP lebih cepat tanpa mengorbankan kualitas kode, saya butuh fondasi yang benar-benar solid. Bukan sekadar template “Hello World”, tapi arsitektur siap produksi yang langsung menangani bagian paling krusial.
Di situlah Nest-Zero lahir.
Apa itu Nest-Zero?
Nest-Zero adalah starter kit NestJS open-source yang dirancang dengan prinsip Clean Architecture, dan sudah dikonfigurasi dengan:
-
Prisma ORM
-
Zod Validation
-
Sistem Autentikasi Lengkap
- Local (Email & Password)
- OAuth (Google)
Tujuannya sederhana:
Menghemat 40+ jam kerja di setiap proyek backend baru.
1. Arsitektur: Modular & Bersih
Salah satu masalah terbesar dalam pengembangan Node.js adalah spaghetti code.
Di Nest-Zero, saya menerapkan pemisahan tanggung jawab yang ketat agar kode tetap mudah dirawat dan scalable.
Struktur Proyek
src/
├── auth # Logika autentikasi (Strategy, Guard)
├── user # Manajemen data & profil user
├── common # Utility bersama (Filter, Prisma, Validation)
├── model # DTO dan response interface terpusat
Struktur ini memastikan:
- Business logic berada di Service
- Controller tetap ringan
- Kode mudah dites, mudah dikembangkan, dan bersih
2. Mengatasi Masalah Autentikasi
Keamanan adalah bagian yang sering gagal di banyak starter kit.
Biasanya hanya ada login sederhana, sementara manajemen token diserahkan sepenuhnya ke developer.
Nest-Zero hadir dengan sistem autentikasi yang matang.
🔐 Autentikasi Dual Strategy
- LocalStrategy (Email & Password)
- GoogleStrategy menggunakan Passport
Desainnya mudah dikembangkan. Menambahkan GitHub, Facebook, atau OAuth lain cukup dengan menambah satu file strategy.
🔁 Refresh Token Rotation (Keamanan Serius)
Access token dibuat berumur pendek demi keamanan. Namun agar sesi user tetap nyaman, dibutuhkan refresh token.
Di Nest-Zero:
- Refresh token di-hash
- Disimpan di database
- Menggunakan token rotation
Contoh Implementasi Refresh Token
// src/auth/auth.service.ts
async refreshToken(oldRefreshToken: string): Promise<LoginResponse> {
// 1. Verifikasi signature token lama
const payload = await this.jwtService.verifyAsync(oldRefreshToken, {
secret: this.configService.get<string>('JWT_REFRESH_SECRET'),
});
// 2. Ambil data user
const user = await this.prismaService.user.findUnique({
where: { id: payload.userId },
});
// 3. CEK KEAMANAN: Deteksi reuse token
if (user.refreshToken !== oldRefreshToken) {
this.logger.warn(`Refresh token mismatch for user ${user.email}`);
throw new UnauthorizedException('Refresh token mismatch');
}
// 4. Generate access & refresh token baru (rotation)
// ...
}
Pendekatan ini:
- Mendeteksi token reuse attack
- Mengamankan sesi user
- Mengikuti praktik keamanan level enterprise
3. Type Safety dengan Prisma & Zod
TypeScript memang kuat, tapi validasi runtime tetap wajib.
Nest-Zero menggabungkan:
- Prisma ORM untuk type safety di database
- Zod untuk validasi request
Alih-alih memenuhi controller dengan logika validasi, semuanya ditangani oleh ValidationService.
Hasilnya:
- Type safety dari database sampai response API
- Controller lebih bersih
- Bug runtime jauh berkurang
4. Siap Digunakan di Lingkungan Produksi
Selain fitur utama, Nest-Zero juga menyertakan hal-hal penting yang sering dianggap sepele.
Fitur Tambahan
-
Structured Logging
- Menggunakan Winston
- Format JSON
- Siap dikirim ke Datadog / ELK
-
Security Headers
- Helmet aktif secara default
- Perlindungan dari XSS dan celah umum lainnya
Penutup
Nest-Zero bukan sekadar template.
Ini adalah kumpulan best practice backend yang saya pelajari dari membangun sistem yang scalable.
Fokuslah pada fitur produkmu, bukan pada boilerplate.
Nest-Zero saya bagikan sebagai proyek open-source agar developer lain bisa membangun backend lebih cepat dan lebih aman.
🔗 Repository
👉 GitHub: https://github.com/kikukafandi/nest-zero
Jika kamu merasa ini bermanfaat, jangan lupa beri ⭐️ di GitHub.
Tag
#NestJS #TypeScript #OpenSource #BackendDevelopment #WebSecurity
Tags
Enjoyed this article?