Automated video game tracking and metadata enrichment pipeline.
OverAchiever is a high-performance backend system designed to simplify the lifecycle of game tracking. By orchestrating data from the Steam Store and HowLongToBeat, it transforms simple queries into rich, multi-dimensional profiles—eliminating manual record-keeping and data entry.
- Automated Metadata Ingestion: Dynamically fetches game titles, developers, publishers, scores, and high-res header images from the Steam Store API.
- Heuristic Playtime Prediction: Automatically links game records to HowLongToBeat (HLTB) completion metrics (Main Story, Extra, Completionist) using similarity-based matching.
- Smart Selection Engine: Implements a "Search & Auto-Add" flow where the system resolves IDs and metadata gaps behind the scenes—enabling a "Zero-ID" user experience.
- Asynchronous Architecture: Built on a non-blocking I/O core using FastAPI and httpx, allowing concurrent processing of third-party API requests.
- Production-Ready Infrastructure: Fully containerized environment with integrated database, caching, and message broker nodes.
OverAchiever is designed as a Decision Support and Data Enrichment Pipeline:
- Ingestion Layer: Asynchronously queries the Steam Store API for candidate metadata using heuristic search terms.
- Verification Layer: Validates external JSON payloads against strict Pydantic schemas to ensure data integrity.
- Enrichment Engine: Performs secondary lookups via HLTB to append estimated completion times, performing automated record linkage between disparate datasets.
- Persistence Layer: Mapped via SQLModel (SQLAlchemy) to a PostgreSQL relational database.
- Event Orchestration: Prepared for asynchronous background synchronization using Apache Kafka for large-scale data updates.
| Component | Technology |
|---|---|
| Framework | FastAPI (Python 3.12+) |
| Database / ORM | PostgreSQL / SQLModel |
| Containerization | Docker |
| Async Client | httpx |
| Messaging | Apache Kafka (Work-in-progress Sync Pipeline) |
| Caching | Redis |
- Docker Desktop installed.
The fastest way to spin up the entire cluster (API, Database, Redis, Kafka, Worker) is via Docker Compose:
-
Clone the repository:
git clone https://github.com/your-username/OverAchiever.git cd OverAchiever -
Configure Environment: Create a
.envfile in the root directory (refer to the sample below):POSTGRES_USER=postgres POSTGRES_PASSWORD=your_password POSTGRES_DB=overachiever_db POSTGRES_HOST=db POSTGRES_PORT=5432 STEAM_API_KEY=your_key_here
-
Build and Launch:
docker-compose up --build -d
Once the containers are running, you can access the interactive API docs at http://localhost:8000/docs.
Once the server is running, access the interactive documentation at http://localhost:8000/docs.
GET /steam/search?q=Portal
Returns a list of matching Steam IDs and icons.
POST /games/search-and-add?q=The Witcher 3
Finds the #1 match on Steam, fetches HLTB times, and saves the fully enriched record to the database in one step.
OverAchiever/
├── app/
│ ├── api/ # Route definitions (Games, Steam)
│ ├── services/ # Business logic & External API clients (HLTB, Steam)
│ ├── models.py # SQLModel database schemas
│ ├── schemas.py # Pydantic API schemas
│ ├── database.py # SQLAlchemy session & engine config
│ └── main.py # FastAPI application bootstrap
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
└── .env