Jackpot – Other software Software | Vibe96

Other software

Jackpot

Source code included

Prize-draw e-commerce platform where product purchases become raffle tickets; ASP.NET Core + Flutter + SQL Server.

Built by Chow Studio Updated 23 Oct 2026 102,174 lines of code

Open live demo Built withClaude Code

Why Jackpot

What makes it better
than the alternatives

  1. 01

    Cryptographically random draw engine

    Winners are selected with System.Security.Cryptography.RandomNumberGenerator, auditable in the admin panel

  2. 02

    Multi-country pricing and prizes

    Campaigns support per-country prices, currencies (AED, INR, SAR) and prize lists, with city-level member addresses

  3. 03

    Wallet system with top-up and credit

    Members can load funds via Stripe, use wallet balance at checkout, and receive refunds or credits from the operator

  4. 04

    Demo payment mode

    Test the entire checkout flow with Stripe-style test cards (no real Stripe account needed) before going live

  5. 05

    Single-transaction checkout

    Cart validation, payment verification, ticket allocation and wallet debit happen in one SQL transaction to prevent overselling

Mobile App (Flutter)

  • Animated splash screen
  • country selector (prices and currency follow the choice)
  • Campaign browsing: running
  • closing soon
  • coming soon
  • popular
  • sold out; prize details
  • countdown
  • sold progress
  • Guest cart that merges into the account at sign-in; wishlist
  • Checkout with wallet or card (Stripe Payment Sheet)
  • option to donate the product
  • Tickets
  • orders
  • wallet with top-up
  • notifications inbox
  • Sign up
  • sign in
  • password reset by emailed code
  • profile
  • addresses
  • delete account
  • Contact us (messages reach admin panel)
  • FAQ
  • how it works
  • terms and privacy pages loaded from server
  • Colours and branding set from admin panel (light or dark theme)
  • loaded at start-up

