A multi-platform app for saving Amazon products to custom lists.
- Save Products - One-click save from any Amazon product page
- Multiple Lists - Organize products into custom lists
- Quick Access - Keyboard shortcut (Alt+S) and right-click menu
- Cart Integration - Save all items from your Amazon cart at once
- Share Lists - Generate shareable links to share lists with anyone
- Add to Amazon Cart - Add all items from a shared list to Amazon cart in one click
- Manager Page - Full-page interface with search, sort, and bulk actions
- Import/Export - Backup and restore your saved products
- Multi-region Support - Works on 10+ Amazon regional sites
- Chrome Extension - Available on the Chrome Web Store
- iOS App - Native SwiftUI app with Share Extension (TestFlight)
Coming soon to the App Store. Currently available via TestFlight.
cd extension
npm install
npm run buildThen load the extension/dist folder as an unpacked extension in Chrome.
shopcart/
├── extension/ # Chrome extension (React/TypeScript)
│ ├── src/
│ │ ├── background/ # Service worker (message handling, context menu)
│ │ ├── content/ # Content script (injected into Amazon pages)
│ │ ├── popup/ # Browser action popup
│ │ ├── manager/ # Full-page list manager
│ │ └── shared/ # Shared utilities, types, storage
│ └── public/ # Static assets (icons, manifest)
├── app/ # Mobile apps
│ └── ios/ShopCart/ # Native SwiftUI iOS app
├── api/ # Cloudflare Worker API for share links
└── website/ # Landing page (shopcart.app)
cd extension
# Install dependencies
npm install
# Start development server (hot reload)
npm run dev
# Build for production
npm run build
# Create release zip
npm run package# Using Makefile (recommended)
make ios-generate # Generate Xcode project
make ios-build # Build for simulator
make ios-run # Build and run on booted simulator
# Or manually
cd app/ios/ShopCart
xcodegen generate
open ShopCart.xcodeprojcd app/android
# Open in Android Studio
open -a "Android Studio" .
# Or build from command line
./gradlew assembleDebugThe following files are required for local development but are not checked into version control:
-
play-store-key.json- Google Play Store API credentials for automated publishing# Create this file in app/android/ # Get it from Google Play Console > Setup > API access > Service accounts # Download the JSON key for your service account
-
keystore.properties- References to your release keystorestoreFile=shopcart-release.keystore storePassword=your_keystore_password keyAlias=your_key_alias keyPassword=your_key_password
-
shopcart-release.keystore- Release signing keystore# Generate a new keystore (if you don't have one): keytool -genkey -v -keystore shopcart-release.keystore \ -alias your_key_alias -keyalg RSA -keysize 2048 -validity 10000 -
local.properties- Android SDK path (auto-generated by Android Studio)sdk.dir=/Users/YOUR_USERNAME/Library/Android/sdk
cd api
# Install dependencies
npm install
# Run locally
npm run dev
# Deploy to Cloudflare
npm run deploySee api/README.md for API documentation.
cd website
# Install dependencies
npm install
# Run dev server
npm run dev
# Build
npm run build
# Deploy to Cloudflare Pages
npx wrangler pages deploy dist --project-name=shopcart- React 18 - UI components
- TypeScript - Type safety
- Vite - Build tool
- Tailwind CSS - Styling
- Chrome Extension Manifest V3
- SwiftUI - Native UI framework
- Swift - Programming language
- Share Extension - Save from Safari
- App Groups - Data sharing between app and extension
- Cloudflare Workers - Serverless API
- Cloudflare D1 - SQLite database
- Cloudflare KV - Rate limiting (10 requests/hour per IP)
- Astro - Static site generator
- Cloudflare Pages - Hosting
- amazon.com (US)
- amazon.co.uk (UK)
- amazon.de (Germany)
- amazon.fr (France)
- amazon.es (Spain)
- amazon.it (Italy)
- amazon.ca (Canada)
- amazon.co.jp (Japan)
- amazon.in (India)
- amazon.com.au (Australia)
# 1. Update version in extension/package.json and extension/public/manifest.json
# 2. Commit and tag
cd extension
git add package.json public/manifest.json
git commit -m "chore: bump version to x.x.x"
git tag vx.x.x
git push origin main --tagsThis triggers a GitHub Action that builds the extension and creates a release with the zip file attached.
Archive and upload via Xcode to App Store Connect.
ShopCart is privacy-focused:
- All product data stored locally in your browser/device
- Share links are the only data sent to our servers (and they auto-expire)
- No user accounts required
- No tracking or analytics
See our Privacy Policy for details.
- Website: https://shopcart.app
- Chrome Web Store: Install ShopCart
- API: https://api.shopcart.app
MIT
