6ab65ef87ea09ef29a754e05102a60e3fa91d1b6
ci/woodpecker/push/woodpecker Pipeline was successful
YuGiOh Collection Manager — API
Node.js/Express API for the YuGiOh collection manager. Handles card data, set browsing, image serving, and DB imports from YGOPRODeck.
Tech Stack
- Node.js + Express 5
- MySQL2 (connection pool)
- Axios — YGOPRODeck API requests + card image fetching
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /exportCards |
All cards with printings and owned counts |
| GET | /cardImage/:cardId |
Card image (fetches + caches blob on first request) |
| GET | /sets |
All sets with owned card counts |
| GET | /sets/:setId/cards |
Cards in a specific set |
| PUT | /collection/amount |
Update owned count for a printing |
| POST | /import/full-import |
Full DB import from YGOPRODeck |
| POST | /import/sets |
Import sets only |
| POST | /import/cards |
Import cards only |
| GET | /db-version |
Current local DB version |
Development
npm install
cp .env.example .env # fill in DB credentials
node src/index.js
Deployment
Built as a Docker image. CI/CD via Woodpecker on push to main.
docker build -t yugioh-api .
docker run -d --name yugioh-api --network yugioh --env-file .env yugioh-api
Environment
| Variable | Description |
|---|---|
DB_HOST |
MySQL host |
DB_PORT |
MySQL port (default 3306) |
DB_USER |
MySQL user |
DB_PASSWORD |
MySQL password |
DB_NAME |
Database name |
YGOPRO_API_BASE |
YGOPRODeck API base URL |
PORT |
Server port (default 3000) |
Description
Languages
JavaScript
99.4%
Dockerfile
0.6%