jameschang.co [experience] [/now] résumé.pdf ↓

james chang / privacy

// last updated

Privacy policy.

What jameschang.co collects, how the WHOOP / Spotify / Plex integrations work, and how Google Analytics is used.

/01

what this site collects

jameschang.co is a personal portfolio and résumé site. It is a static HTML site hosted on GitHub Pages. It does not use cookies, does not collect form submissions, and does not store any visitor data on its own servers.

Google Analytics 4 (measurement ID G-B3HW5VBDB3) is used for anonymous traffic analytics (page views, referral sources, device type). Google Analytics uses cookies to distinguish unique visitors. IP addresses are anonymized by default in GA4. No personally identifiable information is collected from visitors.

/02

whoop integration

This site displays the site owner's own WHOOP health and recovery data (recovery score, sleep, strain, HRV) on the /now page. This data is fetched from the WHOOP API using the site owner's own authorized account. No other user's WHOOP data is accessed, stored, or displayed. The WHOOP API integration accesses only the site owner's personal data and is used solely for personal display purposes.

/03

spotify integration

This site displays the site owner's own recently-played tracks and (when a podcast is actively playing) the currently-playing podcast episode from Spotify on the /now page. This data is fetched from the Spotify Web API using the site owner's own authorized account. No other user's Spotify data is accessed, stored, or displayed. The integration uses read-only scopes (user-read-recently-played, user-read-playback-state) and is used solely for personal display purposes.

/04

plex integration

This site displays the site owner's own recently-watched library entries (movie and TV titles, year, episode metadata) from a personal Plex Media Server on the /now page. The Plex API is queried via the server's relay URL using a static, server-scoped API token; only the owner's library metadata is read. No other user's Plex data is accessed, stored, or displayed. The token is stored as a GitHub Secret and used solely for personal display purposes.

/05

public activity feeds

The /now page also displays the site owner's own public activity from these additional APIs:

  • GitHub public events — recent commits, PRs, and releases across the owner's public repos
  • MLB Stats API — Los Angeles Dodgers standings and schedule
  • Goodreads RSS — books the owner is currently reading or has recently read
  • The Fantastic Leagues public standings API — the owner's fantasy baseball team rank in the OGBA League
  • Thirsty Pig hitlist JSON — a public list of restaurants the owner wants to try, fetched client-side from thirstypig.com/places-hitlist.json. The thirstypig.com server CORS-locks responses to https://jameschang.co, so no visitor data crosses the origin.

The /now page also surfaces upcoming events from a personal Google Calendar named “Events” via the calendar’s public iCal feed (the “Get a secret address in iCal format” URL). The URL is stored as a GitHub Secret and fetched server-side hourly; only event summary, location, URL, and start/end dates are extracted, and the feed is opt-in by virtue of the site owner choosing which entries to make public on that calendar. No other person’s calendar data is accessed, stored, or displayed.

All sources expose only the site owner's own public data; no visitor data is accessed, collected, or stored.

/06

third-party links

This site links to external services (LinkedIn, GitHub, Calendly, Amazon, Instagram, etc.). Those services have their own privacy policies. This site does not control or collect data from those services.

/07

contact

Questions about this policy: jimmychang316@gmail.com.