Objective
Your mission
Run the 10-point pre-deployment checklist on your app, fix all failures, then deploy. Output: checklist_results.md.
You need: An app ready to deploy.
Time: 20 minutes.
Step 1: learn the checklist (3 min)
The checklist habit
Professional developers run checklists before every deploy. It's not about being cautious — it's about being systematic. The human brain can't hold 10 things to check simultaneously. A checklist externalizes that cognitive load. Run it every time, even if you're 'sure' everything is fine.
The 10 points:
- Environment variables set on the platform
- No hardcoded secrets in code
- RLS enabled on all database tables
- Error handling in place (every query checks
if (error)) - Loading states on all data-driven components
- Auth checks not commented out
- Tested on mobile viewport
- No
console.log statements in production - Favicon and meta tags set
- Full user flow tested end-to-end
Step 2: run the checklist (10 min)
For each item, check your app and note Pass or Fail.
Write in your file:
## Pre-Deployment Checklist
### 1. Environment Variables Set on Platform
Status: [Pass/Fail]
Evidence: [e.g., "All 3 vars from .env added to Vercel" or "Missing VITE_SUPABASE_ANON_KEY"]
Fix if failed: [what you did]
### 2. No Hardcoded Secrets in Code
Status: [Pass/Fail]
Evidence: [e.g., "grep found no sk_, eyJ, or key= in src/" or "Found hardcoded Supabase URL in App.tsx"]
Fix if failed: [what you did]
### 3. RLS Enabled on All Database Tables
Status: [Pass/Fail]
Evidence: [e.g., "Checked Supabase Dashboard — all 3 tables have RLS" or "habits table missing RLS"]
Fix if failed: [what you did]
### 4. Error Handling in Place
Status: [Pass/Fail]
Evidence: [e.g., "All supabase.from() calls have if(error) check" or "2 queries missing error check"]
Fix if failed: [what you did]
### 5. Loading States on Data Components
Status: [Pass/Fail]
Evidence: [e.g., "All 3 data components show loading skeleton" or "HabitList has no loading state"]
Fix if failed: [what you did]
### 6. Auth Checks Not Commented Out
Status: [Pass/Fail]
Evidence: [e.g., "No commented-out auth checks found" or "Found // if(!user) in Dashboard.tsx"]
Fix if failed: [what you did]
### 7. Tested on Mobile Viewport
Status: [Pass/Fail]
Evidence: [e.g., "Tested at 375px width — layout works" or "Buttons overlap at 375px"]
Fix if failed: [what you did]
### 8. No console.log in Production
Status: [Pass/Fail]
Evidence: [e.g., "grep found 0 console.log in src/" or "Found 5 console.log statements"]
Fix if failed: [what you did]
### 9. Favicon and Meta Tags Set
Status: [Pass/Fail]
Evidence: [e.g., "index.html has title, description, and favicon" or "Title still says 'Vite App'"]
Fix if failed: [what you did]
### 10. Full User Flow Tested
Status: [Pass/Fail]
Evidence: [e.g., "Signup → login → CRUD → logout all work" or "Signup fails silently"]
Fix if failed: [what you did]
Step 3: fix all failures (5 min)
Fix every item that failed before deploying. Don't skip any — even one failure can break the app for users.
Write in your file:
## Fixes Summary
Total failures found: [number]
Total fixes applied: [number]
All items now passing: [yes/no]
Step 4: deploy and test on live URL (2 min)
Deploy the app. Visit the live URL and run through the full user flow one more time.
Write in your file:
## Post-Deploy Verification
Live URL: [URL]
Full user flow tested on live site: [yes/no]
All features working: [yes/no]
You're sure the app is fine and short on time. What does the lesson say about the 10-point checklist?
The checklist exists because nobody can hold ten checks in their head at once. Running it every time is what catches the item you were sure about.