ورود با شماره موبایل در فلاتر؛ یک مینیدوره برای ساخت OTP واقعی
اگه دنبال ورود با شماره موبایل در فلاتر هستی، این دوره دقیقاً روی همین سناریو تمرکز میکنه؛ نه اینکه بخواد کل Supabase یا کل Flutter رو از صفر آموزش بده. قراره یک جریان واقعی ثبتنام و ورود با OTP بسازیم، کد تایید رو با SMS بفرستیم، کاربر رو اعتبارسنجی کنیم و این جریان رو داخل یک اپ Flutter به شکل تمیز پیاده کنیم.
توی این مینیدوره برای ساخت ورود با شماره موبایل در فلاتر از Flutter و Dart در سمت اپ، Supabase برای مدیریت کاربر و احراز هویت، و API کاوهنگار برای بخش پیامک استفاده میکنیم. هدف اینه که آخر دوره فقط چند خط کد کپی نکرده باشی؛ بفهمی درخواست از کجا شروع میشه، کد OTP چطور ارسال و بررسی میشه و بعد از تایید کاربر چه اتفاقی باید داخل اپ بیفته.
این دوره دقیقاً چیه و چی نیست؟
اول از همه تصویر واقعی داشته باشیم. این محصول یک دوره جامع Supabase نیست و قرار نیست تمام Database، Storage، Realtime، Edge Function و قابلیتهای مختلف Supabase رو آموزش بده. تمرکز این مینیدوره روی یک مسئله مشخص و خیلی کاربردیه: ورود با شماره موبایل در فلاتر. یعنی اگه هدفت اینه که برای اپ خودت ثبتنام و ورود بدون پسورد بسازی، اینجا مستقیم میریم سراغ همون چیزی که لازم داری.
ولی اگه دنبال آموزش کامل Supabase از صفر تا پیشرفته هستی، این دوره برای اون هدف ساخته نشده. اتفاقاً همین محدود بودن موضوع باعث میشه مسیر شفافتر باشه. بهجای چند ساعت مقدمه و موضوعات نامرتبط، مستقیم میریم سراغ طراحی و پیادهسازی ورود با شماره موبایل در فلاتر و تمام قطعههایی که برای کار کردن این جریان لازم داریم.

برای شروع چه چیزهایی باید بلد باشی؟
این دوره برای کسی ساخته شده که حداقل با Dart و Flutter آشنایی اولیه داره. لازم نیست برنامهنویس ارشد باشی، ولی بهتره Widget، Function، async/await، Package و ساختار کلی یک پروژه Flutter برات غریبه نباشن. اگه هنوز Dart رو شروع نکردی، اول دوره دارت انتخاب منطقیتریه. اگه Dart رو بلدی ولی خود Flutter برات جدیده، بهتره اول چند بخش پایه دوره فلاتر رو جلو بری و بعد برگردی سراغ ورود با شماره موبایل در فلاتر. این شفافیت مهمه، چون اینجا قرار نیست وسط ساخت OTP تازه توضیح بدیم Future چیه یا State چرا تغییر میکنه. میخوایم تمرکز اصلی روی خود جریان احراز هویت بمونه.
OTP دقیقاً چیه و چرا برای ورود استفاده میشه؟
وقتی کاربر شماره موبایلش رو وارد میکنه، سیستم یک کد یکبارمصرف یا OTP براش میفرسته. بعد کاربر همون کد رو داخل اپ وارد میکنه و سیستم بررسی میکنه که شماره واقعاً در اختیار همون کاربر هست یا نه. مزیت اصلی ورود با شماره موبایل در فلاتر اینه که کاربر لازم نیست یک رمز عبور جدید بسازه و بعد چند ماه بعد فراموشش کنه.
ولی ساده بودن ظاهر این جریان نباید گولت بزنه؛ پشت یک OTP درست، چند مرحله وجود داره: گرفتن شماره، اعتبارسنجی، درخواست ارسال کد، مدیریت زمان و خطا، بررسی OTP و ساخت Session یا وضعیت ورود کاربر. توی این دوره همین زنجیره رو مرحلهبهمرحله باز میکنیم تا بفهمی هر بخش چرا وجود داره، نه اینکه فقط یک Snippet آماده رو Paste کنی.

