Full-Stack Web

Local SEO Heatmap & Geotagging Platform

Full-stack platform that generates grid-based Google Maps ranking heatmaps for local businesses, with integrated image geotagging tools and a credits-based monetization system.

Timeline: ~2 years — Dec 2021 to Jan 2024 (59 commits)

Key Results

15 tables

Database Tables

Full relational schema covering users, businesses, queries, rankings, payments, scheduling, and geotagging

42 views

Blade Templates

Across 6 layout sections: guest, user, admin, dashboard, geotag, and auth

4 APIs

API Integrations

Google Places (Search + Photos), Mapbox Geocoding, PayPal Payments, external crawl service

9×9 (81 points)

Max Grid Resolution

Each heatmap query can check up to 81 geographic points in a single run

The Problem

Local businesses and SEO agencies had no efficient way to visualize how a business ranks across different geographic points on Google Maps — manually searching from different locations was tedious, unscalable, and left businesses blind to their competitive positioning.

  • Manual Google Maps rank checking is time-consuming — checking a single keyword across a grid of 25+ locations could take hours by hand.
  • Businesses lacked geographic ranking data — they could see if they ranked, but not where they ranked well vs. poorly across a service area.
  • Image metadata (EXIF/IPTC geotagging) for local SEO required expensive desktop software or manual command-line tools, inaccessible to non-technical users.
  • No unified platform existed that combined heatmap ranking analysis, business profile management, recurring rank tracking, and image geotagging in one tool.

The Solution

Built a Laravel-based platform that automates grid-based local search ranking via the Google Places API, visualizes results as interactive heatmaps, and bundles an image geotagging toolkit — all behind a credits-based system monetized through PayPal.

  1. 1Built the core heatmap engine — users define a center point, search radius, and grid density (2×2 up to 9×9). The system generates a grid of lat/lng coordinates and queries Google Places Text Search API at each point, recording the target business's ranking and rendering results as a color-coded heatmap overlay on Google Maps.
  2. 2Implemented business and location management — users save business locations via Google Places API lookup with Mapbox geocoding, storing coordinates, address, category, and photo reference as a reusable base for heatmap queries.
  3. 3Built the credits/points economy — every heatmap query costs grid_size² points (e.g., a 5×5 grid costs 25 points). Users purchase credits via PayPal integration with full transaction history tracking.
  4. 4Created the image geotagging tool — a web-based tool for writing EXIF/IPTC metadata (GPS coordinates, business name, keywords, author, city) into JPEG images, with single uploads, bulk processing from Excel spreadsheets, and WebP conversion with EXIF preservation.
  5. 5Added scheduled/recurring queries — users schedule heatmap queries to run Daily, Weekly, Bi-weekly, or Monthly for automated rank tracking over time, enabling trend analysis.
  6. 6Built admin approval system and rate limiting — new users require admin approval before accessing tools, non-premium users are rate-limited to 10 queries/day, with DataTables for user management.
  7. 7Developed query comparison and analytics — location and query profile pages show total queries, credits spent, average ranking, and competitor tables, with multi-query comparison for side-by-side heatmap analysis.

Architecture Decisions

Key technical decisions made during the project and the reasoning behind them.

Dual-API: Google Places + Mapbox Geocoding

Reasoning

Google Places API provides the most accurate local business ranking data (the same results users see on Google Maps), making it irreplaceable for heatmaps. Mapbox was chosen for geocoding (address → coordinates) because of its generous free tier and fast response times, offloading volume-heavy geocoding from Google's more expensive API.

Outcome

Cost-effective API architecture — Google API calls reserved for high-value ranking queries, while Mapbox handles lower-cost geocoding operations.

Points-Based Credit System over Subscription Model

Reasoning

Heatmap queries have variable cost depending on grid size (2×2 = 4 API calls vs. 9×9 = 81 API calls). A flat subscription would either underprice heavy users or overprice light users. A per-query credit system (cost = grid_size² × $0.033) ties user cost directly to actual API consumption.

Outcome

Fair pricing model where a 5×5 heatmap query costs ~$0.83 in credits. PayPal integration handles payments with full transaction history via points_history and payments tables.

Server-Side Blade + Vue.js Hybrid Rendering

Reasoning

The application is primarily server-rendered for SEO and initial load performance, with Vue.js components layered in for interactive elements (heatmap visualization, dynamic forms). This avoided the complexity of a full SPA while keeping the interactive parts responsive.

Outcome

42 Blade templates organized across guest, user, admin, geotag, and dashboard layouts, with Vue components compiled via Laravel Mix/Webpack for map-heavy interactive features.

MySQL with Foreign Key Cascading Deletes

Reasoning

The data model has deep cascading relationships (User → Locations → Queries → Points/Businesses). MySQL with cascade deletes ensures data integrity when a user or query is removed, without needing application-level cleanup logic.

Outcome

15 database tables with proper foreign key constraints — orphan records never accumulate. Clean lifecycle management across the entire user → location → query → results chain.

The Tech Stack

Laravel 8

PHP 7.3/8.0/8.2 — full backend with Eloquent ORM (12 models), Blade templating (42 views), Sanctum auth, email verification, admin middleware, task scheduling for recurring queries

Vue.js 2

Frontend interactive components compiled via Laravel Mix — dynamic heatmap rendering, AJAX-driven dashboards, real-time form interactions

MySQL

15 tables with foreign key cascading deletes, enum columns for role/status management, 22 migration files for schema evolution

Google Places API

Core ranking engine — Text Search at each grid coordinate for business ranking data, plus Photos API for business imagery and reviews

Mapbox API

v5 forward geocoding service — converts addresses to lat/lng coordinates for heatmap center points and business locations

PayPal API

Payment processing for credit purchases — validates completed transactions and credits user wallets with full transaction history

Bootstrap 5

Responsive UI framework for the dashboard, admin panel, and public-facing pages with Sass preprocessing

PHP Exif Library

PEL (lsolesen/pel) for low-level EXIF/IPTC metadata manipulation — writes GPS coordinates, titles, keywords, author, and copyright into JPEG images, plus Intervention Image for WebP conversion

The Impact

A production local SEO platform developed over 2 years with 4 integrated APIs, enabling automated grid-based Google Maps rank tracking with up to 81-point resolution and a built-in image geotagging toolkit.

Deep dives and comparisons related to the technologies used in this project.

Explore similar case studies with overlapping technologies and challenges.