WallpaperMachine
The wallpapers you love. A new home on your Mac.
A free, community-built map of upcoming events in the New York City area.
LifestyleGitHub @shaman247OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Interactive map of upcoming events in the NYC area
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗fomo.nyc is a free, community-built interactive map of upcoming events in the NYC area.
It works by visiting the websites of parks, museums, music venues, etc., identifying any upcoming events, and displaying them on a map. My hope is that this becomes a useful resource for people to find events they are interested in and to engage with their local communities.
The codebase is city-agnostic — NYC is just the default deployment. Every city/region/branding specific (map view, timezone, geography, prompt wording, site name, per-platform crawl behavior) lives in config/<FOMO_CITY>.yaml (default config/nyc.yaml) and gitignored pipeline/sources/ plugins, so you can fork it for your own city by editing config rather than engine code.
src/js/ JavaScript modules (IIFE pattern, loaded in order)src/css/ CSS modules (imported via index.css)src/data/ Event and location JSON data (generated by pipeline)src/api/ PHP API endpointssrc/admin/ PHP admin dashboardsrc/images/ SVG assetssrc/fonts/ Self-hosted MapLibre glyph fontsnpm run build (prod) or npm run dev (dev)public_html/ directorypython scripts/upload_public_html.pymain.py Main entry point - orchestrates the complete workflowcrawler.py Crawls websites using Crawl4AI, stores content in databaseextractor.py Uses Gemini AI to extract structured event data
GEMINI_API_KEY environment variable (set in .env file)processor.py Parses extracted data, enriches with location coordinatesmerger.py Deduplicates events into final events tableexporter.py Generates JSON files for the website (src/data/)uploader.py Uploads data files to FTP serverdb.py Database operations (CRUD for crawl runs, results, events)schema.sql Complete database schemasetup.py Creates empty database tablesmigrate_schema.py Applies schema changes to existing database/database/backups/ Database backup filesThe frontend is built with esbuild:
npm run dev # Dev build + watch (unminified, symlinks, stable filenames)
npm run build # Prod build (minified, content-hashed, full asset copies)
@import chain is resolved and minifiedbuild.js reads config/<FOMO_CITY>.yaml and injects the city config: a window.__CITY__ global (map/timezone) prepended to the JS bundle, plus {{TOKEN}} branding replacement in index.htmldist/ contains the complete deployable output: HTML, JS/CSS bundles, plus copies of data/, images/, fonts/, api/, admin/All data flows through the database (crawl_runs → crawl_results → crawl_events → events):
websites table for due sites, crawl and store in crawl_results.crawled_contentcrawl_results.extracted_contentlocations, store in crawl_eventscrawl_eventscrawl_events into final events tablesrc/data/*.json from events tableThe day-to-day entry point is the /run-pipeline workflow (.claude/commands/run-pipeline.md), which wraps pipeline/main.py with review and fix steps.
npm run build # Build to dist/
python scripts/upload_public_html.py # Upload dist/ to server
📢 Share with your friends
📍 Add events and places you know
🫱🏾🫲🏼 Stay in touch
The project uses a MariaDB/MySQL database to store locations, websites, and crawl data.
New developers should restore from a database backup rather than starting with an empty database:
# 1. Create the database
mysql -u root -e "CREATE DATABASE fomo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
# 2. Restore from backup
mysql -u root fomo < database/backups/fomo_backup_YYYYMMDD.sql
# Windows (XAMPP)
"C:/xampp/mysql/bin/mysqldump.exe" -u root fomo > database/backups/fomo_backup_YYYYMMDD.sql
# Linux/Mac
mysqldump -u root fomo > database/backups/fomo_backup_YYYYMMDD.sql
If the schema has changed since your backup, run migrations:
python database/migrate_schema.py