Visualize tourist crowdedness for 700+ destinations worldwide, week by week, powered by school holiday data and major events from 100+ countries.
Live: packedplaces.com | map.packedplaces.com
- 127 source regions across 100+ countries
- 700+ destinations across 90+ countries
- 6,000+ travel patterns connecting regions to destinations
- 50+ major events (Olympics, FIFA World Cup, Oktoberfest, Grand Slams, and more)
- 3 holiday data providers (manual, OpenHolidaysAPI, date-holidays)
Next.js 16 · React 19 · TypeScript · Tailwind CSS 4 · MapLibre GL · PostgreSQL + PostGIS · Drizzle ORM
- Node.js 18+
- Docker
# Start PostgreSQL
docker compose up -d
# Install dependencies
npm install
# Set up database (migrate, seed, ingest holidays, precompute heatmap)
npm run db:setup
# Start dev server (with Turbopack)
npm run devOpen http://localhost:3000 for the marketing page, or http://localhost:3000/map for the interactive map.
- Architecture — System design, database schema, API
- Data Sources — Where the data comes from and how it's processed
- Holiday Providers — Multi-provider holiday system
- Adding Regions — Contributor guide for adding new regions
Contributions are welcome! The easiest way to contribute is by adding new regions, destinations, and travel patterns. See the Adding Regions guide.
MIT