MB
~ / projects / histogames

HistoGames_

Multi-platform game price aggregator tracking deals across Steam, PlayStation Store, Epic Games Store, and GOG. Cross-platform matching, price alerts, and automated social posting.

Golang Next.js 15 React 19 Laravel 12 PostgreSQL Elasticsearch Prisma 6 OpenAI
5 Go microservices
4 game stores
7 systemd services
3 CI/CD pipelines

// architecture

Polyglot microservice stack — Go monorepo for backend (parsing, API, search, notifications), Next.js for SSR frontend, Laravel for admin panel. Each technology applied where it's most effective.

$ cat services.yml
Next.js 15 (SSR)
│ REST
┌─────┴─────────────────────┐
API Parser Elastic
(Gin) (Asynq) (Sync)
│ │
Notify Poster
(Email/Push) (Telegram)
└─────┬─────────────────────┘
PostgreSQL · Redis · Elasticsearch
API Service

Gin REST server with Redis caching, rate limiting, Handler → Service → Repository

Parser Daemon

4 store scrapers, Asynq queues with 5 priority levels, chromedp for SPA pages

Elastic Sync

Multi-language and regional price indices, scheduled reindexing

Notify Service

Price drop alerts via Mailgun email and web push notifications

Poster Service

Automated deal posting to Telegram channels and social feeds

Shared Packages

GORM models, config, logger, DB/ES clients — reused across all services

// parsing & AI matching

Price data collected from 4 game stores with priority-based task queues. AI-powered cross-platform matching links the same game across different storefronts.

Steam
REST API
PlayStation
chromedp (SPA)
Epic Games
GraphQL API
GOG
REST API
$ asynq stats --queues
critical
P1
default
P2
parsing
P3
ratings
P4
low
P5
// internal/matcher/ai.go
type Matcher struct {
openai *openai.Client
repo CandidateRepository
}
func (m *Matcher) Match(ctx context.Context, game *Game) ([]Candidate, error) {
// AI-powered cross-platform game matching
// Returns candidates for manual verification
}

// frontend & UX

01. Next.js 15 + React 19

  • App Router with SSR/SSG for SEO
  • Prisma 6 ORM with PostgreSQL
  • Turbopack for fast dev builds
  • Zod v4 validation on all inputs

02. Auth & User Features

  • NextAuth.js v5 (JWT + Google, Facebook, Apple)
  • Wishlist with price threshold alerts
  • Redis rate limiting (sliding window)

03. Price Visualization

  • Price history charts (Chart.js)
  • Framer Motion animations
  • Headless UI accessible components

04. i18n & Regional Pricing

  • Dynamic locales from API
  • Regional prices with currency binding
  • URL-based routing (/[locale]/...)

// quality & infrastructure

Testing

$ make test-all
go test ......... services, repos
vitest .......... frontend unit
playwright ...... E2E scenarios
lighthouse CI ... 80/80/75/80
PHPUnit 11 ..... admin panel

CI/CD (3 Pipelines)

$ gh workflow list
deploy-backend .. 5 Go binaries + health checks
deploy-front .... Next.js build + symlink
deploy-console .. Laravel admin
Auto-rollback on failed health check (.prev binary)

Security

  • Rate limiting (Redis sliding window)
  • bcrypt (12 rounds), OAuth providers
  • UFW firewall (22, 80, 443 only)
  • fail2ban, auto SSL via Caddy

Infrastructure

  • 7 systemd services via Makefile
  • Ansible provisioning playbooks
  • PostgreSQL auto-backups (cron)
  • Prometheus metrics, slog/pino logging

// tech stack

Backend (Go)
Golang 1.24, Gin
GORM, Asynq, gocron
chromedp, GoQuery
Prometheus, slog
Frontend
Next.js 15, React 19
TypeScript, Prisma 6
Tailwind CSS 4
Chart.js, Framer Motion
Admin
Laravel 12, PHP 8.2+
Filament 3.3
spatie/translatable
Laravel Pint
Integrations
OpenAI API
RAWG API
Telegram Bot
Mailgun, PostHog
$ tree --depth 1
├── backend/ # Go monorepo — 5 microservices
├── front/ # Next.js 15 (App Router, Prisma, SSR)
├── console/ # Laravel 12 (Filament admin)
├── deploy/ # Ansible, scripts, systemd configs
├── .github/ # 3 CI/CD workflows
└── Makefile # Project management CLI