Skip to content

madeyexz/SF_trip

Repository files navigation

SF Trip Planner

Turn 50 open tabs into one trip plan.

See where every event is. See when they conflict. See where it's safe to walk. One screen that shows you everything you need to decide, then plan your days and export to Google Calendar.

Planning View

What It Does

See Everything

  • Events on a map — Syncs from Luma calendars and Beehiiv RSS newsletters via Firecrawl. Every event plotted with color-coded pins.
  • Curated spots — Import cafes, restaurants, bars, and shops from any source. Tagged by category, visible on the same map alongside events.
  • Crime heatmap — Toggle a live crime heatmap overlay sourced from SFPD and CivicHub data. See which blocks had recent incidents before picking a dinner spot.
  • Calendar overview — Each day shows how many events are available and how many you've planned. Spot packed days and empty ones at a glance.

Map View

Plan It

  • Drag-and-drop day planner — Drag events and spots into a time-grid planner. Rearrange by dragging. Routes update automatically on the map.
  • Personal day planner — Build one clean itinerary for yourself and export it when you are ready.
  • Export — Export your itinerary as an ICS file or sync directly to Google Calendar.

Spots View

Calendar View

Tech Stack

Next.js 15 · React 19 · TypeScript · Convex · Google Maps API · Tailwind CSS v4 · Firecrawl · Vercel

Setup

  1. Clone and install:
git clone https://github.com/madeyexz/SF_trip.git
cd SF_trip
bun install
  1. Copy env template and fill in your keys:
cp .env.example .env

Key environment variables:

Variable Required Purpose
FIRECRAWL_API_KEY Yes RSS newsletter extraction (Beehiiv → events)
GOOGLE_MAPS_BROWSER_KEY Yes Map rendering in browser
CONVEX_URL / NEXT_PUBLIC_CONVEX_URL Yes Convex persistence and auth
AUTH_RESEND_KEY Yes Magic-link email auth via Resend
AUTH_EMAIL_FROM Production Verified sender for auth emails
GOOGLE_MAPS_ROUTES_KEY Optional Day-plan route drawing
GOOGLE_MAPS_GEOCODING_KEY Optional Server-side pre-geocoding during sync
GOOGLE_MAPS_MAP_ID Optional Advanced Markers styling
  1. Set up Convex:
bun convex:dev     # initialize / dev-connect
bun convex:deploy  # deploy schema and functions
  1. Run:
bun dev

Open http://localhost:3000.

Scripts

Command What it does
bun dev Start dev server
bun build Production build
bun start Run production build
bun lint Run ESLint
bun lint:fix Auto-fix lint issues
bun format Format with Prettier
bun convex:dev Connect to Convex dev
bun convex:deploy Deploy Convex functions

Deploy

Fork the repo, add your environment variables, and deploy to Vercel:

Deploy with Vercel

License

GPL-3.0

About

Simple, free, open-source San Francisco trip planner that aggregates events, curated spots, and danger areas all on a map!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors