Waffle is the production-ready tool in the Project Syrup family. No timers. No randomizers. No payment processing. Just a clean, real-time board where buyers claim spots and admins track payments — built to run inside Instagram's in-app browser, where your buyers already are.

v0.1.18 Latest Release
MIT License
Go Backend
PG 16 Database

What is a waffle?

A waffle is a raffle-style drop popular on Instagram. A seller creates a listing with a fixed number of numbered spots at a set price. Buyers claim spots by entering their Instagram handle. The seller collects payments out-of-band (DM, CashApp, Venmo), then draws a winner from the paid spots.

Waffle replaces the copy-paste spot lists, frantic DM management, and manual tracking that sellers previously did by hand — with a real-time, mobile-first web app that works right inside Instagram's browser.

Project Syrup context

Waffle is one of two apps under the Project Syrup umbrella:

AppStatusWhat it does
Waffle — The Waffle Maker Stable Production-ready live spot management for Instagram waffle drops. This wiki.
Wafflerace Experimental Animated waffle boat race tool for dramatic, high-suspense random selection.

Both apps are open source under MIT and self-hosted via Docker. This wiki covers Waffle only.

How it works

  1. Admin creates a waffle — sets title, price per spot, total spots, and links to Instagram posts showing the item.
  2. Buyers claim spots — tap available spots, enter their Instagram handle. Done in under 10 seconds, on mobile, inside the IG app.
  3. Admin marks paid — as payments arrive via DM, CashApp, or Venmo, the admin marks each spot paid from the manage view.
  4. Winner drawn — admin enters the winning spot number after an external drawing.
  5. Everyone sees results — a WebSocket broadcast updates all connected clients instantly. No refresh needed.

Tech Stack

LayerTechnology
FrontendGo server-side templates + Tailwind CSS + DaisyUI (syrup theme)
BackendGo (Gin framework) + WebSocket hub
DatabasePostgreSQL 16 with auto-run migrations (pgx driver)
DevOpsDocker Compose, multi-stage builds, GHCR image registry
PWAWeb App Manifest, service worker, offline caching, installable
SecurityJWT auth, bcrypt passwords, rate limiting, brute-force lockout, audit log

Project Status

PhaseStatusDescription
1–6Core waffle CRUD, spot claims, WebSocket live updates, admin dashboard, buyer stats, mobile polish
7Multi-admin RBAC (super_admin / admin / waffle_manager), password reset, admin management
8PWA service worker, offline caching, installable app shell
9DaisyUI migration — syrup/Halloween theme, amber primary palette
10Production hardening — structured logging, health probes, rate limiting, graceful shutdown
11Security polish — full audit log, bcrypt password policy, login lockout, destructive confirmations
12Bugfix release — archived filters, buyer stats recalculation, password reset, accessibility
13Users registry with backfill, duplicate lockout fix

Quick Links