8.7 KiB
راهنمای کامل اتصال پروژه به Supabase
این راهنما به شما کمک میکند که پروژه را به Supabase متصل کنید.
📋 پیشنیازها
- یک حساب ایمیل (برای ثبتنام در Supabase)
- VPN (در صورت فیلتر بودن Supabase در ایران)
🚀 مرحله 1: ساخت حساب Supabase
- به آدرس https://supabase.com بروید
- روی دکمه "Start your project" یا "Sign Up" کلیک کنید
- با یکی از روشهای زیر ثبتنام کنید:
- GitHub
- ایمیل
- پس از ثبتنام و تأیید ایمیل، وارد Dashboard شوید
🆕 مرحله 2: ایجاد پروژه جدید
- در Dashboard، روی دکمه "New Project" کلیک کنید
- اطلاعات زیر را وارد کنید:
- Name: نام پروژه شما (مثلاً:
pwa-react-app) - Database Password: یک رمز عبور قوی انتخاب کنید (حتماً ذخیره کنید!)
- Region: نزدیکترین منطقه را انتخاب کنید (مثلاً
West USیاSoutheast Asia) - Pricing Plan: Free plan را انتخاب کنید
- Name: نام پروژه شما (مثلاً:
- روی "Create new project" کلیک کنید
- صبر کنید تا پروژه ایجاد شود (این کار 2-3 دقیقه طول میکشد)
🔑 مرحله 3: دریافت API Keys
-
پس از ایجاد پروژه، به صفحه Settings بروید
-
در منوی سمت چپ، روی "API" کلیک کنید
-
در این صفحه دو مقدار مهم را پیدا میکنید:
-
Project URL: آدرس پروژه شما
https://xxxxxxxxxxxxx.supabase.co -
anon public key: کلید عمومی (این کلید را میتوانید در frontend استفاده کنید)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
-
-
این دو مقدار را کپی کنید (بعداً نیاز دارید)
📝 مرحله 4: ایجاد فایل .env
- در ریشه پروژه (همان فولدری که
package.jsonاست)، یک فایل جدید با نام.envایجاد کنید - محتوای زیر را در آن قرار دهید:
VITE_SUPABASE_URL=https://xxxxxxxxxxxxx.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
⚠️ توجه: مقادیر را با اطلاعات واقعی پروژه خود جایگزین کنید!
- فایل را ذخیره کنید
🗄️ مرحله 5: ایجاد جداول در Database
- در Supabase Dashboard، به بخش SQL Editor بروید (از منوی سمت چپ)
- روی دکمه "New query" کلیک کنید
- کد SQL زیر را کپی و در ویرایشگر قرار دهید:
-- ایجاد جدول requests
create table requests (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
title text not null,
description text not null,
status text default 'pending' check (status in ('pending', 'in_progress', 'completed')),
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
updated_at timestamp with time zone default timezone('utc'::text, now()) not null
);
-- فعالسازی Row Level Security
alter table requests enable row level security;
-- Policy: همه میتوانند درخواستها را ببینند
create policy "Anyone can view requests" on requests
for select using (true);
-- Policy: کاربران میتوانند درخواست خودشان را ایجاد کنند
create policy "Users can insert their own requests" on requests
for insert with check (auth.uid() = user_id);
-- Policy: کاربران میتوانند درخواست خودشان را بهروز کنند
create policy "Users can update their own requests" on requests
for update using (auth.uid() = user_id);
-- ایجاد جدول messages
create table messages (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
content text not null,
created_at timestamp with time zone default timezone('utc'::text, now()) not null
);
-- فعالسازی Row Level Security
alter table messages enable row level security;
-- Policy: همه میتوانند پیامها را ببینند
create policy "Anyone can view messages" on messages
for select using (true);
-- Policy: کاربران احراز هویت شده میتوانند پیام ارسال کنند
create policy "Authenticated users can insert messages" on messages
for insert with check (auth.uid() = user_id);
- روی دکمه "Run" یا Ctrl+Enter بزنید
- اگر همه چیز درست بود، پیام موفقیت را میبینید
🔄 مرحله 6: فعالسازی Realtime
برای اینکه تغییرات به صورت real-time نمایش داده شوند:
- در Dashboard، به بخش Database بروید
- روی "Replication" از منوی سمت چپ کلیک کنید
- برای هر دو جدول (
requestsوmessages):- کلید toggle را فعال کنید
- یا از منوی dropdown، "Enable" را انتخاب کنید
🔐 مرحله 7: تنظیمات Authentication (اختیاری)
تنظیم Email Authentication:
به صورت پیشفرض فعال است و نیاز به تنظیم اضافی ندارد.
تنظیم Google OAuth (اختیاری):
اگر میخواهید ورود با Google داشته باشید:
- به Google Cloud Console بروید
- یک پروژه جدید ایجاد کنید یا پروژه موجود را انتخاب کنید
- به APIs & Services > Credentials بروید
- روی "Create Credentials > OAuth client ID" کلیک کنید
- نوع را Web application انتخاب کنید
- Authorized redirect URIs را اضافه کنید:
(URL پروژه Supabase خود را جایگزین کنید)https://xxxxxxxxxxxxx.supabase.co/auth/v1/callback - Client ID و Client Secret را کپی کنید
- در Supabase Dashboard:
- به Authentication > Providers بروید
- Google را پیدا کنید و فعال کنید
- Client ID و Client Secret را وارد کنید
- ذخیره کنید
✅ مرحله 8: تست اتصال
- سرور توسعه را متوقف کنید (اگر در حال اجراست)
- دوباره اجرا کنید:
npm run dev
- به آدرس
http://localhost:5173یاhttp://localhost:5174بروید - باید بنر زرد (حالت offline) ناپدید شود
- صفحه Login را ببینید
- یک حساب کاربری جدید بسازید و تست کنید
🐛 رفع مشکلات
مشکل: صفحه سفید یا خطا در console
راهحل:
- مطمئن شوید فایل
.envدر ریشه پروژه است - مقادیر URL و KEY را دوباره بررسی کنید
- سرور را restart کنید
مشکل: خطای "Invalid API key"
راهحل:
- کلید
anon keyرا دوباره از Settings > API کپی کنید - مطمئن شوید کلید کامل است و فضای خالی اضافی ندارد
مشکل: خطای Database connection
راهحل:
- مطمئن شوید جداول را ایجاد کردهاید (مرحله 5)
- بررسی کنید که Row Level Security policies درست تنظیم شدهاند
مشکل: Realtime کار نمیکند
راهحل:
- مطمئن شوید Realtime را برای جداول فعال کردهاید (مرحله 6)
📚 منابع بیشتر
🎉 تبریک!
اگر همه مراحل را با موفقیت انجام دادید، پروژه شما باید به Supabase متصل شده باشد و تمام ویژگیها کار کنند.
خلاصه کارهایی که انجام دادید:
- ✅ حساب Supabase ساختید
- ✅ پروژه جدید ایجاد کردید
- ✅ API Keys را دریافت کردید
- ✅ فایل
.envرا ساختید - ✅ جداول Database را ایجاد کردید
- ✅ Realtime را فعال کردید
اگر سوالی دارید یا مشکلی پیش آمد، میتوانید از مستندات Supabase یا تیم پشتیبانی کمک بگیرید.