Supabase این وسط چه کاری انجام میده؟
توی پروژه ما Supabase بخشی از زیرساخت Backend و Auth رو مدیریت میکنه. بهجای اینکه از صفر سیستم User و Session و منطق احراز هویت بسازیم، از سرویسهای آماده استفاده میکنیم و تمرکز رو میذاریم روی اتصال درست اپ Flutter به جریان احراز هویت. در مسیر ساخت ورود با شماره موبایل در فلاتر یاد میگیری پروژه Supabase رو به Flutter وصل کنی، تنظیمات لازم رو انجام بدی، وضعیت کاربر رو مدیریت کنی و بفهمی کد سمت اپ چطور با سرویس Auth ارتباط میگیره. اینجا هدف حفظ کردن تنظیمات داشبورد نیست. مهمتر اینه که بعداً اگر ساختار پروژهات تغییر کرد، بدونی هر تنظیم کجای جریان قرار میگیره و چرا بهش نیاز داری.
کاوهنگار چه نقشی در پروژه داره؟
برای اینکه OTP واقعاً به شماره کاربر برسه، به یک سرویس ارسال SMS نیاز داریم. توی این دوره از کاوهنگار استفاده میکنیم تا بخش ارسال پیامک رو به پروژه وصل کنیم. در بخش مربوط به ورود با شماره موبایل در فلاتر میبینی چطور اطلاعات لازم برای ارسال کد آماده میشن، درخواست به API فرستاده میشه، پاسخ سرویس بررسی میشه و خطاهای احتمالی مدیریت میشن. نکته مهم اینه که هدف دوره تبلیغ یک سرویس خاص نیست. کاوهنگار اینجا ابزار پروژه ماست. چیزی که باید یاد بگیری منطق اتصال سرویس SMS به جریان OTPـه؛ چون اگر بعداً سرویس پیامکی عوض شد، نباید کل معماری اپت از اول نوشته بشه.
جریان ورود با شماره موبایل در فلاتر چطور کار میکنه؟
اول کاربر شماره موبایلش رو وارد میکنه. قبل از هر درخواست باید شماره رو بررسی کنیم تا ورودی خراب یا ناقص وارد مرحله بعد نشه. بعد درخواست تولید یا ارسال OTP انجام میشه و کاربر وارد صفحه تایید کد میشه. در مرحله بعدی ورود با شماره موبایل در فلاتر باید کدی که کاربر وارد کرده بررسی بشه.
اگه کد درست باشه، وضعیت احراز هویت تغییر میکنه و کاربر وارد بخش مربوط به حساب خودش میشه. اگه کد غلط، منقضی یا درخواست با خطا روبهرو شده باشه، اپ باید رفتار قابلفهمی داشته باشه. همین جاست که تفاوت پروژه واقعی با Demo مشخص میشه. Demo معمولاً Happy Path رو نشون میده؛ ولی ما باید Error، Loading، درخواست دوباره کد و وضعیتهای مختلف کاربر رو هم در نظر بگیریم.

