Skip to content

amenophis1er/shopcart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShopCart

A multi-platform app for saving Amazon products to custom lists.

ShopCart

Features

  • 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

Platforms

  • Chrome Extension - Available on the Chrome Web Store
  • iOS App - Native SwiftUI app with Share Extension (TestFlight)

Installation

Chrome Extension

Install from Chrome Web Store

iOS App

Coming soon to the App Store. Currently available via TestFlight.

Manual Installation (Developer Mode)

cd extension
npm install
npm run build

Then load the extension/dist folder as an unpacked extension in Chrome.

Project Structure

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)

Development

Extension

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

iOS App

# 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.xcodeproj

Android App

cd app/android

# Open in Android Studio
open -a "Android Studio" .

# Or build from command line
./gradlew assembleDebug

Local Setup

The following files are required for local development but are not checked into version control:

  1. 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
  2. keystore.properties - References to your release keystore

    storeFile=shopcart-release.keystore
    storePassword=your_keystore_password
    keyAlias=your_key_alias
    keyPassword=your_key_password
  3. 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
  4. local.properties - Android SDK path (auto-generated by Android Studio)

    sdk.dir=/Users/YOUR_USERNAME/Library/Android/sdk

API (Cloudflare Worker)

cd api

# Install dependencies
npm install

# Run locally
npm run dev

# Deploy to Cloudflare
npm run deploy

See api/README.md for API documentation.

Website

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

Tech Stack

Extension

  • React 18 - UI components
  • TypeScript - Type safety
  • Vite - Build tool
  • Tailwind CSS - Styling
  • Chrome Extension Manifest V3

iOS App

  • SwiftUI - Native UI framework
  • Swift - Programming language
  • Share Extension - Save from Safari
  • App Groups - Data sharing between app and extension

API

  • Cloudflare Workers - Serverless API
  • Cloudflare D1 - SQLite database
  • Cloudflare KV - Rate limiting (10 requests/hour per IP)

Website

  • Astro - Static site generator
  • Cloudflare Pages - Hosting

Supported Amazon Domains

  • 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)

Releases

Extension

# 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 --tags

This triggers a GitHub Action that builds the extension and creates a release with the zip file attached.

iOS App

Archive and upload via Xcode to App Store Connect.

Privacy

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.

Links

License

MIT

About

Save Amazon products to custom lists. Chrome extension for organizing your wishlist

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors