๐Ÿš€ Production Ready

Soulcode API Boilerplate

Template project TypeScript + Express.js untuk membangun REST API yang scalable, type-safe, dan production-ready untuk ekosistem Soulcode.

100%
TypeScript Strict
DDD
Architecture
Auto
Route Loading
Built-in
Validation

๐ŸŽฏ Mengapa Soulcode Boilerplate?

Solusi lengkap untuk development API yang cepat, aman, dan terstruktur dengan best practices industri.

  • Domain-Driven Design โ€” Struktur terorganisir berdasarkan domain bisnis
  • Type-Safe โ€” Full TypeScript dengan strict mode aktif
  • Auto-Routing โ€” Automatic route discovery dengan konvensi naming
  • Built-in Validation โ€” Request validation menggunakan Valibot
  • Production Ready โ€” Logging, error handling, dan monitoring terintegrasi
  • Developer Friendly โ€” Hot reload, debugging, dan dokumentasi lengkap
  • SQL Injection Safe โ€” Parameterized queries by default
  • Transaction Support โ€” Database transaction management built-in

๐Ÿ’ก Filosofi Utama

"Write clean, maintainable code with clear separation of concerns. Every layer has its own responsibility."

๐Ÿ› ๏ธ Tech Stack Modern

Kombinasi teknologi terbaik untuk performa dan developer experience optimal.

Core Framework

โšก Node.js v20.11.1
๐Ÿ”ท TypeScript Latest
๐Ÿš‚ Express.js
๐Ÿ“ฆ pnpm

Soulcode Internal Libraries

๐ŸŒ

@soulcodeku/soulcode-http

HTTP server & routing utilities dengan auto-discovery

๐Ÿ—„๏ธ

@soulcodeku/soulcode-mysql

MySQL database adapter dengan connection pooling

๐Ÿ›ก๏ธ

@soulcodeku/soulcode-core-backend

Core utilities, error handling, dan exception classes

๐Ÿ“จ

@soulcodeku/soulcode-rabbitmq

Message broker integration untuk background processing

Development Tools

โšก tsx (Hot Reload)
๐Ÿ” ESLint
๐Ÿงช Jest
โœ… Valibot

๐Ÿ—๏ธ Layered Architecture

Domain-Driven Design dengan pemisahan concerns yang jelas dan dependency injection.

๐ŸŽฎ Controller โ€” Handle HTTP requests & responses
โฌ‡๏ธ
โš™๏ธ Service โ€” Business logic & external service calls
โฌ‡๏ธ
๐Ÿ—„๏ธ Repository โ€” Database operations (INSERT/UPDATE/DELETE)
โฌ‡๏ธ
๐Ÿ“Š Queries โ€” SELECT operations & data retrieval

๐Ÿ“ Domain

Business rules dan entities. Wajib unit test!

๐Ÿ”„ Use Case

Flow orchestration untuk kompleks business process

๐Ÿ› ๏ธ Helper

Utility functions. Wajib unit test!

๐Ÿ“ Struktur Project

Organisasi kode yang intuitif berdasarkan domain bisnis.

Project Explorer
๐Ÿ“‚ rest-boilerplate-ts/
โ”œโ”€โ”€ ๐Ÿ—‚๏ธ database/ # Database migrations
โ”œโ”€โ”€ ๐Ÿ“‚ src/
โ””โ”€โ”€ ๐Ÿš€ app/
โ”œโ”€โ”€ ๐ŸŒ http/ # REST API endpoints
โ””โ”€โ”€ ๐Ÿ“ฆ [domain]/[feature]/
โ”œโ”€โ”€ ๐Ÿ“„ *.controller.ts
โ”œโ”€โ”€ โš™๏ธ use-case/ # Orchestration
โ””โ”€โ”€ ๐Ÿ—„๏ธ repo/ & queries/ # DB Logic
โ”œโ”€โ”€ โšก libs/ # Shared Utilities
โ””โ”€โ”€ ๐Ÿ“ฆ storage/ # Logs & Static Files
๐ŸŽฏ

Konvensi Penamaan

Folder: kebab-case | Class: PascalCase | Variable: camelCase

๐Ÿš€ Quick Start Guide

Dari clone sampai running dalam 5 menit!

1

Clone Repository