در این مینیدوره چه چیزهایی یاد میگیری؟
در طول پروژه از ساخت و تنظیم پروژه شروع میکنیم و قدمبهقدم جریان ورود با شماره موبایل در فلاتر رو میسازیم. با اتصال Flutter و Supabase، کار با Packageهای لازم، ارتباط با API، ارسال SMS، دریافت OTP و تایید کاربر درگیر میشی. همزمان یاد میگیری کجا باید Loading نمایش داده بشه، خطا رو چطور به کاربر برسونی، چطور از ارسال چندباره بیدلیل جلوگیری کنی و چطور منطق Auth رو از UI جدا نگه داری تا کدت بعداً قابل توسعهتر باشه. هدف این نیست که بعد از سه ساعت بگیم «Supabase رو کامل بلدی». هدف خیلی مشخصتره: بتونی یک سیستم ورود با شماره موبایل در فلاتر رو بفهمی، پیاده کنی و بعد برای پروژه خودت تغییرش بدی.
آیا فقط کد آماده تحویل میگیری؟
نه. اگه فقط دنبال چند فایل آماده برای Copy/Paste باشی، احتمالاً خیلی زود به مشکل میخوری. چون کافیه Package تغییر کنه، API پاسخ متفاوت بده یا ساختار اپ خودت با نمونه دوره فرق داشته باشه؛ اون موقع کدی که نفهمیدی تبدیل به دردسر میشه. توی آموزش ورود با شماره موبایل در فلاتر تلاش میکنیم هر بخش رو با دلیلش جلو ببریم. چرا این درخواست اینجاست؟ چرا این State باید تغییر کنه؟ اگه ارسال SMS شکست خورد چی؟ اگه کاربر کد اشتباه زد چی؟ اگه دوباره درخواست کد داد چی؟ وقتی جواب این سؤالها رو بفهمی، پروژه دیگه فقط متعلق به دوره نیست؛ میتونی منطقش رو ببری داخل اپ خودت.

امنیت ورود با شماره موبایل در فلاتر فقط به یک کد ختم نمیشه
خیلی وقتها وقتی درباره OTP حرف میزنیم، تمام توجه میره روی همون کد چندرقمی. ولی امنیت ورود با شماره موبایل در فلاتر فقط خود کد نیست. تعداد درخواستها، مدت اعتبار، نگهداری Secretها، مدیریت Session، رفتار اپ در خطا و اینکه چه چیزی سمت Client قرار میگیره هم اهمیت دارن. در این مینیدوره قرار نیست ادعا کنیم یک دوره کامل امنیت Application Security میبینی؛
اما جاهایی که مستقیم به پروژه مربوطه، درباره تصمیمهای درست و اشتباه صحبت میکنیم تا از همون ابتدا عادت نکنی اطلاعات حساس رو داخل کد Client رها کنی یا هر درخواستی رو بدون کنترل بفرستی. برای پروژه Production همیشه باید تنظیمات امنیتی، محدودیت درخواستها و مستندات سرویسهایی که استفاده میکنی رو هم متناسب با شرایط واقعی پروژه بررسی کنی.
وقتی AI میتونه این کد رو بنویسه، چرا دوره ببینم؟
امروز میتونی به AI بگی «برام ورود با شماره موبایل در فلاتر با Supabase بنویس» و احتمالاً چند ثانیه بعد یک عالمه کد تحویل بگیری. مشکل از جایی شروع میشه که اون کد با نسخه Package تو یکی نیست، خطا میده، Session درست ساخته نمیشه یا API پیامک رفتاری متفاوت داره. اگه خودت جریان Auth رو نفهمی، نمیدونی مشکل کجاست. ولی وقتی منطق درخواست، OTP، Verification و State رو بلد باشی، AI تبدیل میشه به دستیار خیلی خوبی که سرعت کارت رو بالا میبره. پس این دوره قرار نیست با AI رقابت کنه. قرارِ کاری کنه وقتی AI برات کد ساخت، بتونی بفهمی چی نوشته، تغییرش بدی و اگر خراب بود خودت مسیر اشکال رو پیدا کنی.
آیا این دوره آموزش کامل Supabase است؟
نه؛ و بهتره قبل از خرید کاملاً شفاف بدونی. این محصول یک مینیدوره پروژهمحوره و Supabase رو در حدی جلو میبریم که برای ساخت ورود با شماره موبایل در فلاتر لازم داریم. پس اگر هدفت یادگیری عمیق PostgreSQL، RLS، Storage، Realtime، Edge Functions و تمام بخشهای Supabaseـه، این دوره بهتنهایی جواب اون هدف نیست. ولی اگه یک پروژه Flutter داری و دقیقاً میخوای بدونی Supabase و سرویس SMS رو چطور برای یک جریان OTP کنار هم قرار بدی، این تمرکز محدود اتفاقاً مزیت دوره است.

