Skip to content
MattbuselPublic

About

Pricebook: a grocery price book for iPhone. Scan a barcode, enter the shelf price, get a verdict from your own price history. SwiftUI + VisionKit, written on Windows, built and shipped entirely by GitHub Actions macOS runners.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

Repository files navigation

Pricebook

A grocery price book for iPhone: scan a barcode, type the shelf price, and know straight away if it is a deal.

iOS 17+ SwiftUI Built on GitHub Actions

Coming to the App Store.

Pricebook screenshot Pricebook screenshot Pricebook screenshot

Frugal shoppers have always kept a price book in a notebook. Pricebook rebuilds it for the phone in your hand in the aisle, and every verdict (Stock up, Good price, Normal, Pricey, Fake sale) comes from your own history at the stores you use, not from ads or a price feed.

Features

  • Barcode scanning with VisionKit's live data scanner; the first scan names the item, later scans open it instantly
  • A verdict with the reasons behind it and a gauge between your best and worst price, plus which store usually has it cheaper
  • Price history per item and store, charted with sales marked; best, usual and worst unit price
  • Where it is cheapest, what switching stores would save in a year, how often it goes on sale and how many to buy
  • Which is cheaper: compare two to six sizes and deals (multi-packs, 2 for $5, BOGO, percent off, coupons) with unit conversion
  • A shopping list that sorts itself by the cheapest store, with trip totals; export every price as a spreadsheet

Price

A paid app: one price, no in-app purchases, no subscription, no ads.

Privacy

No network code at all: Pricebook makes no requests and collects no data. The camera is used only to read barcodes on the device. Prices are saved in pricebook.json on the phone. The privacy manifest (Resources/PrivacyInfo.xcprivacy) declares no tracking and no collected data types.

Built without a Mac

This app was written on a Windows PC. No Mac is involved at any point: every build, signature, screenshot and App Store submission runs on GitHub Actions macOS runners, driven by the App Store Connect API.

  • project.yml is an XcodeGen spec. The .xcodeproj is generated on the runner and never committed, so the repo can be edited on any OS and there are no .pbxproj merge conflicts.
  • .github/workflows/build.yml runs on every push: picks the newest Xcode 26 and iPhone simulator on the runner, builds, then launches the app once per screen with -shot <screen> (sample data, fixed 9:41 status bar) and captures the store screenshots with simctl, uploaded as a workflow artifact.
  • .github/workflows/appstore.yml (manual) has three modes: compile, dry_run (build, sign, upload, do not submit) and release (also submits for review). The distribution certificate is imported from a secret into a throwaway keychain; fastlane (fastlane/Fastfile) fetches the App Store profile with the API key, sets the build number one above the latest on TestFlight, archives, and uploads the binary with fastlane/metadata and the committed fastlane/screenshots.
  • .github/workflows/review-video.yml records the App Review screen recording: the app is launched with -demoAutoplay and drives its own real screens.
  • Store/*.py talk to the App Store Connect API directly from Windows (Python, requests + PyJWT): asc.py registers the bundle id and pushes metadata, listing.py sets the age rating, review details, price and screenshots, and signing.py creates the distribution certificate locally so its private key is never stranded on a disposable runner.

Only one step is manual: Apple's API will not create the app record itself, so that is made once in the App Store Connect web UI.

Build and run

With a Mac and Xcode 26 (the version CI uses; the app targets iOS 17+):

brew install xcodegen
xcodegen generate
open Pricebook.xcodeproj

Run the Pricebook scheme on any iPhone simulator. No signing is needed for the simulator; from the command line:

xcodebuild build -project Pricebook.xcodeproj -scheme Pricebook \
  -destination 'platform=iOS Simulator,name=iPhone 16 Pro' CODE_SIGNING_ALLOWED=NO

To see it filled with sample data, launch with a screenshot argument, e.g. xcrun simctl launch booted com.mattbusel.pricebook -shot book.

Without a Mac: fork the repo and push. The Build workflow compiles it on a GitHub macOS runner and attaches the screenshots as an artifact.

Shipping your own build needs these repository secrets: ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_CONTENT (base64 of the .p8), DEVELOPMENT_TEAM, DIST_CERT_P12, DIST_CERT_PASSWORD, plus your own bundle id in project.yml and fastlane/Fastfile.

Code map

All app code is in Sources/ (SwiftUI, Observation, no third-party dependencies).

File What it does
App.swift entry point, tabs, -shot handling
Model.swift items, stores, prices, unit conversion, the deal verdict, JSON persistence
ScanView.swift VisionKit live barcode reader
Check.swift the shelf-tag form and verdict
BookView.swift the price book and item history
CompareView.swift which-is-cheaper calculator
ListView.swift the store-sorted shopping list
Edit.swift new item and editing
Theme.swift kraft paper and shelf-tag look
Demo.swift / Autopilot.swift screenshot data and the App Review recording

Store/ holds the App Store Connect scripts, fastlane/ the lanes, listing text and screenshots, Resources/ the asset catalog and privacy manifest.


More apps built the same way: Chain, Ironbook, Quiver, Race Fuel, Minder, Baseline Ledger, Fairway Ledger, Odometer, Rooms, Clockout, Curve, Chores, Pawprint, Pocket Beings, Glyphstorm, Clear the Strait.

Hire the author

I designed, built and shipped this app myself. Want one like it for your business? I build native iOS apps from prototype to App Store launch, fixed price. Services and pricing · Email · LinkedIn

About

Pricebook: a grocery price book for iPhone. Scan a barcode, enter the shelf price, get a verdict from your own price history. SwiftUI + VisionKit, written on Windows, built and shipped entirely by GitHub Actions macOS runners.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages