Inspiration
Watching for a better price often means reopening the same product pages across several stores. PricePing turns that repeated checking into one watchlist. Save a product, see how its price changes, and choose when a drop is worth a notification. The goal is to help shoppers make a purchase decision with price history rather than a sale badge alone.
What it does
Paste a product link and PricePing attempts to read its name, image, and current price. Products from different stores appear together in the watchlist. Each product accumulates a price history view over time and has configurable alerts -> 1. any price drop, 2. a price below a chosen amount or 3. a percentage drop.
The app checks saved products for price changes and sends price drop notifications. Some stores block automated reading or cannot be tracked. PricePing reports those failures, it does not promise that every store works or that every change is detected immediately. Background checks also depend on the device and operating system.
How it was built
The mobile app uses React Native, Expo, and TypeScript, with Supabase for account and backend services. RevenueCat's React Native SDK handles subscription purchases and customer entitlements. Purchase linking and restoration help keep subscription access associated with the user's account.
Price extraction uses several paths instead of relying on one page format. Supported Shopify product links can use a product-data endpoint. Other pages are read through HTML fetching or an embedded browser, with server-side fallback extraction when needed.
Challenges and lessons
Retailers expose product prices differently. Some include structured data in HTML, while others render content with JavaScript or block automated requests. The extraction pipeline distinguishes a successful reading from a blocked request, missing product data, or a network failure.
Mobile background execution adds another constraint. A foreground check can use an embedded browser, but a cold background launch may not have that browser available (on iOS). The implementation accounts for these different execution conditions rather than assuming the app can run continuously.
Subscription state needs similar care. Signing out, signing back in, and restoring purchases should not leave a paying user without access. RevenueCat provides the purchase and entitlement layer, while the app handles the transitions between anonymous purchases and signed-in accounts.
Accomplishments
PricePing combines cross-store product tracking, price history charts, three alert modes, and subscription access in one mobile app. The main product flow stays focused as follows, save a link -> follow its price -> decide when to act -> track savings if the product is bought. The engineering behind that flow includes multiple extraction paths, foreground and background checks, and purchase restoration.
Built With
- expo.io
- react-native
- revenuecat
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.