Definition
GameSnapshots is a game magazine with a card gacha attached (rebuilt from scratch on 2026-08-22). Reviews and news bring search traffic; an original-art card pack for each reviewed game turns that attention into credit spend. Each game gets one review (Korean, English, Japanese, Simplified and Traditional Chinese) and one eight-card pack. The review page links to that game’s draw page and the draw page links back to the review; a news item tied to a game shows its review in the sidebar.
Drawing costs one credit per card (the first draw each day is free). The server rolls a grade (Common, Rare, Epic, Legendary, Mythic, with weighted odds) and saves the card to the reader’s collection. Higher grades are rarer and render more elaborately; cards can be shown off on public pages or bought and sold for credits on the market (purchases are atomic server transactions, no minting).
Problem Statement
There is no shortage of game reviews, but few explain, for someone who has never played, what the game is, where the money goes and whether it suits them. Meanwhile the pleasure of collecting game art is scattered across fan-art platforms with unclear rights. GameSnapshots writes an explanatory review per game and attaches a collecting game built only on original art that captures each game’s mood, solving both on one screen.
Core Audience
- People choosing a game: college-age readers who want to know what the talked-about game is, what the first ten hours feel like and where the monetisation bites
- Collectors: users who want to collect and trade graded art cards of games they like
- Multilingual search traffic: readers arriving via game names in Korean, English, Japanese and Chinese
Core User Flow
- Read: home hero (latest review) → review list → detail (score, game facts, what works and what does not, verdict, related news)
- Draw: the review sidebar CTA or the card-draw lobby → pick a pack → one credit per card (daily free draw) → reveal → collection
- Collect and trade: collection (grade summary, list for sale, discard) → market (grade filter, buy) → card detail (share, owner)
Key Features
- Reviews: one per game in all five languages, with a 0-5 score, platforms, developer, release, pricing model, pros and cons and a one-line verdict (Review JSON-LD)
- News: only releases, updates and announcements worth knowing, with the background explained and a source link on every item
- Card draw: per-game packs, server-authoritative grade roll, art pick and charging (shared mrlatte credits), daily free draw, reveal animation
- Collection and market: collect by grade, list and unlist, buy (pure transfer), discard, social proof from issue and trade counters
- Original art: every card and hero image is made by the operator in Midjourney, evoking the game’s world without names, characters or trademarks; disclosed in the footer and on card pages
- Five locales: ko/en/ja/zh-cn/zh-tw URL routes, root splash auto-selection, card titles localised too
- Mobile app: an Expo WebView shell around the site with a native Google sign-in bridge
Design Points
- All content lives in the repo: review and news markdown plus game, card and prompt JSON. Firestore holds only the synced draw pool
- Self-hosted images only: no hotlinks or official screenshots; a CSS foil cover stands in until a hero image arrives
- Cards are fully server-authoritative: nothing about the next card exists in page source or network traffic before the draw
- Midnight Arcade design: dark canvas, a single ember action colour, holographic cards; gold is reserved for currency
Tech Stack
- Frontend: Astro 7 (plain CSS, every page prerendered), markdown content collections + local JSON
- Mobile: Expo (React Native) WebView shell
- Backend: Firebase Auth + Firestore (named DB
gamesnapshotsfor the draw pool, shared mrlatte DB for cards and credits) + mrlatte Cloud Functions (draw and market callables) - Hosting: Firebase App Hosting (project mrlatte, rootDirectory web); Storage mirrors card images
- Art pipeline:
data/art/*.jsonprompts → operator Midjourney →scripts/ingest-art.py→ GitHub Actions mirror and pool sync