Skip to content

feat: KickWatch MVP — Go backend + iOS app#1

Merged
Jing-yilin merged 34 commits intomainfrom
develop
Feb 27, 2026
Merged

feat: KickWatch MVP — Go backend + iOS app#1
Jing-yilin merged 34 commits intomainfrom
develop

Conversation

@Jing-yilin
Copy link
Contributor

Summary

Full MVP implementation of KickWatch — a daily Kickstarter campaign monitor.

Backend (Go/Gin)

  • Kickstarter REST client for nightly crawl (no auth)
  • Kickstarter GraphQL client with anonymous session bootstrap (CSRF + cookie, 12h refresh)
  • APNs HTTP/2 push notification service with JWT signing
  • Nightly cron (02:00 UTC): crawls 15 categories × 10 pages, upserts campaigns, matches alerts, sends pushes
  • REST API: campaigns, search, categories, devices, alerts CRUD
  • GORM models with AutoMigrate (Campaign, Category, Device, Alert, AlertMatch)
  • Dockerfile + .env.example

iOS (SwiftUI / SwiftData)

  • SwiftData models: Campaign, WatchlistAlert, RecentSearch
  • APIClient (actor), KeychainHelper, NotificationService, ImageCache
  • 4 tabs: Discover (sort + category chips + cursor pagination), Watchlist, Alerts, Settings
  • CampaignDetailView with funding ring, stat boxes, share sheet
  • SearchView with cursor pagination
  • App icon: all 14 required PNG sizes generated from SVG

CI/CD

  • .github/workflows/test-backend.yml — go build/test/vet on backend changes
  • .github/workflows/deploy-backend.yml — ECR push + ECS deploy on main push

Commits

22 atomic commits covering backend, iOS, and CI layers independently.

@Jing-yilin Jing-yilin merged commit 5175541 into main Feb 27, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant