A full-stack web application that aggregates Pokémon card data and presents it through an interactive dashboard with charts, sortable tables, and drill-down views.
This is a portfolio project built to demonstrate full-stack development, API design, data pipeline construction, and analytical reporting skills.
- Pulls card and set metadata from TCGdex — a free, open-source Pokémon TCG API
- Stores card data in PostgreSQL hosted on Neon
- Serves the data through a custom-built REST API (FastAPI)
- Presents everything in a Vue.js dashboard with a set selector, price chart, and sortable card table
| Layer | Technology |
|---|---|
| API | Python 3.12, FastAPI, Uvicorn |
| ORM / Migrations | SQLAlchemy, Alembic |
| Database | PostgreSQL via Neon |
| Frontend | Vue 3, Vite, Vuetify 3, Chart.js |
| Package Management | uv |
| Containers | Docker / Podman |
| Milestone | Description | Status |
|---|---|---|
| 1 | Minimum viable demo — full vertical slice | Complete |
| 2 | Real market pricing via eBay, price history | Not started |
| 3 | Multi-set support, analytical reporting | Not started |
| 4 | Excel export, Power BI integration | Not started |
| 5 | Auth, automation, production hardening | Not started |
- Python 3.12+
- Node.js 20+
- uv —
scoop install uvorpip install uv - A Neon account (free tier is sufficient)
cp .env.example .envFill in DATABASE_URL with your Neon connection string. It must include ?sslmode=require.
cd api
uv sync
./run.ps1 # Windows
./run.sh # macOS / LinuxThe API runs on http://localhost:8000. Alembic migrations run automatically on startup — no manual schema setup required.
Run this once to populate the database. Safe to re-run — sets and cards are upserted.
cd ingestion
uv sync
./run_ingest.ps1 -SetId base1 # Windows
./run_ingest.sh base1 # macOS / Linuxcd frontend
npm install
./run.ps1 # Windows
./run.sh # macOS / LinuxThe dashboard runs at http://127.0.0.1:5173.
Interactive API documentation is available while the API is running:
| URL | |
|---|---|
| Swagger UI | http://localhost:8000/docs |
| ReDoc | http://localhost:8000/redoc |
| Method | Endpoint | Description |
|---|---|---|
| GET | /sets |
List all sets |
| GET | /sets/{set_id} |
Get a single set |
| GET | /sets/{set_id}/cards |
Get all cards for a set |
| GET | /cards/{card_id} |
Get a single card with latest prices |
- Project Overview — goals, milestones, and architecture
- Development Setup — detailed setup instructions for all platforms
- Milestone 1 — scope and structure for the current milestone
- TCGdex API Specs — internal reference for the TCGdex REST API