این دوره برای چه کسی مناسبه؟
اگه با Flutter کار کردی و حالا میخوای یک Auth واقعیتر از فرمهای تمرینی بسازی، این دوره به کارت میاد. اگه پروژهای داری که به ورود با شماره موبایل در فلاتر نیاز داره و نمیخوای بین چند مقاله، ویدیوی پراکنده و نسخههای مختلف Package سرگردان بشی، این مسیر برای همون مسئله ساخته شده. اگه میخوای نحوه اتصال Flutter، Supabase و یک سرویس SMS ایرانی رو داخل یک سناریوی واقعی ببینی، این مینیدوره دقیقاً روی همین اتصال تمرکز داره. اما اگه هنوز Dart و Flutter رو بلد نیستی یا دنبال آموزش جامع Supabase هستی، بهتره فعلاً سراغ این محصول نیای.
بعد از دوره چه کاری باید بتونی انجام بدی؟
بعد از پایان دوره باید بتونی جریان ورود با شماره موبایل در فلاتر رو برای پروژه خودت بازسازی کنی؛ از گرفتن شماره موبایل تا ارسال OTP، دریافت کد، تایید کاربر و مدیریت وضعیت ورود. باید بفهمی کدام بخش مربوط به UIـه، کدام بخش مربوط به منطق Authـه و سرویس SMS کجای معماری قرار میگیره. همچنین باید بتونی خطاهای رایج رو پیدا کنی و بهجای پاک کردن کل پروژه، مرحلهبهمرحله بفهمی مشکل از Flutter، Supabase یا API پیامکه. مهمتر از همه، باید بتونی نمونه دوره رو برای نیاز خودت تغییر بدی. چون ارزش پروژه آموزشی وقتی مشخص میشه که فقط روی سیستم مدرس کار نکنه و بتونی منطقش رو به پروژه واقعی خودت منتقل کنی.
چرا این دوره کوتاهه؟
چون موضوعش مشخصه. قرار نیست برای طولانیتر شدن دوره، چند ساعت موضوع جانبی بهش اضافه کنیم. تمام تمرکز روی ساخت ورود با شماره موبایل در فلاتر و چیزهاییه که مستقیم برای همین سناریو لازم داری. این محصول رو بیشتر به چشم یک Mini Course یا Workshop پروژهمحور ببین؛ چیزی که برای حل یک مسئله مشخص ساخته شده، نه یک مسیر صفر تا صد برای یادگیری Flutter یا Supabase. اگه بعداً این بخش به دوره اصلی Flutter منتقل بشه هم منطقش همینه: این یک مهارت مشخص داخل مسیر بزرگتر توسعه اپلیکیشنه.

قبل از خرید این نکته رو بدون
برای اجرای ورود با شماره موبایل در فلاتر در یک پروژه واقعی، سرویسهای بیرونی، پلنها، محدودیتها و APIها ممکنه در طول زمان تغییر کنن. چیزی که در این دوره مهمتر از حفظ کردن چند گزینه داخل Dashboardـه، فهم معماری و جریان کاره. پس قبل از استفاده Production، مستندات نسخه فعلی Packageها و سرویسهایی که انتخاب کردی رو هم بررسی کن. اگه جایی در اجرای پروژه دوره گیر کردی، از طریق سیستم تیکت میتونی سؤال فنیات رو مطرح کنی. اگه دقیقاً دنبال ساخت OTP و ورود با شماره موبایل در فلاتر هستی، این مینیدوره قراره بدون حاشیه همون مسئله رو باهات جلو ببره.







