This guide helps you create a test user account that can be shared with people for demos and testing.
Use the automated script:
node scripts/create-test-profile.mjsThis will create:
- Email:
demo@innercity.app - Password:
Demo123! - Username:
demo_user - Display Name:
Demo User
You can customize the credentials:
node scripts/create-test-profile.mjs \
--email test@example.com \
--password MyPassword123! \
--display-name "Test User" \
--username test_user-
Environment Variables: Make sure you have
.env.localwith:VITE_SUPABASE_URL=https://your-project.supabase.co SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
-
Get Service Role Key:
- Go to: https://app.supabase.com/project/gdsblffnkiswaweqokcm/settings/api
- Copy the service_role key (
⚠️ Keep this secret!) - Add it to
.env.localasSUPABASE_SERVICE_ROLE_KEY
If you prefer to create the test user manually:
- Go to Supabase Dashboard: https://app.supabase.com/project/gdsblffnkiswaweqokcm
- Navigate to Authentication → Users
- Click "Add User" → "Create new user"
- Fill in:
- Email:
demo@innercity.app - Password:
Demo123! - Auto Confirm User: ✅ (check this)
- Email:
- Click "Create user"
- Copy the User ID (UUID)
- Go to SQL Editor in Supabase Dashboard
- Run this SQL (replace
YOUR_USER_ID_HEREwith the UUID from Step 1):
INSERT INTO public.profiles (
id,
username,
display_name,
bio,
interests,
home_city,
verified,
organizer_tier
) VALUES (
'YOUR_USER_ID_HERE'::UUID,
'demo_user',
'Demo User',
'This is a demo account for testing Inner City. Feel free to explore!',
ARRAY['music', 'nightlife', 'events', 'raves', 'concerts'],
'Berlin',
false,
'none'
)
ON CONFLICT (id) DO UPDATE SET
username = EXCLUDED.username,
display_name = EXCLUDED.display_name,
bio = EXCLUDED.bio,
interests = EXCLUDED.interests,
home_city = EXCLUDED.home_city;After creating the profile, verify it works:
- Open your app
- Go to login page
- Sign in with:
- Email:
demo@innercity.app - Password:
Demo123!
- Email:
- You should see the demo user profile
You can share these credentials with testers:
Email: demo@innercity.app
Password: Demo123!
Note: Consider creating multiple test accounts for different scenarios:
- Regular user
- Event organizer
- Verified user
If you need to reset the test profile:
# Delete and recreate
node scripts/create-test-profile.mjs --email demo@innercity.app --password Demo123!Or manually delete the user in Supabase Dashboard → Authentication → Users, then recreate.
⚠️ Don't use test credentials in production⚠️ Change default password if sharing publicly⚠️ Consider rate limiting test accounts⚠️ Monitor test account usage for abuse
To create multiple test accounts:
# Demo account 1
node scripts/create-test-profile.mjs --email demo1@innercity.app --username demo1
# Demo account 2
node scripts/create-test-profile.mjs --email demo2@innercity.app --username demo2
# Organizer account
node scripts/create-test-profile.mjs \
--email organizer@innercity.app \
--username organizer \
--display-name "Event Organizer"Then update the organizer account's organizer_tier in the database:
UPDATE public.profiles
SET organizer_tier = 'official'
WHERE username = 'organizer';The script will detect existing users and update their profile instead of failing.
Make sure .env.local has:
VITE_SUPABASE_URLSUPABASE_SERVICE_ROLE_KEY(orVITE_SUPABASE_ANON_KEYas fallback)
The script will retry and create the profile manually if the trigger doesn't work.
Make sure you're using the service_role key, not the anon key, for admin operations.