Admin Panel (Web)

  • Dashboard: totals
  • 12-month ticket chart
  • revenue per currency
  • recent orders and winners
  • Campaigns with per-country prices and prizes
  • Arabic text
  • images
  • ticket lists and Draw winners button
  • Products
  • categories
  • winners
  • members (wallet credit
  • enable/disable)
  • orders (status changes)
  • Reports: sales
  • campaigns
  • members
  • wallet by day/week/month and by country; export to CSV
  • Excel or print
  • Notifications to one member or everyone; member queries (contact messages); website and app pages with rich-text editor
  • Admin users; settings for countries
  • currencies
  • cities
  • Appearance settings: colours
  • font
  • logo
  • title
  • app colours (JSON theme loaded by mobile app)
  • Email (SMTP) and Payments (Stripe keys or demo mode) configuration
  • Data reset button (wipes all data
  • reloads demo data from database/seed.sql
  • Built-in product tour; optional public live demo sign-in for showcase servers

REST API

  • Versioned JSON API (/api/v1) for mobile app
  • /api/admin for integrations
  • JWT authentication for members and admins (separate roles)
  • tokens issued by AuthService
  • ProblemDetails errors
  • request validation with FluentValidation
  • rate limiting on auth endpoints
  • Interactive API reference at /scalar
  • OpenAPI spec at /openapi/v1.json
  • Endpoints: Store (public campaigns
  • products)
  • Account (member profile
  • orders
  • wallet
  • tickets)
  • Admin (campaigns
  • members
  • orders
  • reports
  • settings)
  • Website (HTML pages)

Catalog & Campaigns

  • Campaigns with status (Draft
  • Active
  • Closed
  • Drawn)
  • start/end dates
  • ticket limit
  • per-country prices and prizes
  • Products with images
  • categories
  • stock tracking
  • per-country prices
  • Campaign prizes: product
  • quantity
  • winner count
  • per-country assignment
  • Arabic text support for campaign and product descriptions
  • Campaign ticket lists: all tickets
  • winners
  • member tickets
  • Sold-out detection
  • closing-soon countdown
  • coming-soon display

Sales & Checkout

  • Cart: guest cart (by GuestId)
  • member cart
  • merge guest cart at sign-in
  • Checkout: wallet balance
  • Stripe card payment (Payment Intent)
  • demo card payments (test mode)
  • Order creation in one SQL transaction: validate cart
  • verify payment
  • allocate tickets
  • debit wallet
  • clear cart
  • Order statuses: Pending
  • Confirmed
  • Cancelled
  • Refunded
  • Ticket allocation: one ticket per product unit
  • linked to order and member
  • Wallet top-up via Stripe or demo payment
  • wallet credit by admin
  • refunds to wallet

Member Management

  • Member registration with email
  • password (PBKDF2-SHA512)
  • country
  • city
  • optional phone and gender
  • Sign-in with email and password
  • JWT token issued (30-day expiry for members)
  • Password reset: emailed 6-digit OTP (15-minute expiry)
  • hashed in database
  • Profile: first name
  • last name
  • email
  • phone
  • gender
  • country
  • city
  • Addresses: multiple addresses per member
  • default address flag
  • Member status: Active
  • Disabled (admin can disable accounts)
  • Device ID tracking for push notifications (not yet implemented)
  • Delete account: member can request deletion (not implemented in admin panel)

Draws & Winners

  • Draw winners button in admin panel (campaign must be Closed)
  • Cryptographically random selection: System.Security.Cryptography.RandomNumberGenerator.GetInt32
  • One winner per prize
  • no duplicates within a campaign
  • Winner records: member
  • campaign
  • prize
  • ticket number
  • draw date
  • Winners list in admin panel and mobile app
  • Campaign status changes to Drawn after draw completes

Reports & Analytics

  • Sales report: revenue
  • orders
  • tickets by day/week/month and by country; bar chart
  • export to CSV/Excel
  • Campaigns report: tickets sold
  • revenue
  • winners by campaign and by country
  • Members report: new members
  • total members by day/week/month and by country
  • Wallet report: top-ups
  • credits
  • debits
  • balance by day/week/month and by country
  • Dashboard: 12-month ticket chart
  • revenue per currency
  • recent orders and winners

Integrations & Settings

  • Email (SMTP): host
  • port
  • username
  • password (encrypted with Data Protection)
  • from address
  • from name
  • Stripe: secret key (encrypted)
  • publishable key (sent to mobile app with each payment)
  • Demo payments: test mode with Stripe-style test cards (4242 4242 4242 4242
  • etc.)
  • no real Stripe account needed
  • Countries
  • currencies
  • cities: admin can add/edit/delete
  • Appearance: primary colour
  • secondary colour
  • font
  • logo
  • title
  • app theme JSON (loaded by mobile app)
  • Data reset: wipes all data except settings
  • reruns database/seed.sql (optional
  • disabled by default)

Security & Infrastructure

  • JWT tokens: HS256
  • configurable signing key
  • separate expiry for members (30 days) and admins (8 hours)
  • Password hashing: PBKDF2-SHA512
  • 100
  • 000 iterations
  • 32-byte salt
  • Role-based access: Member policy for /api/v1/me and /api/v1/checkout
  • Admin policy for /api/admin and /admin
  • Rate limiting: 20 requests per minute on auth endpoints (sign-in
  • registration
  • password reset
  • contact)
  • SQL injection prevention: hand-written SQL with Dapper parameters only
  • no concatenation
  • Payment verification: amount
  • currency
  • owner
  • purpose checked on server; each Payment Intent used once
  • Secrets encrypted: SMTP password and Stripe secret key stored encrypted with Data Protection
  • Database initialization: creates database and runs schema.sql and seed.sql on first start (optional)
  • Health checks: /health endpoint with database connectivity check

Quality report

Manually reviewed

89/ 100

Automated audit score

✓ Passed the audit

Passed the audit and a manual review.
Audit run: 23 Oct 2026
Reviewed by Vibe96 staff, Dubai.

Security92
Code structure72
Docs & completeness100
Dependency health85
Build & deploy92
Reviewer notes (4 minor)

Dependencies mostly current; flutter packages slightly outdated, no critical vulnerabilities; weak default admin password and example secrets need attention before production; strong authentication and role checks; minor ownership gaps on read endpoints; moderate code duplication and some oversized files; structure generally sound but needs refactoring. None of these stop the software from working; the developer has been told and improvements come in a future update.

Versions & updates

1.0.0
First release23 Oct 2026✓ Reviewed & audited

No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.

Quality report

What you get

  • </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
  • ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
  • ↻One year of updatesEvery new version the builder publishes, free for 12 months.
  • ♧30 days of supportInstallation and defect support through Vibe96 tickets.
$139Single-site licence Details