How daviddems/fanwire works
Fanwire is a sports-discussion application: users browse game-aware feeds and search, publish posts with media, and manage profiles and notifications. The main runtime is a FastAPI backend with a React frontend; the README describes the frontend as scaffolded and AWS infrastructure as not deployed. The graph preserves the documented media-processing and sports-data capabilities, but some internal wiring is unsampled, so only documented or visible relationships are shown.
Main entry points: main.py FastAPI entrypoint · users/routes.py User routes · feed/routes.py Feed and threads · search/routes.py Search routes
Components 27
Web client
- React application
frontend/src/App.tsx - Page routes
frontend/src/routes/routes.tsx - API client
frontend/src/api/client.ts
Accounts
- User routes
backend/app/users/routes.py - User services
backend/app/users/service.py - Token verification
backend/app/users/auth.py
Posts and media
- Post routes
backend/app/posts/routes.py - Publish facade
backend/app/posts/facade.py - Post services
backend/app/posts/service.py - Post moderation
backend/app/posts/moderation.py - Upload routes
backend/app/media/routes.py - Image processing
backend/app/media/pipeline.py - Media state
backend/app/media/state.py
Feed and discovery
- Feed and threads
backend/app/feed/routes.py - Feed strategies
backend/app/feed/strategies.py - Search routes
backend/app/search/routes.py
Events and notifications
- FastAPI entrypoint
backend/app/main.py - Sports data routes
backend/app/events/routes.py - Event ingestion
backend/app/events/ingestion.py - Live score proxy
backend/app/events/proxy.py - Post event bus
backend/app/eventbus.py - Notifications
backend/app/notifications/consumer.py
Other components
- App user
- Cognito identity
- S3 media buckets
infra/lib/storage-stack.ts - Sports data API
- Application database
backend/app/db.py
Connections 34
- App user → React application: uses
- React application → Page routes: mounts routes
- React application → API client: shares client
- API client → FastAPI entrypoint: HTTP requests
- FastAPI entrypoint → User routes: mounts router
- FastAPI entrypoint → Post routes: mounts router
- FastAPI entrypoint → Upload routes: mounts router
- FastAPI entrypoint → Feed and threads: mounts router
- FastAPI entrypoint → Search routes: mounts router
- FastAPI entrypoint → Sports data routes: mounts router
- User routes → User services: calls
- User routes → Token verification: requires identity
- Token verification → Cognito identity: verifies token
- User routes → Application database: reads and writes
- Post routes → Publish facade: publishes via
- Publish facade → Post moderation: moderates
- Publish facade → Post services: creates post
- Post routes → Post services: calls actions
- Upload routes → Application database: records upload
- Upload routes → S3 media buckets: issues upload access
- S3 media buckets → Image processing: triggers processing
- Image processing → S3 media buckets: reads and publishes
- Image processing → Media state: transitions status
- Feed and threads → Feed strategies: selects posts
- Feed and threads → Post services: loads replies
- Feed and threads → Live score proxy: adds live scores
- Search routes → User services: searches accounts
- Search routes → Post services: searches posts
- Search routes → Sports data routes: filters games
- Sports data routes → Application database: reads games
- Event ingestion → Sports data API: imports sports data
- User routes → Post event bus: publishes follow events
- Post event bus → Notifications: dispatches events
- Notifications → Application database: stores notifications