Podcast Tracker keeps tabs on every show you follow by syncing with the Spotify catalog so new releases surface automatically. A dedicated episode page highlights the latest drops and gives you quick context before you press play. Each show has its own page with rich details, letting you decide what deserves a spot in your queue. Your personal profile page remembers listening history and makes it easy to pick up where you left off while discovering fresh episodes.
- Astro and TypeScript drive the web app, with Tailwind CSS handling responsive styling.
- GraphQL powers the API, with Apollo Client and GraphQL Code Generator managing strongly typed queries.
- AWS Lambda and DynamoDB store and serve podcast data through lightweight serverless functions.
- AWS CDK defines repeatable cloud infrastructure for the web, API, and supporting services.
- Vitest, ESLint, and Prettier keep the codebase tested, linted, and consistently formatted.
- Ink powers a keyboard-first terminal UI for the same podcast workflows as the web app.
The repo now includes a first-class CLI app in apps/cli with GraphQL feature parity:
- Profile stats + library browsing
- Global podcast search with subscribe/unsubscribe
- Show detail + episode pagination
- Episode progress actions (single, next, all)
- Show rating/review and drop/unsubscribe actions
- OAuth login (Cognito Authorization Code + PKCE)
The CLI now ships with live, non-secret production defaults for:
PODCAST_TRACKER_APPSYNC_URLPODCAST_TRACKER_COGNITO_DOMAINPODCAST_TRACKER_COGNITO_CLIENT_IDPODCAST_TRACKER_COGNITO_REDIRECT_URI(defaulthttp://localhost:4321/auth/callback)PODCAST_TRACKER_COGNITO_LOGOUT_URI(defaulthttp://localhost:4321/)
You only need to set env vars when you want to override those defaults (for local/staging environments).
npm run cli:dev
npm run cli:build
npm run cli:start
npm run cli:test
npm run cli:test:e2e
npm run cli:verify:e2eOption A: run without global install (recommended for local dev)
npm run cli:start -- auth login
npm run cli:start -- auth status
npm run cli:startOption B: install the podcast-tracker command globally from this workspace
npm run cli:build
npm link --workspace apps/cli
podcast-tracker auth login
podcast-trackerIf podcast-tracker is still not found after linking, ensure your npm global bin is on PATH:
npm config get prefix
# add "<prefix>/bin" to PATH in ~/.zshrc, then restart shell- Global:
/search,?help,qback/quit - Lists:
j/kmove,Enteropen/select - Home:
ssort,ffilter,nmark next,uunsubscribe - Show:
Entertoggle episode progress,nmark next,amark all,ssubscribe toggle,ddrop,trate,fcycle episode filter (all/unplayed/watched),oopen URL,]load more episodes
The CLI now has live end-to-end tests in apps/cli/src/__tests__/live.e2e.test.ts.
They are non-destructive (read-only) and require:
- built CLI artifacts (
npm run cli:build) - an authenticated session file (
podcast-tracker auth login)
Run:
npm run cli:test:e2eFull gate (lint + unit/integration + build + live E2E):
npm run cli:verify:e2eBelow are a few interface captures from the latest build. They highlight the profile dashboard, podcast search flow, listening library, and show detail experience.