Discover a place for lunch with your team in seconds. Swipe to vote, see the live leaderboard, and chat in real time. Built for speed, fun, and mobile.
- Real-time rooms: join a room and see live updates via
socket.io - Swipe-style voting: quickly vote OUI/NON on restaurants
- Live leaderboard: top picks update instantly
- Built‑in chat: lightweight, mobile-first chat with notifications
- Noon cutoff: automatic end-of-vote at 12:00 (production)
- Polished UI: Tailwind v4, glassmorphism, subtle animations with Framer Motion
Prereqs: Node 18+ and pnpm.
pnpm install
pnpm dev
# Next.js dev server on :3000 and Socket.IO server on :3001Open http://localhost:3000 and start a room. A local Socket.IO server runs alongside the app in dev.
Create .env.local from env.example:
cp env.example .env.localNEXT_PUBLIC_SOCKET_URL– Socket.IO server URL used in production.- In development it falls back to
http://localhost:3001.
- In development it falls back to
pnpm dev– Next.js + Socket.IO dev servers (Turbopack)pnpm build– Next.js production buildpnpm run server:build– compile Socket.IO server (TypeScript)pnpm run server:prod– run compiled Socket.IO server (dist/prod.js)
Frontend (Next.js):
- Deploy on Vercel. No special config needed.
Realtime server (Socket.IO):
- Deploy on Railway/Fly/Render. Expose port
3001. - Set
NEXT_PUBLIC_SOCKET_URLin Vercel to your server URL (e.g.https://your-railway-app.railway.app).
- Next.js 15 (App Router) + React 19
- Tailwind CSS v4
- Framer Motion
- Socket.IO (client + server)
- TypeScript
- Share presets for city/area filters
- Persist rooms and results (DB)
- Add reactions in chat and message editing
- PWA install + offline cache
- i18n (FR/EN)
Contributions are welcome! If you’d like to help:
- Fork the repo and create a feature branch.
- Run
pnpm devand verify your changes. - Open a PR with a clear description and screenshots.
If you like this project, please star the repo and share it with your team.
