cl-swiggy-tix
SwiggyTix is a minimal-dependency, no-mobile-app event management service written in Common Lisp. It lets event hosts manage vendors and attendees, allows vendors to scan attendee badges at their booths, and gives hosts the lead-retrieval data captured by those scans.
Goals
- Run a small conference end-to-end without requiring attendees or vendors to install a mobile app — QR codes and a browser are enough.
- Keep the runtime dependency surface small: SBCL, Quicklisp,
and the FastCGI development kit, fronted by OpenBSD's
httpd(8). - Provide host-facing dashboards, vendor/rep workflows, and a lead-retrieval flow built from the badge scans collected during the event.
- Store data locally in LMDB so the service can be self-hosted and operated by a single person.
Architecture at a glance
- Web layer:
clack+ningleserved viacl-fastcgibehind OpenBSD'shttpd. - Storage:
lmdbfor persistence, with soft-deletion and audit logging on the roadmap. - Auth: JWT-based, with separate flows for attendees, vendor reps, and hosts (see AuthExplained and JWT-Introduction).
- Email:
cl-smtpfor transactional mail (registration, magic links, etc.). - Concurrency & crypto:
lparallel,ironclad,cl-base64. - Marketing site: the static tix.sw.gy/ tree is the public landing site for the service.
Where to look
- src/ — the Lisp system
(
data-model,auth, route handlers per actor: attendee / host / vendor / rep / interaction / ops / challenge, pluscorefor the entry point). - documentation/ —
design notes on auth, JWT, QR generation, LMDB usage, htmx, and
the operating environment; also the
swtx.8man page. - diagrams/ — mscgen
sequence diagrams and drawio architecture sketches
(
make build-diagrams). - tools/ — shell scripts for hitting the API: bulk-create vendors / attendees / reps, per-actor CRUD, and JWT/auth-code helpers used during demos and local testing.
- packaging/ and files/ — OpenBSD service bits (httpd config snippet, doas entries, install layout) used by the Makefile.
- README.md — setup and operating instructions.