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
Browse popular games, new releases, and critically acclaimed picks from the public home page.
- 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.
| 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 |
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/.
- Node.js 22 or newer
- pnpm 10.34.5, as pinned in
package.json - A Supabase project with the migrations in
supabase/migrationsapplied in order - A RAWG API key
git clone https://github.com/notAnKy/game-library.git
cd game-library
pnpm install --frozen-lockfile
cp .env.example .env.local
pnpm devOpen 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.
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 buildLive 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.
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
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.
Game data and artwork are provided by RAWG. Game names, artwork, and trademarks belong to their respective owners.


