Logo Lanfrica

Bemkin/vip-lounge-engine

Domain:

digital infrastructure

Record type:

software
Creator:
Bem
Host:
NightlifeET is a full-stack Web Application and Telegram Mini App (TMA) built for Ethiopia's high-end nightlife ecosystem. It combines real-time table concurrency locking, split-payment venue checkouts via Chapa, smart contract escrow protection for DJ bookings, and automated SMS QR pass delivery via AfroMessage. # ✦ NightlifeET — VIP Lounge Table SaaS & Escrow DJ Booking Engine > **NightlifeET** is a full-stack Web Application and Telegram Mini App (TMA) built for Ethiopia's high-end nightlife ecosystem. It combines real-time table concurrency locking, split-payment venue checkouts via Chapa, smart contract escrow protection for DJ bookings, and automated SMS QR pass delivery via AfroMessage. --- ## 🌟 Architectural Highlights ```mermaid graph TD User([Consumer / Telegram Mini App]) -->|1. Select Table & Reserve| NextServer[Next.js 14 App Router] NextServer -->|2. SET NX EX 300 Concurrency Lock| Redis[(Upstash Redis)] NextServer -->|3. POST /v1/transaction/initialize| ChapaAPI[Chapa Payment Gateway] ChapaAPI -->|4. Redirect to Hosted Checkout| User ChapaAPI -->|5. HMAC SHA256 Webhook Event| WebhookRoute[POST /api/webhooks/chapa] WebhookRoute -->|6. CONFIRMED Status & DB Update| Supabase[(Supabase PostgreSQL)] WebhookRoute -->|7. Send Pass URL SMS| AfroMessage[AfroMessage SMS API] AfroMessage -->|8. SMS with QR Pass Link| User VenueManager([Venue Manager]) -->|9. Sign-off Gig Completion| EscrowRelease[POST /api/escrow/release] EscrowRelease -->|10. POST /v1/transfers| ChapaAPI ChapaAPI -->|11. Payout Performance Fee| DJBank[(DJ Bank Account / CBE)] ``` --- ## 🚀 Key Features ### 1. ⏱ 5-Minute Concurrency Lock (`Upstash Redis`) - Prevents double-booking during table checkout using `SET lock:table:${id}:${date} ${uuid} NX EX 300`. - Automatic TTL expiration after 300 seconds to release uncompleted reservations. - Atomic check-and-delete via Lua scripts ensures only the lock owner can release it. ### 2. 💳 Subaccount Split Payments & Webhooks (`Chapa API`) - Initializes table deposits via `POST /v1/transaction/initialize` with split payment payloads (`split_type: "percentage"`, `split_value: 0.90`). - Webhook route (`POST /api/webhooks/chapa`) verifies `x-chapa-signature` using HMAC SHA256. - Auto-updates reservation status from `PENDING_PAYMENT` to `CONFIRMED`. # …