matchups

stale personal

Classic Concentration Game

README

# Matchups - Memory Match Game

A family-friendly memory matching game built with Next.js, TypeScript, Tailwind CSS, and Supabase.

![Matchups Logo](./docs/logo.png)

## Features

- **Classic Concentration Gameplay**: Flip cards to find matching pairs
- **Three Difficulty Levels**:
  - Easy: 4×4 grid (8 pairs)
  - Medium: 6×4 grid (12 pairs)
  - Advanced: 8×6 grid (24 pairs)
- **10 Icon Categories**:
  - Animals (with emphasis on monkeys & black labs)
  - Toys
  - Foods & Snacks
  - Space
  - Travel
  - College Mascots (generic/inspired designs)
  - Dinosaurs
  - Weather
  - Sports Gear
  - Music Instruments
- **Preview Phase**: See all cards for 1.5 seconds before the game starts
- **Global Leaderboards**: Top 10 per difficulty level using Supabase
- **Frequent Flyers**: Easter egg system that sprinkles special icons across categories
- **Mobile-First Design**: Touch-friendly with responsive layouts
- **Anonymous Authentication**: No registration required via Supabase anonymous sign-in

## Tech Stack

- **Framework**: Next.js 14 (App Router)
- **Language**: TypeScript (strict mode)
- **Styling**: Tailwind CSS
- **Database & Auth**: Supabase (PostgreSQL + Auth)
- **State Management**: React useReducer

## Getting Started

### Prerequisites

- Node.js 18+
- npm or yarn
- A Supabase account (free tier works great)

### 1. Clone the Repository

```bash
git clone <repository-url>
cd matchups
```

### 2. Install Dependencies

```bash
npm install
```

### 3. Set Up Supabase

#### Create a Supabase Project

1. Go to [supabase.com](https://supabase.com) and create a new project
2. Wait for your project to be provisioned

#### Apply Database Migration

1. Open your Supabase project dashboard
2. Go to **SQL Editor**
3. Create a new query and paste the contents of `supabase/migrations/001_create_scores.sql`
4. Click **Run** to execute the migration

#### Enable Anonymous Sign-In

1. Go to **Authentication** → **Providers**
2. Find **Anonymous Sign-In** and enable it

> **Note*

…(truncated for upload size)

STATUS

No STATUS.

DECISIONS

No DECISIONS.

MEMORY

No MEMORY.

CLAUDE.md

No CLAUDE.md.

Diary mentions

No recent diary mentions for this app.