Skip to content

Repository files navigation

Renaiss Library

A Pokémon collection tracker powered by Renaiss valuations and marketplace data.

Scan a slab, browse complete English series, organize cards across multiple collections, and compare your portfolio with live Renaiss market signals.

Built for the Renaiss Hackathon 2026.

Submission links

What it does

  • Add cards 4 ways — scan a slab photo (multi-pass OCR runs locally in the browser), look up a PSA cert number via the Renaiss API, search the Renaiss catalog by name, or enter manually. Every path always produces a result: if no market match is found you can save the card from the scanned label data and match it later.
  • Renaiss-first valuation — every card is valued through the Renaiss Index where possible, with Pokémon TCG API as a labeled fallback. Confidence tiers (HIGH / MEDIUM / UNKNOWN) and valuation sources are shown on every card so you always know where a number came from.
  • One-click Renaiss Sync — re-match an entire collection against the Renaiss Index: refreshes prices, upgrades manual entries to Renaiss-tracked cards, and updates marketplace status, with per-card progress.
  • Live marketplace report — the Market page shows cards listed for sale on renaiss.xyz/marketplace right now: total ask value, median ask vs FMV, undervalued listings, and an ask-vs-FMV chart. Auto-refreshes every 60 seconds.
  • Portfolio analytics — per-collection value, P&L, grade breakdown, Renaiss coverage %, and filters by grade / source / marketplace status.

How it connects to Renaiss Protocol

Integration How
Renaiss Index API (api.renaissos.com/v1/search) card search, cert lookup, valuation + confidence tiers
Renaiss marketplace (renaiss.xyz) live listings parsed server-side from the marketplace RSC payload (ask price in USDT-18dp, FMV in cents)
Renaiss indices (/v1/indices, /v1/cards/featured, /v1/trades/recent) market panels, featured cards, recent trades
Renaiss coverage model every owned card tracks renaissCardId, marketplace status, and valuation freshness

Tech stack

Next.js 16 (App Router) · React 19 · Tailwind 4 · Recharts · Tesseract.js (client-side OCR) · localStorage persistence (no account needed).

Repository structure

Runtime code is separated by execution boundary: browser-safe API clients in lib/api, local persistence in lib/client, pure business logic in lib/domain, and credentials/proxy controls in lib/server. See docs/architecture.md for the complete dependency rules.

Run it locally

npm install
cp .env.example .env.local
npm run dev

Open http://localhost:3000.

Optional .env.local keys:

RENAISS_API_KEY=            # from the Renaiss hackathon dev tools
RENAISS_API_SECRET=
POKEMON_PRICE_TRACKER_API_KEY=   # optional fallback pricing

Never commit .env.local. The app works without private keys too: Renaiss routes degrade gracefully and the UI labels fallback data.

Quick start for judges

git clone <repository-url>
cd psa-tracker
npm ci
cp .env.example .env.local
npm run dev

Open http://localhost:3000. No account or database setup is required because the MVP stores collections locally in the browser.

Quality gates

npm run security:scan
npm run typecheck
npm run build
npm run test:e2e
npm audit --omit=dev

The latest repository scan receipts are under docs/security-scan/.

Suggested test flow (for judges)

  1. /collections — create a collection (or use the default).
  2. /scanner — try all four add paths:
    • Scan slab: upload a photo of a PSA slab; multi-pass OCR reads the label, then confirm the match (results are ranked by the card number read off the label).
    • Add by Cert #: paste a PSA cert number → exact Renaiss lookup.
    • Search Renaiss: type a card name (e.g. "Charizard").
    • Manual Entry: fallback form.
  3. /portfolio/<collection> — press ⟳ Sync with Renaiss and watch coverage/prices update; check the Renaiss Coverage tab.
  4. /cards — the live renaiss.xyz marketplace report: stats, best deals vs FMV, and listings that link back to the marketplace.

Notes & scope decisions

  • Data is stored in localStorage by design — the MVP is a zero-signup local tracker; sync/auth is the obvious next step.
  • Renaiss valuation is labeled beta throughout the UI; fallback and manual values are labeled separately so data provenance is always visible.
  • The portfolio value chart reconstructs history from when cards were added; per-day price snapshots are on the roadmap.

Privacy and security

  • API credentials remain in server-only environment variables.
  • Browser requests use same-origin API routes rather than exposing provider secrets.
  • Uploaded slab images and collection data stay in the user's browser for this MVP.
  • Security headers and automated repository checks run in GitHub Actions.

License

Released under the MIT License.

About

Renaiss Library

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages