{"id":24801277,"url":"https://github.com/dimasnuryadin/express-topupgame","last_synced_at":"2026-04-11T06:06:01.010Z","repository":{"id":226740408,"uuid":"769150863","full_name":"DimasNuryadin/Express-TopUpGame","owner":"DimasNuryadin","description":"A browser-based game top up application","archived":false,"fork":false,"pushed_at":"2024-04-08T21:00:06.000Z","size":1879,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T04:22:36.195Z","etag":null,"topics":["backend","express-js","mongodb"],"latest_commit_sha":null,"homepage":"https://express-top-up-game.vercel.app","language":"EJS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DimasNuryadin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-08T12:57:10.000Z","updated_at":"2025-01-08T06:39:08.000Z","dependencies_parsed_at":"2024-04-08T22:33:42.277Z","dependency_job_id":null,"html_url":"https://github.com/DimasNuryadin/Express-TopUpGame","commit_stats":null,"previous_names":["dimasnuryadin/express-topupgame"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DimasNuryadin%2FExpress-TopUpGame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DimasNuryadin%2FExpress-TopUpGame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DimasNuryadin%2FExpress-TopUpGame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DimasNuryadin%2FExpress-TopUpGame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DimasNuryadin","download_url":"https://codeload.github.com/DimasNuryadin/Express-TopUpGame/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245394755,"owners_count":20608123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","express-js","mongodb"],"created_at":"2025-01-30T04:20:16.029Z","updated_at":"2025-12-30T23:26:36.915Z","avatar_url":"https://github.com/DimasNuryadin.png","language":"EJS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧱 Express-TopUpGame\n\n**Express-TopUpGame** adalah backend API untuk proyek **Top Up Game** dalam kelas **BuildWithAngga**.  \nAplikasi ini dibangun dengan **Express.js** dan **MongoDB**, berfungsi untuk menangani autentikasi, data game, transaksi, serta komunikasi data ke frontend **[Next-TopUpGame](https://github.com/DimasNuryadin/Next-TopUpGame)**.\n\n---\n\n## 🏗️ Teknologi \u0026 Arsitektur\n\nProyek ini dibangun dengan stack berikut:\n\n- **Express.js** — framework backend berbasis Node.js  \n- **MongoDB + Mongoose** — database dan ODM  \n- **JWT (JSON Web Token)** — autentikasi pengguna  \n- **bcrypt.js** — enkripsi password  \n- **dotenv** — konfigurasi environment  \n- **CORS \u0026 Morgan** — keamanan \u0026 logging API  \n\n---\n\n## 📁 Struktur Direktori\n\n```\nsrc/\n ├─ config/\n ├─ controllers/\n ├─ middlewares/\n ├─ models/\n ├─ routes/\n ├─ utils/\n └─ server.js\n.env.example\npackage.json\n```\n\nPenjelasan singkat:\n\n- `config/` — koneksi database \u0026 konfigurasi dasar  \n- `controllers/` — logika utama API (auth, top-up, transaksi)  \n- `middlewares/` — middleware autentikasi dan validasi  \n- `models/` — skema Mongoose untuk data user \u0026 game  \n- `routes/` — definisi endpoint API  \n- `utils/` — helper seperti error handling \u0026 response standar  \n- `server.js` — entry point aplikasi  \n\n---\n\n## 🚀 Instalasi \u0026 Menjalankan Server\n\n### Prasyarat\n- Node.js (versi 18+ disarankan)  \n- MongoDB (lokal atau Atlas)  \n- npm / yarn  \n\n### Langkah\n\n1. Clone repository:\n\n   ```bash\n   git clone https://github.com/DimasNuryadin/Express-TopUpGame.git\n   cd Express-TopUpGame\n   ```\n\n2. Install dependencies:\n\n   ```bash\n   npm install\n   # atau\n   yarn install\n   ```\n\n3. Buat file `.env` dan isi seperti contoh berikut:\n\n   ```bash\n   MODE=dev\n   SERVICE_NAME=express-topupgame\n   MONGO_URL=mongodb://127.0.0.1:27017/db_name\n   JWT=your_jwt_secret\n   ```\n\n4. Jalankan server development:\n\n   ```bash\n   npm run dev\n   # atau\n   yarn dev\n   ```\n\n5. Server berjalan di **http://localhost:4000** (atau sesuai PORT di `.env`).\n\n---\n\n## 🔗 Integrasi dengan Frontend\n\nFrontend: [Next-TopUpGame](https://github.com/DimasNuryadin/Next-TopUpGame)\n\nGunakan variabel berikut di frontend:\n\n```\nNEXT_PUBLIC_API=https://express-top-up-game.vercel.app\nNEXT_PUBLIC_IMG=https://express-top-up-game.vercel.app/uploads\n```\n\nPastikan **CORS** aktif agar request dari domain frontend dapat diterima oleh backend.\n\n---\n\n## 📚 Endpoint Utama (Contoh)\n\n| Method | Endpoint | Deskripsi |\n|--------|-----------|-----------|\n| `POST` | `/api/v1/auth/signup` | Registrasi pengguna |\n| `POST` | `/api/v1/auth/signin` | Login pengguna \u0026 JWT token |\n| `GET` | `/api/v1/games` | Mendapatkan daftar game |\n| `GET` | `/api/v1/categories` | Mendapatkan kategori game |\n| `POST` | `/api/v1/transactions` | Membuat transaksi top up |\n| `GET` | `/api/v1/transactions/history` | Melihat riwayat transaksi |\n\n---\n\n## 🧩 Middleware\n\nMiddleware penting yang digunakan:\n\n- `authMiddleware.js` — verifikasi JWT  \n- `errorHandler.js` — penanganan error global  \n- `validateInput.js` — validasi input pengguna  \n\n---\n\n## 📦 Deployment\n\nAplikasi dapat dideploy ke **Vercel**, **Render**, **Railway**, atau server Node.js lain.  \nUntuk mode produksi:\n\n```bash\nnpm run build\nnpm start\n```\n\nPastikan `.env` disesuaikan dengan konfigurasi produksi (database \u0026 JWT secret).\n\nLink deployment:  \n🔗 [https://express-top-up-game.vercel.app](https://express-top-up-game.vercel.app)\n\n---\n\n## ✅ Fitur Utama\n\n- Autentikasi pengguna dengan JWT  \n- Manajemen data game \u0026 kategori  \n- Transaksi top up \u0026 riwayat pengguna  \n- Integrasi penuh dengan frontend Next.js  \n- Struktur modular \u0026 mudah dikembangkan  \n\n---\n\n## 📸 Screenshoot\n\u003cimg src=\"https://res.cloudinary.com/dgharj3cy/image/upload/v1736314851/img_project101_ckmeu7.png\" alt=\"StoreGG Backend\" /\u003e\n\n---\n\n## ℹ️ Catatan \u0026 Tips\n\n- Pastikan database MongoDB berjalan sebelum menjalankan server.  \n- Gunakan **Postman** untuk menguji endpoint API.  \n- Simpan JWT secret dengan aman dan jangan commit ke repo publik.  \n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimasnuryadin%2Fexpress-topupgame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimasnuryadin%2Fexpress-topupgame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimasnuryadin%2Fexpress-topupgame/lists"}