{"id":50389467,"url":"https://github.com/nichsedge/ngantriwoy","last_synced_at":"2026-05-30T17:30:43.510Z","repository":{"id":358589824,"uuid":"1242014871","full_name":"nichsedge/ngantriwoy","owner":"nichsedge","description":"Sistem antrean cerdas \u0026 real-time untuk UMKM Indonesia. Dibuat dengan Next.js 15, Tailwind v4, Drizzle ORM, \u0026 PostgreSQL.","archived":false,"fork":false,"pushed_at":"2026-05-18T03:54:18.000Z","size":446,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-18T05:53:00.581Z","etag":null,"topics":["bun","drizzle-orm","indonesia","motion","nextjs","postgresql","queue-management","react","realtime","tailwind-css","typescript","umkm"],"latest_commit_sha":null,"homepage":"https://github.com/nichsedge/ngantriwoy","language":"TypeScript","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/nichsedge.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-18T03:53:01.000Z","updated_at":"2026-05-18T03:54:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nichsedge/ngantriwoy","commit_stats":null,"previous_names":["nichsedge/ngantriwoy"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/nichsedge/ngantriwoy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nichsedge%2Fngantriwoy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nichsedge%2Fngantriwoy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nichsedge%2Fngantriwoy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nichsedge%2Fngantriwoy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nichsedge","download_url":"https://codeload.github.com/nichsedge/ngantriwoy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nichsedge%2Fngantriwoy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33703064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bun","drizzle-orm","indonesia","motion","nextjs","postgresql","queue-management","react","realtime","tailwind-css","typescript","umkm"],"created_at":"2026-05-30T17:30:42.773Z","updated_at":"2026-05-30T17:30:43.504Z","avatar_url":"https://github.com/nichsedge.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"1200\" height=\"475\" alt=\"GHBanner\" src=\"https://github.com/user-attachments/assets/0aa67016-6eaf-458a-adb2-6e31a0763ed6\" /\u003e\n\n# 🚀 ANTRIAN KITA (ngantriwoy)\n\n### *Sistem Antrean Cerdas, Elegan, dan Real-Time untuk UMKM Indonesia*\n\n[![Next.js](https://img.shields.io/badge/Next.js-15.1.0-black?style=for-the-badge\u0026logo=nextdotjs)](https://nextjs.org/)\n[![React](https://img.shields.io/badge/React-19.0.0-61DAFB?style=for-the-badge\u0026logo=react\u0026logoColor=black)](https://react.dev/)\n[![Tailwind CSS v4](https://img.shields.io/badge/Tailwind_CSS_v4-38B2AC?style=for-the-badge\u0026logo=tailwindcss)](https://tailwindcss.com/)\n[![Drizzle ORM](https://img.shields.io/badge/Drizzle_ORM-latest-C5F74F?style=for-the-badge\u0026logo=drizzle\u0026logoColor=black)](https://orm.drizzle.team/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-336791?style=for-the-badge\u0026logo=postgresql)](https://www.postgresql.org/)\n[![Bun](https://img.shields.io/badge/Bun-Runtime-black?style=for-the-badge\u0026logo=bun)](https://bun.sh/)\n\n\u003c/div\u003e\n\n---\n\n## 🌟 Tentang Antrian Kita\n\n**Antrian Kita** (atau repository **ngantriwoy**) adalah platform manajemen antrean *real-time* berbasis web yang dirancang khusus untuk memodernisasi operasional bisnis pelaku **UMKM di Indonesia** (seperti *Barbershop*, Salon, Rumah Makan, Klinik, dll). \n\nDengan antarmuka yang sangat premium, minimalis, dan animasi mikro yang sangat mulus menggunakan **Motion (Framer Motion)**, sistem ini memecahkan masalah antrean fisik yang menumpuk. Pelanggan dapat memantau status antrean secara *live* melalui ponsel mereka sendiri dan bahkan menyimpannya ke WhatsApp tanpa perlu menunggu lama di lokasi.\n\n---\n\n## ✨ Fitur Utama\n\n*   📱 **Kiosk Pengambil Tiket (Kiosk Mode)**: Halaman khusus tablet/HP di toko bagi pelanggan untuk mengambil tiket antrean secara mandiri dengan input catatan pesanan opsional.\n*   👑 **Panel Pengelola Real-Time (Admin Live Control)**: Kontrol penuh bagi pemilik bisnis untuk memanggil antrean berikutnya, melompati (*skip*), menginput pelanggan *walk-in* secara manual, dan mereset antrean harian.\n*   🖥️ **Layar Monitor Publik (Display Mode)**: Halaman monitor interaktif untuk dipajang di TV toko, menampilkan nomor yang sedang dilayani, sisa antrean, dan estimasi waktu tunggu secara *live*.\n*   💬 **WhatsApp Share Integration**: Tombol cepat bagi pelanggan untuk langsung membagikan/menyimpan tiket antrean ke WhatsApp agar tidak lupa nomor antrean mereka.\n*   🔒 **Secure Authentication**: Sistem login yang aman untuk pemilik toko menggunakan **NextAuth.js v5 Beta** dan integrasi **Google Login**.\n*   ⚡ **Modern Stack \u0026 Performance**: Dibangun menggunakan **Next.js 15 App Router**, **React 19**, **Tailwind CSS v4**, **Drizzle ORM**, **PostgreSQL**, dan dijalankan dengan **Bun runtime** yang super cepat.\n\n---\n\n## 📐 Alur Sistem \u0026 Arsitektur\n\nBerikut adalah gambaran bagaimana data antrean mengalir secara real-time antara Pelanggan, Kiosk Toko, Monitor Publik, dan Panel Pengelola Toko:\n\n```mermaid\nsequenceDiagram\n    autonumber\n    actor Pelanggan as Pelanggan (Customer)\n    actor Admin as Admin Toko (Owner)\n    participant Kiosk as Mesin Kiosk / HP Kiosk\n    participant DB as PostgreSQL (Drizzle)\n    participant Monitor as Layar Monitor Utama (Display)\n\n    Pelanggan-\u003e\u003eKiosk: Ambil Tiket Antrean \u0026 Masukkan Catatan (Opsional)\n    Kiosk-\u003e\u003eDB: Simpan Tiket Baru (Status: WAITING)\n    DB--\u003e\u003eKiosk: Kembalikan Nomor Tiket \u0026 Opsi Kirim WA\n    DB--\u003e\u003eMonitor: Sinkronisasi Sisa Antrean \u0026 Estimasi Waktu (Real-time)\n    Admin-\u003e\u003eDB: Klik \"Panggil Antrean\" (Next Queue)\n    DB--\u003e\u003eMonitor: Mainkan Suara Panggilan \u0026 Update Layar Monitor (Live)\n    Admin-\u003e\u003eDB: Selesaikan Pelayanan (SERVED) / Lewati (SKIPPED)\n```\n\n---\n\n## 🛠️ Panduan Memulai (Local Development)\n\n### 📋 Prasyarat\nSebelum memulai, pastikan Anda telah menginstal software berikut di komputer Anda:\n*   [Node.js](https://nodejs.org/) (atau direkomendasikan menggunakan [Bun](https://bun.sh/) untuk performa maksimal)\n*   [Docker](https://www.docker.com/) (untuk menjalankan PostgreSQL container secara instan)\n*   Google OAuth Client Credentials (jika ingin mengaktifkan Google Login)\n\n---\n\n### 🚀 Langkah Instalasi\n\n1.  **Clone Repository**\n    ```bash\n    git clone https://github.com/nichsedge/ngantriwoy.git\n    cd ngantriwoy\n    ```\n\n2.  **Siapkan Environment Variables**\n    Salin file `.env.example` menjadi `.env.local`:\n    ```bash\n    cp .env.example .env.local\n    ```\n    Buka `.env.local` dan lengkapi konfigurasi berikut:\n    ```env\n    APP_URL=\"http://localhost:3000\"\n    DATABASE_URL=\"postgresql://postgres:postgres@localhost:5432/postgres\"\n    AUTH_SECRET=\"BUAT_SECRET_RANDOM_DISINI\"\n    AUTH_GOOGLE_ID=\"google-client-id-anda.apps.googleusercontent.com\"\n    AUTH_GOOGLE_SECRET=\"google-client-secret-anda\"\n    ```\n\n3.  **Inisialisasi Database**\n    Kami menyediakan skrip otomatis untuk menyalin *environment*, menjalankan container PostgreSQL di Docker, dan melakukan sinkronisasi schema menggunakan Drizzle ORM:\n    ```bash\n    # Berikan izin eksekusi jika diperlukan\n    chmod +x scripts/init-db.sh\n    \n    # Jalankan inisialisasi database\n    ./scripts/init-db.sh\n    ```\n\n4.  **Jalankan Aplikasi dalam Mode Development**\n    Gunakan Bun atau npm untuk menjalankan dev server:\n    ```bash\n    # Menggunakan Bun (Sangat Direkomendasikan)\n    bun run dev\n    \n    # Atau menggunakan npm\n    npm run dev\n    ```\n    Buka [http://localhost:3000](http://localhost:3000) pada browser Anda untuk melihat aplikasi berjalan secara langsung.\n\n---\n\n## 📁 Struktur Direktori\n\n```text\nngantriwoy/\n├── app/                  # Next.js App Router (Layout \u0026 Pages)\n│   ├── admin/            # Panel Kontrol Pengelola Toko\n│   ├── api/              # Endpoint API (Shops, Tickets, Auth, dll.)\n│   ├── display/          # Halaman Monitor Antrean Publik (TV Mode)\n│   ├── login/            # Halaman Autentikasi Pengguna \u0026 Google OAuth\n│   ├── s/                # Halaman Dinamis Toko (/s/[shopId])\n│   ├── take/             # Kiosk Pengambil Tiket Mandiri\n│   ├── globals.css       # Custom styling modern \u0026 Tailwind CSS v4 setup\n│   └── page.tsx          # Halaman Landing utama (Antrian Kita)\n├── lib/                  # Kode Utility, Koneksi DB, \u0026 Logika Utama\n│   ├── auth.ts           # NextAuth.js Configuration (v5 Beta)\n│   ├── db.ts             # Drizzle ORM Database Connection\n│   ├── locales.ts        # Bahasa / Dictionary (Indonesia \u0026 Inggris)\n│   ├── queue-service.ts  # Layanan \u0026 Logika Operasional Antrean\n│   └── schema.ts         # Database Schema (Shops, Users, Tickets, dll.)\n├── scripts/              # Helper Scripts (init-db.sh)\n├── drizzle.config.ts     # Konfigurasi Drizzle ORM\n├── next.config.ts        # Konfigurasi Next.js\n├── tailwind.config.ts    # Konfigurasi Tailwind CSS v4\n├── package.json          # File dependencies \u0026 script runner\n└── Dockerfile            # Containerization file untuk deployment cepat\n```\n\n---\n\n## 🔒 Lisensi\n\nProyek ini dilisensikan di bawah lisensi MIT. Silakan gunakan, modifikasi, dan distribusikan untuk membantu kemajuan UMKM di sekitar Anda!\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eDibuat dengan ❤️ oleh \u003cb\u003eNichsedge\u003c/b\u003e untuk Indonesia yang bebas antrean berantakan.\u003c/sub\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnichsedge%2Fngantriwoy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnichsedge%2Fngantriwoy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnichsedge%2Fngantriwoy/lists"}