Slurp
Find your fix
Overview
Slurp is a crowdsourced map for finding specific fountain drinks, canned specialty beverages, and energy drinks at real-world venues. It solves a narrow, specific problem: you want a Diet Dr Pepper fountain, a particular Celsius flavor, or an Olipop variety, and Google Maps, brand locators, and restaurant sites won't tell you which venue actually has it right now.
Built around zero friction. No accounts, no sign-ups. Anyone can submit a spot, confirm what others added, or flag what's no longer accurate.
How It Works
- Map: Opens to your location. Venues appear as brand-colored markers. Filter by brand or serve type (fountain, can, or bottle). Tap a marker to see exactly what's available there.
- Search: Text search with alias resolution. Search "Sierra Mist" and it finds "Starry." Results group by venue with distance. Listings unconfirmed for 90 or more days get an Unverified badge.
- Submit: Pick a venue via Google Places autocomplete, select drinks from the seeded catalog or add new ones, and choose the serve type. Chain templates let you batch-submit a full known menu for Chick-fil-A, Whataburger, Taco Bell, and other chains in one step.
- Confirm / Flag: One tap from any visitor. Per-device 24-hour cooldown per listing, with IP-based rate limits layered on top. Three flags auto-deactivates a listing.
Design Decisions
- Anonymous by design. Every action (submit, confirm, flag) works without an account. Identity is a device fingerprint UUID stored in localStorage. The trust system gives each device a score from 0 to 100, starting at 50, that moves with each action. It is trivially spoofable, and that is a deliberate tradeoff. An account wall would kill participation. The data self-corrects through volume.
- 90-day staleness model. Drink availability changes. Menus rotate, venues swap suppliers. Instead of treating submissions as permanent truth, listings degrade to "Unverified" after 90 days without a confirmation. The dataset stays self-healing without any admin intervention.
- Chain menu templates. Fast food chains serve predictable drink menus. Rather than requiring individual submissions for every Whataburger in town, a single template batch-submits the known menu. The accuracy tradeoff is acceptable: a regional chain's fountain lineup does not vary much location to location.
- MapLibre over Mapbox. Fully open-source, no usage-based billing, no API key in the browser. The map tile layer is swappable without touching application logic.
Tech Stack
Frontend
Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4
Maps
MapLibre GL JS 5, open-source with no usage billing
Database
PostgreSQL 16 + PostGIS 3.4
Backend
Next.js API routes, direct PostgreSQL via pg connection pool
External APIs
Google Places proxied server-side so the key never reaches the browser; GitHub for suggestion issues
PWA
Installable via next-pwa with manifest and icons
Infrastructure
Self-hosted on TrueNAS, Docker Compose, Cloudflare Tunnel for TLS termination