git clone <repository-url> && cd rest-boilerplate-ts
2

Setup NPM Registry

npm login --registry=https://npm.pkg.github.com --scope=@soulcodeku
3

Install & Configure

pnpm install
cp .env.example .env # Edit konfigurasi database
4

Run Development Server

pnpm dev # Server running di http://localhost:3000
โœ“

Test API

curl http://localhost:3000/api/health

๐Ÿ” Security & Validation

Keamanan terintegrasi dari awal development.

๐Ÿ›ก๏ธ

Request Validation

Schema validation menggunakan Valibot dengan type inference otomatis ke TypeScript

๐Ÿ”’

SQL Injection Prevention

Parameterized queries by default โ€” tidak ada raw query tanpa sanitasi

โš ๏ธ

Error Handling

Exception classes dari soulcode-core-backend dengan proper HTTP status codes

๐Ÿ“

Structured Logging

Context object logging untuk debugging dan monitoring production

// Contoh: Validation Schema dengan Valibot import * as v from 'valibot'; export const CreateUserRequest = v.object({ email: v.pipe(v.string(), v.email()), name: v.pipe(v.string(), v.minLength(3)), role: v.union([v.literal('admin'), v.literal('user')]) });

๐Ÿ—„๏ธ Database Strategy

MySQL integration dengan best practices untuk performance dan maintenance.

Connection Management

  • Connection pooling dengan limit configurable
  • Auto-reconnect dan error recovery
  • Transaction support untuk data consistency

Query Optimization

  • raw() untuk query sederhana
  • rawQuery() untuk complex queries
  • Parameterized queries untuk keamanan

Migration Naming Convention

Tipe Format Contoh Kapan Digunakan
Product Backlog PB-x.x.x.sql PB-1.2.0.sql Feature development
Production Issue YYYYMMDDHHmmss.sql 20240121143000.sql Hotfix production

๐Ÿ”€ Git Workflow

Branching strategy yang terstruktur untuk development yang aman.

๐ŸŒฟ Feature Development

dev โ†’ feature/nama-fitur โ†’ PR ke dev

  • Develop fitur baru
  • Code review & testing
  • Merge ke dev

๐Ÿšจ Production Hotfix

main โ†’ hotfix/issue-name โ†’ PR ke main & dev

  • Fix critical issue
  • Deploy immediately
  • Sync ke dev

๐Ÿ› Bug Fixes

dev โ†’ bugfix/bug-name โ†’ PR ke dev

  • Fix non-critical bugs
  • Testing di dev
  • Merge setelah review

๐Ÿš€ Deployment

dev โ†’ PR ke main โ†’ Deploy

  • Comprehensive testing
  • Staging validation
  • Production deploy

๐Ÿ“ Conventional Commits

feat: | fix: | docs: | refactor: | test: | chore:
๐Ÿณ Containerization

Docker & Production Ready

Deploy dengan mudah menggunakan Docker untuk lingkungan yang konsisten dan scalable.

๐Ÿณ

Docker Support

Siap pakai dengan Dockerfile dan docker-compose.yml untuk development maupun production.

๐Ÿš€

Multi-stage Builds

Optimasi image size untuk production yang lebih ringan dan aman (hanya runtime dependencies).

# Jalankan environment lengkap (App + DB)
docker-compose up -d --build

# Health check otomatis untuk memastikan service siap

โœ… Production Ready Checklist

  • Graceful Shutdown handling
  • Process Management (PM2/Docker)
  • Automated Health Checks
  • Environment Variable Validation

๐ŸŽจ Best Practices

Standar kode yang wajib diikuti untuk maintainability.

๐Ÿ“

Layer Responsibilities

Domain = Business rules, Queries = SELECT, Repo = Write operations, Use-case = Orchestration

๐Ÿงช

Testing Wajib

Unit test wajib untuk layer Domain dan Helper. Integration test untuk flow lengkap

๐Ÿšซ

Error Handling

Gunakan exception classes. Tidak boleh try-catch sembarangan di layer tertentu

Siap Membangun API Production-Ready? ๐Ÿš€

Mulai dengan Soulcode Boilerplate dan fokus pada business logic, bukan infrastruktur!

โšก
Fast Development
๐Ÿ›ก๏ธ
Secure by Default
๐Ÿ“ˆ
Scalable