# Roadmap Rebuild MPWA

## Tujuan

Mentransformasi MPWA dari WhatsApp gateway hybrid lama menjadi platform messaging yang:

- modern
- maintainable
- aman
- scalable
- siap production di cPanel
- mengikuti pola resmi WhatsApp Business Platform

## Prinsip Eksekusi

1. Official-first
- Integrasi resmi Meta Cloud API menjadi default.

2. Legacy isolation
- Layer berbasis Baileys dipisahkan dan tidak lagi menjadi core platform.

3. Incremental hardening
- Fokus awal pada security, queue, webhook, dan API contract sebelum polishing UI besar.

4. Backward-aware migration
- Hindari breaking change total tanpa compatibility bridge yang jelas.

5. cPanel-aware deployment
- Seluruh desain harus realistis untuk PHP, Node.js, MySQL, Redis, cron, dan reverse proxy shared hosting.

## Target Arsitektur

### Core Modules

1. `Platform Core`
- config
- tenancy boundary
- auth
- RBAC
- audit log
- settings

2. `Messaging Domain`
- message request intake
- validation
- sanitization
- permission check
- quota check
- queue handoff
- delivery lifecycle

3. `WhatsApp Official Provider`
- embedded signup support
- system user token / access token management
- phone number management
- template management
- media APIs
- send message APIs
- status mapping

4. `Webhook Domain`
- verification
- signature validation
- duplicate detection
- inbound event persistence
- replay
- analytics

5. `Queue and Worker Domain`
- Redis-backed queues
- priority queue
- delayed queue
- schedule queue
- retry queue
- dead letter queue
- worker pool
- rate-aware dispatch

6. `Observability Domain`
- structured logs
- health checks
- metrics
- dashboard widgets
- error tracking

## Batch Implementasi

### Batch 1 - Fondasi Provider dan Security Boundary

Output:

- provider interface resmi untuk WhatsApp
- pemisahan provider official vs legacy
- service-to-service auth untuk route internal
- standard config dan secret management baseline
- dokumentasi arsitektur awal

Pekerjaan:

- Tambah folder domain/provider resmi.
- Buat contract `WhatsappProviderInterface`.
- Buat adapter awal untuk Meta Cloud API.
- Tandai konektor Baileys sebagai legacy compatibility.
- Lindungi internal endpoint dengan internal token atau signed request.
- Normalisasi env config untuk `APP_URL`, `WA_URL_SERVER`, `REDIS_*`, `META_*`.

### Batch 2 - Queue Backbone Redis

Output:

- semua dispatch pesan masuk ke antrean persisten
- worker pool
- retry policy
- dead letter queue
- monitoring dasar

Pekerjaan:

- Ubah default queue production ke Redis.
- Tambah tabel/event log untuk lifecycle message job.
- Refactor blast scheduler ke enqueue job, bukan direct process.
- Tambah retry dan throttling policy.
- Tambah queue health endpoint dan dashboard summary.

### Batch 3 - Webhook Meta Resmi

Output:

- endpoint webhook resmi siap verifikasi
- signature validation
- idempotent event processor
- webhook analytics dan replay

Pekerjaan:

- Tambah controller webhook resmi.
- Simpan inbound event ke event store.
- Tambah deduplication key.
- Mapping event:
  - message received
  - message status
  - delivery
  - read
  - error

### Batch 4 - API v1 dan Security Hardening

Output:

- REST API v1 terdokumentasi
- auth lebih konsisten
- rate limiting lebih kuat
- audit trail lebih lengkap

Pekerjaan:

- Definisikan resource API:
  - auth
  - users
  - devices
  - phone numbers
  - templates
  - contacts
  - messages
  - media
  - webhook
  - analytics
  - queue
  - scheduler
  - audit
- Tambah OpenAPI spec.
- Tambah Swagger UI.
- Tambah Postman collection.
- Tambah request validation formal per endpoint.

### Batch 5 - Dashboard Modern Dark dan Monitoring

Output:

- dashboard operasional modern dark
- queue monitor
- webhook monitor
- worker health
- message analytics

Pekerjaan:

- Refactor layout dashboard.
- Tambah widget realtime.
- Tambah halaman monitoring:
  - queue
  - webhook
  - worker
  - API usage
  - system health
- Tambah PWA baseline untuk mobile ops.

## Prioritas Refactor Teknis

### Prioritas P0

- Hentikan coupling langsung business logic ke route backend Node lama.
- Ganti raw SQL kritikal di Node dengan prepared statement.
- Lindungi route internal Node.
- Pindahkan state queue dari memory process ke persistence.
- Tambah idempotency pada message dan webhook pipeline.

### Prioritas P1

- Rapikan auth API.
- Tambah structured logging.
- Tambah error taxonomy dan correlation ID.
- Tambah monitoring health service.

### Prioritas P2

- Rapikan UI, analytics, dan developer experience.
- Tambah testing matrix lintas PHP + Node.

## Definisi Production-Ready

Platform dianggap mendekati production-ready bila sudah memenuhi minimal:

- provider resmi Meta dapat dipakai untuk send message dan webhook status
- queue Redis stabil untuk blast dan scheduled jobs
- webhook idempotent dan tervalidasi
- auth/RBAC/rate limit aktif
- audit log tersedia
- structured logging tersedia
- health checks tersedia
- backup/restore dan deployment docs tersedia

## Dokumen Lanjutan Yang Perlu Dibuat

- `docs/architecture.md`
- `docs/api/openapi.yaml`
- `docs/deployment-cpanel.md`
- `docs/operations-runbook.md`
- `docs/backup-restore.md`
- `docs/security-hardening.md`

## Batch Implementasi Pertama Yang Direkomendasikan

Batch pertama paling aman dan bernilai tinggi untuk mulai dikerjakan adalah:

1. Pisahkan provider official dan legacy di level service contract.
2. Tambah internal auth untuk endpoint Node backend.
3. Refactor query raw Node prioritas tinggi.
4. Siapkan struktur webhook resmi Meta.
5. Siapkan queue Redis sebagai jalur default production.
