An open API service indexing awesome lists of open source software.

https://github.com/stefanbobrowski/gglist


https://github.com/stefanbobrowski/gglist

cloudsql css express gcp javascript nodejs postgres postgresql react typescript vite

Last synced: 6 months ago
JSON representation

Awesome Lists containing this project

README

          

# GGList – Developer Overview

https://gglist.app/
GGList is a full-stack app for tracking and ranking user favorites. This version uses PokΓ©mon cards, but it’s built to work with anything β€” games, movies, books, whatever. Users log in with Google, favorite up to 10 items, and see a leaderboard of top picks across all users.

---

## πŸ”§ Stack Overview

### Frontend

- **React + Vite + TypeScript**
- Auth via **Google Sign-In**
- Uses **React Context** for auth state
- REST API calls with `fetch`
- No CSS frameworks β€” all custom styles
- Deployed on **GCP Cloud Run**

### Backend

- **Node + Express + TypeScript**
- Auth with **JWT** (signed server-side)
- Routes for `/auth`, `/favorites`, `/top`, `/pokemon`
- Local cache layer for PokΓ©mon dataset (cache/pokemon.json) avoids API/database calls
- Protected routes using middleware
- Rate limiting with `express-rate-limit`

### Database

- **PostgreSQL** via Google **Cloud SQL**
- Table: `favorites (user_id, card_id)`
- Seeded with a JSON list of PokΓ©mon cards

---

## ☁️ Google Cloud Platform

- **Cloud Run** (frontend and backend separately containerized)
- **Cloud SQL** for PostgreSQL
- **GitHub Actions** for CI/CD with **Workload Identity Federation**
- **Artifact Registry** for Docker images
- All environment secrets stored securely (nothing committed)

---

## What Makes GGList Reusable

This isn’t just a PokΓ©mon demo β€” the whole setup is meant to be repurposed:

- Swap in any dataset (games, movies, etc.)
- Favorites system stays the same
- Leaderboard auto-updates from the database
- Minimal changes needed in seed script and UI copy

---

## Local Dev

```bash
# Frontend
cd frontend && npm install && npm run dev

# Backend
cd backend && npm install && npm run dev
```

## Repo Structure (simplified)

```
gglist/
β”œβ”€β”€ backend/
β”‚ β”œβ”€β”€ src/routes/
β”‚ β”œβ”€β”€ src/middleware/
β”‚ β”œβ”€β”€ src/utils/
β”‚ └── Dockerfile
β”œβ”€β”€ frontend/
β”‚ β”œβ”€β”€ src/
β”‚ └── Dockerfile
└── .github/workflows/
```

## Repo

πŸ”— github.com/stefanbobrowski/gglist

## Author

### Stefan Bobrowski

🌐 stefanbobrowski.com
πŸ“¦ github.com/stefanbobrowski