Verification
Confirm that your API keys, CLI, TypeScript types, and MCP are all working before you start Project 2.
Work through this checklist in order. Each item builds on the previous. If something fails, fix it before moving forward — a broken foundation creates confusing errors later.
Part 1: API Keys
1.1 — Keys found in the dashboard
Go to: Supabase dashboard → your project → Settings (gear icon) → API
- I can see the Project URL (format:
https://xxxxxxxxxxxxxxxxxxxx.supabase.co) - I can see the anon public key (long string starting with
eyJ) - I revealed and copied the service_role key (long string starting with
eyJ) - I saved the service_role key to VaultMate (category:
API Key, title:Supabase Service Role Key - [project name])
1.2 — .env file created
Open your project folder in VS Code. Confirm the following:
-
.env(or.env.localfor Next.js) file exists at the project root - It contains
VITE_SUPABASE_URL(orNEXT_PUBLIC_SUPABASE_URL) set to your Project URL - It contains
VITE_SUPABASE_ANON_KEY(orNEXT_PUBLIC_SUPABASE_ANON_KEY) set to your anon key -
.envappears in your.gitignorefile -
.env.exampleexists with placeholder values (safe to commit)
Quick check — open your terminal in the project folder and run: grep -c "SUPABASE_URL" .env
If it returns 1, the variable is in the file. If it returns 0, open .env and add it.
.env file in VS Code. Confirm the values are real strings starting with https:// (for the URL) and eyJ (for both keys). If either shows undefined, null, or is blank, the key was not saved correctly.1.3 — Supabase client initializes without error
In your project, open src/lib/supabase.ts (or wherever you created the Supabase client). Confirm:
- The file imports
createClientfrom@supabase/supabase-js - It reads the URL and key from environment variables (not hardcoded)
- No TypeScript errors appear in the file (no red underlines on the imports or createClient call)
Part 2: Access Token
2.1 — Token generated
Go to: Supabase dashboard → click your avatar (top-right) → Account → Access Tokens
- At least one token exists with a name you recognize
- The token was saved to VaultMate immediately after generation (category:
Token, title:Supabase Platform Access Token)
If you don't have a token yet — generate one now, copy it, save it to VaultMate before closing that page.
Part 3: Supabase CLI
3.1 — CLI installed
Run supabase --version in your terminal. The expected output is a version number like 1.200.3.
- The command returned a version number
If you see command not found, run npm install -g supabase, then close and reopen your terminal and try again.
3.2 — Logged in to CLI
Run supabase login in your terminal.
If a browser window opens and asks you to authenticate — do so. After authenticating, return to the terminal.
If the terminal prints something like You are now logged in. or immediately returns to the prompt without an error — you were already logged in.
-
supabase logincompleted without error
3.3 — Can list projects
Run supabase projects list in your terminal.
- My project appears in the list
- I can see the Reference ID (20-character string)
- I noted or copied my project's Reference ID
If the list is empty or the command errors, confirm supabase login was successful.
3.4 — Project ref saved
- I added the project ref to my project's
CLAUDE.md(format:**Supabase project ref:** \abcdefghijklmnop``)
Part 4: TypeScript Types
4.1 — Types generated
Run supabase gen types typescript --project-id YOUR_PROJECT_REF > src/lib/database.types.ts (replacing YOUR_PROJECT_REF).
Wait for it to complete. Then check:
- The file
src/lib/database.types.tsnow exists in your project - Opening the file shows TypeScript code with your table names (scroll through — you should see
Tables:followed by your table names)
If the command errors with "project not found," double-check your project ref from supabase projects list.
src/lib/database.types.ts in VS Code. Press Ctrl+F and search for one of your table names (e.g. fee_records). It should appear inside a Tables: block. If the file is empty or only shows {} with no table entries, no tables exist in your schema yet.4.2 — Types added to Supabase client
Open src/lib/supabase.ts. Confirm:
- It imports
Databasefrom./database.types(or@/lib/database.types) - The
createClientcall uses<Database>:createClient<Database>(url, key)
If not yet updated, add the import and the generic:
4.3 — Autocomplete works
In any file that imports supabase, write a test query:
After the opening quote, VS Code should show a dropdown suggesting your table names.
- VS Code autocompletes table names when writing
.from('
Type one of your table names and add .select(':
VS Code should suggest column names from that table.
- VS Code autocompletes column names when writing
.select('
You can delete this test query — it was only to confirm types are working.
Part 5: MCP Setup
5.1 — Configuration file exists
Confirm the Claude Code config file exists at:
-
Windows:
C:\Users\YourName\.claude\claude.json -
macOS/Linux:
~/.claude/claude.json -
The file exists and contains a
mcpServerssection withsupabaseconfigured
5.2 — Claude Code restarted after config change
- Claude Code was closed and reopened after the
claude.jsonfile was saved
5.3 — MCP connection works
In Claude Code (in your terminal), type List my Supabase projects. and press Enter.
Expected response: Claude lists your Supabase projects by name and reference ID — the same output as supabase projects list.
- Claude Code responded with a list of my Supabase projects
Then test a database query. In Claude Code, type What tables are in my [project name] project?
Expected response: Claude lists the tables in your project.
- Claude Code listed the tables in my project when asked
claude.json file has a syntax error. Open the file in VS Code to check for red underlines.All Clear — What You Now Have
If all checkboxes are ticked:
| Capability | Status |
|---|---|
| React app can connect to Supabase | Working (API keys in .env) |
| Column name typos caught before runtime | Working (TypeScript types) |
| Schema changes can be applied via terminal | Working (CLI authenticated) |
| Claude Code can query your database directly | Working (MCP connected) |
| Credentials stored securely | Done (VaultMate) |
You are ready to start Project 2.
Quick Reference Card
Save this somewhere visible while you're learning. You'll use these commands repeatedly:
Keep this page bookmarked during Project 2. You'll return to it when you need to remember a command or check that a step was completed correctly. It's also the first thing to revisit if something breaks — most "Supabase not connecting" errors trace back to one of the items in this checklist.