Skip to content

Overview Produk

Apa itu Aktiva Transaksional Email (ATE)?

Aktiva Transaksional Email adalah layanan SaaS transactional email relay milik Aktiva. Pelanggan (perusahaan) berlangganan paket layanan untuk dapat mengirim email transaksional (notifikasi, OTP, invoice, dsb.) melalui infrastruktur relay milik Aktiva, dengan reputasi pengiriman (SPF/DKIM/DMARC) yang sudah dikelola.

Repository ini (transaksional-email-be, nama internal package: aktiva) adalah backend/API dari produk tersebut. Ia bukan mail server itu sendiri — pengiriman email aktual dilakukan oleh ZoneMTA dan Zimbra (lihat Alur Pengiriman Email). Backend ini berperan sebagai control plane: mengelola pelanggan, domain, langganan, billing, kuota, provisioning relay account, dan reporting.

Status

Sistem ini sudah production dan melayani banyak paid customer. Implikasinya: stabilitas dan kontinuitas layanan adalah prioritas utama dalam setiap perubahan.

Peran sistem dalam bisnis

Backend ATE menjembatani beberapa kebutuhan bisnis sekaligus:

DomainTanggung jawab backend
Akuisisi & onboardingRegistrasi user, verifikasi email, pembuatan company, setup domain pengirim
ProvisioningMembuat relay account di Zimbra, mendaftarkan domain ke ZoneMTA, generate API token pengiriman
Billing & langgananMembuat estimate/invoice di Zoho Books, pembayaran via Xendit (sekali bayar & recurring), pencatatan pembayaran, faktur pajak
Quota & enforcementMenghitung kuota pengiriman per langganan, menangani over-quota (kelebihan kuota), suspend relay saat kuota habis/menunggak
Observability pelangganMenyimpan & menyajikan log pengiriman email (delivered/failed) dari Elasticsearch, laporan harian, ekspor CSV
NotifikasiMengirim email notifikasi (invoice, reminder, kuota, dll.) via SMTP/nodemailer + template Pug

Komponen utama (high-level)

Ringkasan teknologi

AspekTeknologiCatatan
RuntimeNode.js 14.xSudah End-of-Life — lihat Rekomendasi Migrasi
Web frameworkExpress 4+ express-async-errors
ORMSequelize 6Dialect PostgreSQL
DatabasePostgreSQLmysql2 ada di dependency tapi tidak dipakai untuk DB utama
Queue asyncDB-backed (Jobs table) + child processbull terpasang namun tidak digunakan
Email notifikasinodemailer + PugTemplate di views/mailing/
LoggingWinston + Morgan+ Elasticsearch untuk delivery log
AuthJWT (jsonwebtoken)Access + refresh token
ValidasiJoi
PembayaranXendit (xendit-node)
InvoicingZoho Books API
Object storageAWS SDKLinode Object Storage
Proses managerPM2ecosystem.config.js
CI/CDGitHub ActionsDeploy SSH + git pull + pm2 reload

Peta dokumentasi