Inspiration

The Prospector began as a simple idea: surface relevant events and content from across the web so users don’t have to hunt for them—fast, local-first, and personal. Workflow sketch

What it does

Aggregates events, news, and social content into one feed. Ranks and deduplicates results, provides AI-driven summaries and recommendations. Lets users star/save items locally and sync to a server or Google Calendar.

How we built it

Backend: Node.js + Express, Passport sessions, Mongoose/MongoDB. Frontend: single-file vanilla JS app that dynamically loads Google APIs for calendar/auth. Integrations: NewsAPI, Ticketmaster, Eventbrite, GitHub/Reddit search + a dev proxy when needed. See the code in server and simple-app.html for implementation details.

Challenges we ran into

Browser Content Security Policy blocked third-party scripts and fetches during local dev. Google OAuth/discovery required correct Authorized JavaScript origins and API key settings. Cross-origin cookies and session persistence required careful CORS/cookie config. Normalizing varied API result shapes and handling missing fields.

Accomplishments that we're proud of

Local-first UX: guests can use the app and not lose work; favorites sync on login. Google Calendar integration + server-side Google token verification. Developer tools: debug endpoints, dev CSP middleware, and a GitHub proxy that speed up local iteration. A single-file, runnable server (enhanced-server-apis.js) for quick demos.

What we learned

Small infra misconfigurations (CSP, SameSite cookie, OAuth origins) block entire feature flows. Local-first design (localStorage + sync-on-login) greatly improves testability and UX. A concise debug surface (endpoints and logs) saves huge troubleshooting time. Quick math: relevance scoring can be represented as a normalized score, e.g. (score = \min(1, titleMatch + locationMatch + sourceQuality + recency)).

What's next for THE PROSPECTOR

Harden production security: restore strict auth/ownership, gate dev relaxations behind an env flag. Finish DB migrations and reconcile personalization/chat schema. UI polish: dedicated calendar UI, sync status UI, and improved star management. Expand integrations and add tests/CI for critical routes. Docs: add a step‑by‑step Google Cloud Console setup for OAuth and API keys.

Built With

  • app
  • authentication)
  • config
  • css
  • dotenv
  • frontend
  • github
  • google
  • google-calendar-api-(via-gapi-+-server-verification)-google-oauth-/-identity-platform-newsapi-ticketmaster-api-eventbrite-api-api-ninja-openweather-api-optional-scraping-/-websearch-services-(custom-scrapers
  • google-cloud
  • html
  • javascript
  • javascript-(es-modules)
  • mongodb
  • mongoose
  • node-fetch-(server-side-http)-bcrypt-(password-hashing)-mongoose-(odm)-cors
  • node.js-(v20+)-express-(http-server
  • optional
  • present)
  • pushshift/reddit
  • react
  • routing)
  • session-stores-zod-(request-validation)-esbuild
  • simple-app.html)
  • single-file
  • tailwind
  • toolingdev
  • tsx
  • typescript
  • typescript)
  • vanilla
  • vite
Share this project:

Updates