back to the projects

Barathon

Rate the bar from the bar. The map colors itself in.

Barathon: a dark map of Nantes dotted with bar grades, next to two phones showing a bar card and the bar ranking
Barathon

Overview

Barathon is a bar guide for my group of friends, built for the phone because you rate the bar while you're still sitting in it. You pick it from the five closest bars, search for it, or drop a pin for one OpenStreetMap doesn't know, then score the place, the beer and the night. Each bar shows up as a colored pill on a dark map, with a ranking view and filters for terrace, ambiance and pint price. There are no accounts, a first name is enough, and search engines never see it.

Why I built this

My friends and I go to a lot of bars, and I wanted all of us to grade them and see the verdict on one map. It had to work from a phone, in the bar, without anyone creating an account.

Features

  • One visit, three blocks. A visit scores the place (looks, location, terrace), the beer (choice, quality) and the night, which is the only required grade. The bar's grade averages the three blocks at equal weight, and your mood emoji sits next to the visit without ever counting.
  • Find the bar in one tap. "Around me" lists the five bars within 200 m, from OpenStreetMap and the bars already rated, with duplicates merged. Otherwise search by name, or drop a pin for a bar OSM doesn't know; before creating it, the app looks for a known bar within 50 m and asks if you meant that one.
  • The map is the guide. A full-screen dark map with one pill per bar colored by its grade, a ranking view, and filters for terrace, ambiance (chill, festive, cosy, match night…) and max pint price. Each bar page adds the block grades, the most cited ambiances, the average pint price and every visit.
  • No accounts, still editable. A first name is enough and the browser remembers it. Posting a visit returns a secret token kept in the browser, so you can edit or delete your own visit later; the server only keeps its hash. A honeypot field and a per-IP rate limit stop spam, and IPs are never stored.
  • Barathoniens leaderboard. Friends are ranked by distinct bars, then by visits, with "Inès", "ines" and "INES " counted as one person. An admin page renames, moves, deletes or merges duplicate bars.
Three Barathon phones: the rating form with 1 to 5 buttons, a bar page with its place, beer and night grades, and the Barathoniens leaderboard
the form, a bar page, the leaderboard

Tech stack

Frontend

SvelteKit Svelte 5 TypeScript MapLibre GL JS OpenFreeMap

Backend

Node 24 SQLite better-sqlite3 Photon (OSM) Vitest

Infrastructure

Docker Compose Caddy GitHub Actions Cloudflare R2 backups