Files
RayLab-Core/Docs/Phase-04-Technical-Foundation.md
T
2026-07-30 09:41:42 +07:00

5.3 KiB

RayLab Core Phase 4 --- Technical Foundation

Tujuan

Fase 4 menetapkan fondasi teknis RayLab Core. Dokumen ini mendefinisikan teknologi, konvensi pengembangan, dan standar implementasi yang akan digunakan secara konsisten pada seluruh modul.


Tujuan Akhir

Project dapat dijalankan dengan satu perintah:

docker compose up -d

Kemudian endpoint health dapat diakses:

GET /health

Response:

{
  "status": "ok"
}

Technology Stack

Backend Framework

NestJS

Alasan:

  • Modular architecture
  • Dependency Injection
  • Guard, Middleware, Interceptor
  • Swagger integration
  • Testing support
  • Sangat cocok untuk aplikasi enterprise.

Programming Language

TypeScript

Keuntungan:

  • Type safety
  • Maintainability
  • IDE support
  • Konsisten dengan NestJS

Database

PostgreSQL

Digunakan sebagai database utama RayLab Core.

Semua data aplikasi disimpan di PostgreSQL.


ORM

Prisma

Keuntungan:

  • Type-safe query
  • Migration
  • Schema management
  • Autocomplete
  • Maintainable

Cache

Redis

Digunakan untuk:

  • Session
  • Cache
  • Rate limiting
  • Queue (apabila diperlukan)

Redis bukan penyimpanan data utama.


API Documentation

Swagger (OpenAPI)

Seluruh endpoint wajib memiliki dokumentasi.

Minimal mencakup:

  • Summary
  • Description
  • Request DTO
  • Response DTO
  • Error Response

Validation

Menggunakan:

  • class-validator
  • class-transformer

Seluruh request divalidasi sebelum masuk business logic.


Logging

Menggunakan:

Pino

Target:

  • Structured Logging
  • Performance
  • Mudah diintegrasikan dengan monitoring.

Testing

Standar pengujian:

Unit Test

  • Jest

Integration Test

  • Jest

End-to-End Test

  • Playwright

Standar ini mengikuti roadmap pengujian RayLab.


Containerization

Seluruh aplikasi dijalankan menggunakan Docker.

Container utama:

  • raylab-core
  • postgres-raylab
  • redis

Configuration

Konfigurasi menggunakan:

  • .env
  • NestJS Config Module

Business logic tidak boleh mengakses process.env secara langsung.


Coding Convention

Dependency Injection

Semua dependency menggunakan Dependency Injection NestJS.

Tidak diperbolehkan:

new UserRepository();

Naming Convention

Folder:

users
groups
authorization
registry

Class:

UserService
UsersController
UserRepository
CreateUserDto

UUID

Seluruh entity menggunakan UUID v7 sebagai primary key.

Tidak menggunakan integer auto increment.


API Versioning

Semua endpoint menggunakan format:

/api/v1/

Perubahan besar menggunakan versi API baru.


Standard Response

Success

{
  "success": true,
  "data": {},
  "meta": {}
}

Error

{
  "success": false,
  "error": {
    "code": "USER_NOT_FOUND",
    "message": "User not found"
  }
}

Development Convention

Seluruh modul wajib mengikuti aturan berikut.

  • Satu module mewakili satu domain bisnis.
  • Tidak ada query database di Controller.
  • Tidak ada business logic di Frontend.
  • Integrasi eksternal hanya melalui Adapter.
  • Seluruh endpoint memiliki DTO.
  • Seluruh endpoint memiliki validasi.
  • Seluruh endpoint memiliki dokumentasi Swagger.
  • Seluruh perubahan penting menghasilkan Audit Log.
  • Seluruh modul dapat diuji secara mandiri.

Struktur Project

raylab-core/

├── src/
├── prisma/
├── docs/
├── tests/
├── scripts/
├── docker/
├── package.json
├── docker-compose.yml
└── README.md

Hasil Akhir Fase 4

Setelah fase ini selesai, RayLab Core memiliki fondasi teknis yang konsisten, modern, dan siap digunakan sebagai dasar implementasi seluruh modul pada fase berikutnya.

Dokumen ini menjadi acuan resmi untuk pemilihan teknologi, standar coding, struktur project, dan konvensi pengembangan RayLab Core.