A message from the PriceAlerts team

Thank You for
Your Trust & Support

After years of helping Canadian shoppers find the best grocery prices, PriceAlerts.org is transitioning to a new chapter. We are open-sourcing the entire platform so that developers, businesses, and communities anywhere in the world can build on what we created together.

248+
Crawler Patterns
50+
API Endpoints
17
Ad Placements
10K+
Products
MIT
License

Everything Built Into One Platform

A production-ready grocery price comparison engine, built and battle-tested over years of real-world use.

For Shoppers

💰
Real-Time Price Comparison

See prices from multiple stores displayed side-by-side on a single product page. No more checking store by store.

📈
Price History Charts

Interactive line charts showing how a product's price has changed over time, so shoppers know when to buy.

📍
Location-Based Store Finder

Find stores near you using browser geolocation with latitude/longitude distance calculations via Geolib.

🔍
Advanced Product Search

Full-text search across product names, brands, categories, and UPC barcodes with instant results.

🔥
Trending Products

Powered by Google Analytics 4 — shows what products are being viewed most right now, updated hourly.

🏷️
City-Specific Deals

Deals and price drops organized by city, so shoppers see what's on sale near them, not on the other side of the country.

📱
Mobile-First Responsive Design

Built mobile-first. Looks great on phones, tablets, and desktops without any separate mobile site.

🌙
Dark Mode / Light Mode

Automatically follows the user's system preference, with a manual toggle. All components themed consistently.

🗺️
Category & Brand Browsing

Full hierarchical category tree and brand pages so users can browse by what they're looking for, not just search.

For Site Owners

⚙️
Full Admin Dashboard

A comprehensive control panel to manage products, stores, prices, integrations, ad blocks, meta tags, and blog content — all in one place.

🔄
Automated Data Sync

Schedule automatic syncs from Google Sheets (via JSONSheets.com), Clover POS, or any REST API. Prices stay current without manual updates.

📊
Google Sheets Integration

Use a simple Google Sheet as your product and pricing database. JSONSheets.com turns it into a live JSON API — no code needed.

💳
Clover POS Integration

Connect directly to Clover point-of-sale systems via OAuth for real-time inventory and pricing data from retail stores.

📝
Built-In Blog / CMS

A full content management system for publishing SEO-optimized articles, grocery tips, and promotional content without a separate CMS tool.

💵
Google AdSense Integration

17 configurable ad placement locations across the site. Ads are styled natively to match your theme for a seamless user experience.

🌟
Featured Products System

Highlight specific products on the homepage or category pages, with geographic targeting to show different products to users in different cities.

🖼️
Bunny CDN Image Hosting

Automatic product image upload, optimization, and delivery via Bunny CDN. Weekly image sync job keeps images fresh and properly sized.

Technical & SEO

🤖
Bot-Targeted SSR for 248+ Crawlers

Server-side rendering is triggered for verified search engine bots and social media crawlers, delivering pre-rendered HTML with full semantic content and meta tags.

🗺️
Scalable Sitemap Index

Auto-generated XML sitemaps split into index files for products, stores, categories, cities, and blog posts. Handles hundreds of thousands of URLs.

🔗
Comprehensive SEO Meta Tags

Every page has unique title tags, meta descriptions, Open Graph images, breadcrumb structured data (JSON-LD), canonical URLs, and Twitter Cards.

Performance Optimizations

LRU cache with TTL, cursor-based pagination, bulk database operations, optimized single-JOIN SQL queries, and controlled parallel batch processing.

🔒
Security & Rate Limiting

Express rate limiting, Zod input validation, bcrypt authentication, OAuth state protection with expiration and one-time-use enforcement, and bot blocking.

🌐
Multi-Currency Support

Built for the Canadian market (CAD default) but supports USD, EUR, GBP, and other currencies. Geographic data (lat/lng) supports international expansion.

📡
XML Product Feeds

Auto-generated XML product feeds and Google Merchant Center feeds for retailer partnerships and comparison shopping engine submissions.

🛠️
50+ RESTful API Endpoints

A full public API covering products, stores, categories, cities, deals, price history, trending products, blog posts, and SEO metadata — all returning JSON.

🗃️
Drizzle ORM + PostgreSQL

Type-safe database layer using Drizzle ORM on Neon serverless PostgreSQL. Schema-first design with shared types between frontend and backend via TypeScript.

The Code Is Yours

We're releasing the complete, production-ready codebase under the MIT License — free to use, fork, modify, and build on.

github.com/yourusername/pricealerts MIT License — Star, Fork, Contribute

Roadmap for Contributors

Mobile AppNative iOS & Android with barcode scanning
Price Drop AlertsEmail/push notifications when prices hit target
Shopping ListsSave products and track prices over time
US & UK ExpansionStore integrations for international markets
Flyer OCR ScanningAutomatically extract prices from flyers
User AccountsSave preferences and shopping history
Community PricingLet users submit in-store prices
Browser ExtensionCompare prices while shopping online

Acknowledgments

ReactUI Framework
Express.jsServer
Drizzle ORMDatabase
NeonServerless Postgres
Tailwind CSSStyling
shadcn/uiUI Library
Bunny CDNImages
JSONSheetsSheets to API

To every shopper who used PriceAlerts to save money on groceries, every store owner who trusted us with their data, and every developer who reached out with ideas — thank you.

This project started as a simple idea: make grocery prices transparent for everyday people. That idea lives on in the open-source code. We hope it helps someone, somewhere, build something even better.

— The PriceAlerts Team • contactus@pricealerts.org