Commit Graph

18 Commits

Author SHA1 Message Date
chip-overstock[bot] 79f5b793f8 Merge pull request #24 from cartsnitch/content/phase-2-onboarding-faq
Add Phase 2 content: onboarding guides and FAQ
2026-03-20 08:20:33 +00:00
Frontend Frankie a74c9c1071 Add Phase 2 content: onboarding guides and FAQ
Onboarding guides cover the five core user flows: getting started,
connecting store accounts, setting up price alerts, reading the
dashboard, and comparing stores. FAQ addresses common questions
about how CartSnitch works, data privacy, supported stores, and
troubleshooting.

All guides include screenshot placeholders for integration once
staging is available (blocked on CAR-60).

Ref: CAR-114

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 06:11:27 +00:00
chip-overstock[bot] 5d8978d9b0 Merge pull request #15 from cartsnitch/frankie/add-marketing-content
Add marketing content from CMO content phase 1
2026-03-19 23:09:07 +00:00
Frontend Frankie f2630ebb8a Add 6 missing marketing content files from CMO content phase 1
Add brand voice guide, website landing page, launch announcement,
social media strategy, and email templates (shrinkflation alert,
weekly digest) to content/marketing/ directory structure.

Resolves CAR-90.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-19 21:50:19 +00:00
Frontend Frankie ca57910929 Add marketing content files from CMO content phase 1
Copy 10 marketing content files from the cmo/content-phase1 branch
of cartsnitch/agents into content/marketing/, preserving the
blog/, email/, and social/ subdirectory structure.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 21:50:19 +00:00
Chris Farhood 5e3f97fa04 Merge pull request #14 from cartsnitch/revert-ghcr-mirrors
Revert GHCR mirror configs to Docker Hub direct pulls
2026-03-18 21:53:46 -04:00
Debbie (CartSnitch Engineering) 882aab0d19 Revert GHCR mirror configs to Docker Hub direct pulls
Replace ghcr.io/cartsnitch/mirror/* images with Docker Hub originals,
restore GHCR login guard, and add Docker Hub auth.

Refs: CAR-77

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 23:48:43 +00:00
chip-overstock[bot] df5372e14b Merge pull request #11 from cartsnitch/fix/ghcr-mirror-base-images
Switch Dockerfile base images to GHCR mirror
2026-03-18 18:52:27 +00:00
deploy-debbie[bot] 5750066d19 Switch base images from Docker Hub to GHCR mirror
Avoids Docker Hub 429 rate limits by pulling node:20-alpine and
nginx:stable-alpine from ghcr.io/cartsnitch/mirror/. GHCR login
now runs on all builds (not just main push) to authenticate pulls.

Ref: cartsnitch/infra#7, CAR-55

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 18:37:47 +00:00
deploy-debbie[bot] 78de6c855e feat: add Renovate dependency update config
Extends the shared CartSnitch Renovate preset from cartsnitch/.github.
Minor/patch automerge, major requires review, dependency PRs labeled and grouped.

Co-authored-by: Deploy Debbie <debbie@cartsnitch.com>
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-03-18 18:21:31 +00:00
chip-overstock[bot] bbc8172b6b Merge pull request #7 from cartsnitch/feature/dockerfile
feat: add multi-stage Dockerfile for PWA
2026-03-18 14:27:23 +00:00
deploy-debbie[bot] 5ad8fb806f feat: add multi-stage Dockerfile for PWA
Build stage uses node:20-alpine to install deps and build.
Prod stage uses nginx:stable-alpine to serve static assets.
Includes nginx config with SPA routing, gzip, health endpoint,
and aggressive caching for Vite-hashed assets.

Closes #6

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 13:26:57 +00:00
Frontend Frankie 26e97d8c15 fix: resolve ESLint errors — unused param and impure render function
- AccountLinking: remove unused _fields param from handleConnect
- Coupons: extract Date.now() to pure helper function outside component
  to satisfy react-hooks/purity rule

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 12:04:43 +00:00
Frontend Frankie c8999ea18d fix: add PWA icon PNGs for manifest (192, 512, maskable)
Manifest referenced icon files that didn't exist, causing PWA install to fail.
Generates placeholder brand-blue icons for all three required sizes.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 12:01:32 +00:00
Frontend Frankie fe5b0e87bd fix: address Chip's review — secure auth, wire TanStack Query, fix UX issues
Must-fix:
- Exclude JWT token from Zustand persist (partialize) to prevent
  localStorage XSS exfiltration — token now lives in memory only
- Wire all pages through TanStack Query hooks (usePurchases, useProduct,
  useProducts, usePriceHistory, useCoupons, usePriceAlerts) with proper
  loading skeletons and error states
- Add mock interceptor in api.ts (VITE_MOCK_API=true) so mock data flows
  through the same fetch path — single flag to switch to live API

Should-fix:
- Wire theme toggle to DOM (dark class on <html>)
- Fix AccountLinking form inputs (controlled with value/onChange)
- Remove unused err in catch blocks (Login, Register)
- Bump remaining min-h-10 touch targets to min-h-12 (48px)

Build: 128KB initial JS, Recharts 498KB lazy chunk. 5/5 tests pass.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 11:54:06 +00:00
Frankie 034f12d0aa fix: address critical and major PR review issues
- Lazy-load Recharts via SparklineChart component with React.lazy + Suspense
- Gate mock auth fallback behind VITE_MOCK_AUTH env var in Login and Register
- Add ProtectedRoute component to guard authenticated routes
- Fix touch target size on New Alert button (min-h-10 -> min-h-12)
- Replace invalid safe-area-pb class with pb-[env(safe-area-inset-bottom)]
- Fix theme toggle button touch targets (min-h-10 -> min-h-12)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 16:36:12 +00:00
Frontend Frankie 5fbf0f5c5c feat: add core PWA screens (auth, dashboard, purchases, products, alerts, settings)
Build all 8 primary screens for CAR-33 on top of the Phase 1 scaffold:
- Auth: login, register, forgot password with JWT flow and mock fallback
- Dashboard: triggered alerts banner, spending stats, price trend sparklines (Recharts), recent purchases
- Purchase History: store filter chips, paginated list with item previews
- Purchase Detail: receipt view with line items linking to product pages
- Products: search with instant filter, store price comparison badges
- Product Detail: 90-day price history chart (Recharts), store comparison table
- Store Comparison: ranked store cards with savings banner
- Price Alerts: triggered/watching sections, create form, progress bars, delete
- Coupons: expiration warnings, copy-to-clipboard coupon codes
- Account Linking: connect Meijer/Kroger/Target with status indicators
- Settings: profile, connected stores, notification toggles, theme switcher, sign out

Also adds:
- Mock data layer (src/lib/mock-data.ts) for demo/screenshot use
- StoreIcon component with store brand colors
- Code-split Recharts chunk (initial JS: 117KB, Recharts lazy: 498KB)
- All 48px+ touch targets, mobile-first Tailwind layout

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 12:24:31 +00:00
Chris Farhood 4e9c888e0f Rename frontend-CLAUDE.md to CLAUDE.md 2026-03-15 17:23:39 -04:00