Skip to content

Latest commit

 

History

History
131 lines (101 loc) · 4.15 KB

README.md

File metadata and controls

131 lines (101 loc) · 4.15 KB

Loyalty Point Agent: Backend

Aplikasi pembelian pulsa dan paket data dengan integrasi payment gateway dan makanisme poin. Project ini menggunakan clean architecture dengan layer handler, repository, service, dll. Dilengkapi dengan CI/CD pipeline yang memudahkan proses pengembangan, dan arsitektur yang cukup efektif--horizontal autoscaling, staging dan production server, caching, dan service yang saling terpisah.

Dokumentasi RESTful API tersedia di Swagger.

Fitur

  • Registrasi dan autentikasi
  • Manajemen user
  • Manajemen produk (pulsa dan paket data)
  • Transaksi dengan payment gateway
  • Redeem pulsa, paket data, cashout, dan e-money
  • Manajemen FAQ
  • Verifikasi one-time password
  • Ganti password dan lupa password
  • Produk favorit
  • Feedback pelanggan
  • Analytics untuk dashboard

Requirements

  • Go v1.19
  • Docker 20.10.20
  • MySQL v8.0
  • Redis v7.0
  • Service account
  • Xendit secret
  • Mailjet key
  • Goose v3.7.0 (opsional)
  • Terraform v1.3.3 (opsional)

Terraform Variables

Contoh pengisian file terraform.tfvars.

project = ""
region  = ""
zone    = ""

env_vars_staging = [
  { "name" : "APP_ENV", "value" : "production" },

  { "name" : "HTTP_PORT", "value" : "8080" },

  { "name" : "DB_DRIVER", "value" : "" },
  { "name" : "DB_USER", "value" : "" },
  { "name" : "DB_PASS", "value" : "" },
  { "name" : "DB_NAME", "value" : "" },
  { "name" : "DB_HOST", "value" : "" },
  { "name" : "DB_PORT", "value" : "" },

  { "name" : "AUTH_SECRET", "value" : "" },
  { "name" : "AUTH_COST", "value" : "" },
  { "name" : "AUTH_EXP_HOURS", "value" : "" },

  { "name" : "BUCKET", "value" : "" },
  { "name" : "TYPE", "value" : "" },
  { "name" : "PROJECT_ID", "value" : "" },
  { "name" : "PRIVATE_KEY_ID", "value" : "" },
  { "name" : "PRIVATE_KEY", "value" : "" },
  { "name" : "CLIENT_EMAIL", "value" : "" },
  { "name" : "CLIENT_ID", "value" : "" },

  { "name" : "MAIL_HOST", "value" : "" },
  { "name" : "MAIL_PORT", "value" : "" },
  { "name" : "MAIL_USERNAME", "value" : "" },
  { "name" : "MAIL_PASSWORD", "value" : "" },

  { "name" : "MAILJET_API_KEY", "value" : "" },
  { "name" : "MAILJET_SECRET_KEY", "value" : "" },
  { "name" : "MAILJET_SENDER_EMAIL", "value" : "" },
  { "name" : "MAILJET_SENDER_NAME", "value" : "" },

  { "name" : "XENDIT_SECRET", "value" : "" },

  { "name" : "REDIS_ADDR", "value" : "" },
  { "name" : "REDIS_PORT", "value" : "" },
  { "name" : "REDIS_PASSWORD", "value" : "" },
  { "name" : "REDIS_DB", "value" : "" },

  { "name" : "REACT_APP_BASE_URL", "value" : "" },
]

env_vars_production = [
  { "name" : "APP_ENV", "value" : "production" },

  { "name" : "HTTP_PORT", "value" : "8080" },

  { "name" : "DB_DRIVER", "value" : "" },
  { "name" : "DB_USER", "value" : "" },
  { "name" : "DB_PASS", "value" : "" },
  { "name" : "DB_NAME", "value" : "" },
  { "name" : "DB_HOST", "value" : "" },
  { "name" : "DB_PORT", "value" : "" },

  { "name" : "AUTH_SECRET", "value" : "" },
  { "name" : "AUTH_COST", "value" : "" },
  { "name" : "AUTH_EXP_HOURS", "value" : "" },

  { "name" : "BUCKET", "value" : "" },
  { "name" : "TYPE", "value" : "" },
  { "name" : "PROJECT_ID", "value" : "" },
  { "name" : "PRIVATE_KEY_ID", "value" : "" },
  { "name" : "PRIVATE_KEY", "value" : "" },
  { "name" : "CLIENT_EMAIL", "value" : "" },
  { "name" : "CLIENT_ID", "value" : "" },

  { "name" : "MAIL_HOST", "value" : "" },
  { "name" : "MAIL_PORT", "value" : "" },
  { "name" : "MAIL_USERNAME", "value" : "" },
  { "name" : "MAIL_PASSWORD", "value" : "" },

  { "name" : "MAILJET_API_KEY", "value" : "" },
  { "name" : "MAILJET_SECRET_KEY", "value" : "" },
  { "name" : "MAILJET_SENDER_EMAIL", "value" : "" },
  { "name" : "MAILJET_SENDER_NAME", "value" : "" },

  { "name" : "XENDIT_SECRET", "value" : "" },

  { "name" : "REDIS_ADDR", "value" : "" },
  { "name" : "REDIS_PORT", "value" : "" },
  { "name" : "REDIS_PASSWORD", "value" : "" },
  { "name" : "REDIS_DB", "value" : "" },

  { "name" : "REACT_APP_BASE_URL", "value" : "" },
]