Decrypt Me is a React + Vite cryptogram game where users decode hidden messages, challenge friends, and play daily puzzles.
- Email/password and Google OAuth login via Supabase Auth
- Demo puzzle mode for first-time users (
/demo-game) - Send custom cryptogram challenges to connected users
- Invite/accept relationship flow before sending games
- Daily puzzle mode with up to 3 attempts and time tracking
- Curated message packs for quick game creation
- Solved games archive view
- In-game hints, lives, progress persistence, and give-up flow
- React 19
- Vite 7
- Tailwind CSS 4 + DaisyUI
- Supabase (Auth + Postgres + RPC)
- React Router 7
- AG Grid (archive table)
- Vercel Analytics
- Node.js 20+ (recommended)
- npm
- A Supabase project configured with the required schema/RPCs
Create a .env file in the project root:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_keynpm install
npm run devApp runs on the Vite dev server (default: http://localhost:5173).
npm run dev: start development servernpm run build: create production buildnpm run preview: preview production build locallynpm run lint: run ESLint
/login: login/signup page/demo-game: public demo puzzle/auth/callback: OAuth callback/: active games dashboard (protected)/daily: daily puzzle (protected)/:gameId: play a game session (protected)/new-game: create a new game (protected)/archive: solved games history (protected)/invite: pending invites (protected)/send-invite: send relationship invite (protected)/curated-packs: browse curated messages (protected)
This frontend expects Supabase tables/RPCs used by the app logic, including:
- Tables:
users,games,prompts,game_sessions,relationship_invites,user_relationships,daily_puzzles,daily_puzzle_attempts,curated_packs,single_player_progress,single_player_levels,user_pair_scores - RPC functions:
create_new_game,increment_pair_score,get_daily_puzzle_leaderboard
The project includes vercel.json and is ready to deploy on Vercel after setting required environment variables.