Find the best bars to meet women in NYC. Stop asking the groupchat.
Live: nightshift-djts.vercel.app
NightShift shows you 3,937 NYC bars on an interactive map with Meeting Potential Scores based on:
- Gender ratio estimates (from review analysis)
- Activity patterns (from 311 noise complaints)
- Venue type (lounges > nightclubs for actually talking)
- Ratings and vibe
Tap any venue to see details and open in Google Maps.
| Map View | Venue Details |
|---|---|
| Clustered markers, search, filters | Score breakdown, Google Maps link |
- Next.js 16 (App Router, React 19)
- Mapbox GL JS (native clustering for 4k+ venues)
- Vercel Postgres + Prisma
- Tailwind CSS v4 + shadcn/ui
# Install
npm install
# Set up .env.local
NEXT_PUBLIC_MAPBOX_TOKEN=your_token
DATABASE_URL=your_postgres_url
# Optional (Live heatmap / Radar)
BESTTIME_API_KEY_PRIVATE=your_besttime_private_key
# Run
npm run dev| Source | What We Get | Cost |
|---|---|---|
| Google Places | 3,937 venues with ratings | ~$50 |
| NYC 311 API | Noise complaints = activity proxy | FREE |
| NYS Liquor Authority | 10k+ licensed bars | FREE |
| OpenAI | Gender/vibe from reviews | ~$5 |
- Clustering: Handles 4k venues smoothly (GPU-accelerated)
- Search: Find bars by name or neighborhood
- Filters: Toggle score factors (gender, activity, quality)
- Drawer: Venue details with Google Maps deep link
- Mobile-first: Designed for phone use
- 3,937 venues imported
- Mapbox clustering
- Meeting score algorithm
- Search and filters
- Venue drawer with Google Maps
- Heatmap layer ("hot areas" by time of day)
- Live busyness (Google Popular Times)
- Event integration (Eventbrite)
- More venues (NYS Liquor import)
npm run dev # Start dev server
npm run build # Production build
npm run db:push # Push schema
npm run fetch:311 # Import 311 data
npm run fetch:google # Import Google Places- iOS Safari doesn't extend map behind notch/home indicator (Safari limitation)
ISC