Skip to content

Repository files navigation

Game Library

Track what you play, share what you think, and discover what comes next.

Game Library is a social game collection for discovering games, organizing a personal library, publishing reviews and curated lists, and connecting with other players. It combines live catalog data from RAWG with public profiles, progression, following, and a personalized activity feed.

Open the live application · Privacy · Terms

Showcase

Discover

Browse popular games, new releases, and critically acclaimed picks from the public home page.

Game Library Discover page showing popular games, new releases, and critically acclaimed collections

Personal library
Track play status, favorites, ratings, and hours with filters and collection statistics.

Signed-in Game Library page with collection statistics, filters, and game cards
Public player profiles
Share progression, collection stats, reviews, lists, and social connections.

Public Game Library player profile showing progression, collection statistics, and social information

Features

  • Game discovery — Popular, New Releases, and Critically Acclaimed collections, server-driven search, detailed game pages, artwork, and screenshots.
  • Personal library — Track Playing, Played, Want to Play, and Dropped games with favorites, ratings, hours played, filtering, and sorting.
  • Reviews and ratings — Publish and edit plain-text reviews for games in your library and view community rating summaries.
  • Player progression — Earn reversible XP from real library state, advance through levels and ranks, and unlock ten collection-based badges.
  • Public profiles — Share a username, display name, bio, accent, avatar, library statistics, recent reviews, lists, and collection.
  • Following and discovery — Search public players, follow or unfollow them, and browse follower/following lists.
  • Activity feed — See meaningful game and review milestones from players you follow, with local-time timestamps and pagination.
  • Curated lists — Create public ordered game lists, manage up to 50 games per list, and browse lists from player profiles.
  • Production authentication — Email verification, resend, forgot/reset password, Google sign-in, username onboarding, and secure SSR sessions.

Tech stack

Area Technology
Application Next.js 16 App Router, React 19, TypeScript
Styling Tailwind CSS 4 with a shared graphite and muted-lime design system
Backend Supabase Auth, Postgres, Row Level Security, and Storage
Validation and media Zod and Sharp
Game catalog RAWG API, accessed only from the server
Hosting and insights Vercel and Vercel Web Analytics
Testing Node test runner with TypeScript via tsx

Architecture and security

Pages and reads are Server Components by default. Interactive forms use small Client Components backed by Server Actions. Supabase SSR clients manage cookie sessions, while protected operations independently verify the current user.

The database uses explicit grants, constraints, foreign keys, and Row Level Security. Public profiles, libraries, reviews, follows, and lists are readable by design; authenticated writes are owner-only. Activity is visible only to authenticated users under the follow relationship. User identity always comes from the verified session rather than submitted form fields.

RAWG credentials and the Supabase secret key remain server-only. The privileged Supabase client is limited to caching validated canonical game metadata; user-owned writes continue through the authenticated client and RLS.

For implementation details and verification notes, see the focused reports in docs/.

Getting started

Prerequisites

  • Node.js 22 or newer
  • pnpm 10.34.5, as pinned in package.json
  • A Supabase project with the migrations in supabase/migrations applied in order
  • A RAWG API key

Local setup

git clone https://github.com/notAnKy/game-library.git
cd game-library
pnpm install --frozen-lockfile
cp .env.example .env.local
pnpm dev

Open http://localhost:3000. On Windows PowerShell, use Copy-Item .env.example .env.local instead of cp.

Populate .env.local with your own configuration. It is ignored by Git and must never be committed.

Variable Purpose
NEXT_PUBLIC_SUPABASE_URL Browser-safe Supabase project URL
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY Browser-safe Supabase publishable key; RLS remains authoritative
RAWG_API_KEY Server-only RAWG catalog key
SUPABASE_SECRET_KEY Server-only key used only to cache verified canonical game records
APP_URL Canonical application origin for authentication redirects and metadata

Google OAuth client credentials and SMTP credentials are configured in their provider dashboards, not in this repository.

Development commands

pnpm dev        # Start the local development server
pnpm typecheck  # Generate route types and run TypeScript checks
pnpm lint       # Run ESLint
pnpm test       # Run the regular focused test suite
pnpm build      # Create a production build
pnpm start      # Serve an existing production build

Live verification scripts in scripts/verify-*.mjs and SQL checks under supabase/tests/ have additional prerequisites and can affect a configured test project. They are intentionally separate from pnpm test; read the related phase document before using them.

Project structure

src/app/             Routes, layouts, route handlers, and Server Actions
src/components/      Shared UI, forms, game, library, social, and profile components
src/lib/             Auth, Supabase, RAWG, data access, validation, and domain logic
src/types/           Database and shared application types
supabase/migrations/ Ordered database, RLS, function, and storage migrations
supabase/tests/      Focused database security checks
tests/               Focused TypeScript tests
docs/                Feature architecture and verification reports

Product status

Game Library is deployed publicly on Vercel and remains under active development. The repository includes the implemented library, review, progression, social, activity, profile-customization, list, legal-page, metadata, and analytics phases. External provider settings for Supabase, Google OAuth, email delivery, and Vercel are managed outside source control.

Attribution

Game data and artwork are provided by RAWG. Game names, artwork, and trademarks belong to their respective owners.

About

A social game library for tracking, rating, reviewing, and discovering games with public player profiles and activity.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages