Classifieds & Advertising Platform — Go SSR + React
A live platform with 175k+ ads, rebuilt and expanded over three-plus months with Go-rendered public pages and three React dashboards. The work spans prepared listing data, warmup, payments, search, realtime updates, operations and production migration.

Images
About Classifieds & Advertising Platform — Go SSR + React
This is the current production version of a private client's classifieds and advertising platform, now running with 175k+ live ads. I rebuilt and expanded it over three-plus months after roughly two years building and maintaining the original Laravel application. The project added substantial operational and editorial workflows alongside the migration.
My GTmetrix checks moved from B–C on the Laravel version to A on the rebuilt site. I also checked performance with web.dev. The result reflects the wider rendering, data preparation and delivery work across the rebuild.
Public pages rendered by Go
Go renders the public HTML from prepared listing data and handles geographic routes, listing pages, search, metadata, canonical URLs, redirects and sitemaps. Lightweight JavaScript handles browser interactions. The three dashboards use React, TypeScript and Mantine.
Warmup and selective rebuilding
Deployment prepares city, state and country listing data, then prewarms home and location snapshots, search indexes and sitemaps before traffic switches. Expensive catalogue preparation happens outside visitor requests.
Full listing rebuilds prepare a new generation before activating it. Routine edits, approvals, pauses, renewals and paid actions update the affected listing records and search documents. Scheduled reconciliation provides a recovery path when data drifts.
An earlier local test used a 164,356-ad database clone: pausing one ad took 17 ms through the incremental path versus 1,673 ms for a full location rebuild, with identical resulting listing data. These compare two update methods within Go; the live platform's current scale and public-page grades are separate measurements.
Three React dashboards
- Member dashboard: listing and media management, publication, paid visibility, token purchases, invoices, transaction history, verification, notifications and support.
- Admin panel: moderation, account and payment administration, support conversations, configurable listing fields, and staff tasks with assignments, recurrence, comments and attachments.
- Finances & SEO console: owner-level revenue reporting, analytics, source ingestion, duplicate review, media processing, AI-assisted rewriting, run history and retry controls.
The Go API enforces the permissions behind these interfaces. Source-processing automation prepares material for review; publication requires staff approval.
Background work and production operations
MariaDB holds application records, Meilisearch serves search, and Valkey handles caching and short-lived coordination. NATS JetStream runs durable background jobs across separate worker queues. Payment settlement feeds balances and paid listing actions, while committed events reach open dashboards through an authenticated Go WebSocket gateway. Media storage separates public images from private documents.
Migration tooling handles legacy records, references, media and URL mappings. Checks cover listing behavior, routes, redirects, metadata and public-page compatibility. Blue/green deployment checks the next application stack before switching traffic and retains the previous stack for application rollback.
The original Laravel page preserves the earlier implementation. Development of the live Go platform continues; source code remains private.















































