ویرگول
ورودثبت نام
رضا پارسیان | سازنده PromoSMS.ir
رضا پارسیان | سازنده PromoSMS.irFull-Stack Developer (Laravel/Vue) | در حال ساخت PromoSMS.ir | نوشتن درباره کدنویسی، رشد استارتاپ و بازاریابی فنی 💻📈
رضا پارسیان | سازنده PromoSMS.ir
رضا پارسیان | سازنده PromoSMS.ir
خواندن ۴ دقیقه·۱۱ ساعت پیش

چگونه یک سرویس پیامک انبوه را با Laravel ساختیم؟ (از ایده تا اجرا)

سلام دوباره، با یک داستان جدید 👋

پرومو اس‌ام‌اس
پرومو اس‌ام‌اس

سلام به همه دوستان قدیمی ویرگول! رضا هستم، همون توسعه‌دهنده‌ای که چند سال پیش درباره Laravel و API می‌نوشت.

توی این چند سال، از کدنویسی صرف فاصله گرفتم و وارد دنیای چالش‌برانگیز «ساخت محصول» شدم. امروز می‌خوام داستان ساخت PromoSMS رو براتون تعریف کنم؛ سرویسی که از یک نیاز شخصی شروع شد و حالا داره به کسب‌وکارهای ایرانی کمک می‌کنه بهتر با مشتریانشون ارتباط بگیرن.

اگر شما هم:

- توسعه‌دهنده‌اید و می‌خواید بدونید پشت صحنه یک سرویس SaaS ایرانی چه می‌گذره،

- یا صاحب کسب‌وکارید و می‌خواید بدونید چطور می‌تونید با پیامک فروش‌تون رو افزایش بدید،

این مقاله برای شماست. بریم شروع کنیم! 👇


چرا اصلاً سراغ ساخت پنل پیامک رفتم؟ 🤔

همه چیز از یک مشکل شخصی شروع شد.

وقتی داشتم روی یک پروژه فروشگاهی کار می‌کردم، نیاز داشتم که به مشتریانم پیامک تأیید سفارش بفرستم. رفتم سراغ پنل‌های موجود، اما با چند چالش روبرو شدم:

1. مستندات فنی ضعیف: وب‌سرویس‌ها یا داکیومنت نداشتن، یا مثال‌هاشون قدیمی بود.

2. پیچیدگی برای توسعه‌دهنده: برای یک کار ساده مثل ارسال OTP، باید از ده تا منو رد می‌شدم!

3. عدم شفافیت قیمت: بعضی پنل‌ها هزینه‌های پنهان داشتن که تازه بعد از شارژ معلوم می‌شد.

با خودم گفتم: «من که Full-Stack کار می‌کنم، چرا یک سرویس ساده‌تر، شفاف‌تر و دولوپر-فرندلی نسازم؟»

و این‌طور شد که PromoSMS متولد شد.


چالش‌های فنی ساخت یک سرویس پیامک با Laravel 💻

اینجا می‌خوام کمی فنی‌تر بشم (بخش مورد علاقه دولوپرها!). ساختن یک پنل پیامک فقط «ارسال درخواست HTTP به اپراتور» نیست. چند تا چالش جدی وجود داشت:

🔹 مدیریت صف‌ها (Queue) برای ارسال انبوه

وقتی یک کاربر می‌خواد ۱۰,۰۰۰ پیامک تبلیغاتی بفرسته، نمی‌تونی همون لحظه همه رو ارسال کنی. سرور کرش می‌کنه!

راه‌حل من: استفاده از Laravel Queue + Redis

// مثال ساده: ارسال پیامک در پس‌زمینه SendSmsJob::dispatch($phoneNumber, $message) ->onQueue('sms') ->delay(now()->addSeconds(5));

این‌طوری کاربر سریع فیدبک می‌گیره و ارسال واقعی در پس‌زمینه انجام میشه.

🔹 یکپارچه‌سازی با چندین اپراتور

هر اپراتور پیامک در ایران API متفاوتی داره (REST، SOAP، حتی XML!).

راه‌حل: طراحی یک Interface واحد و پیاده‌سازی Adapter برای هر اپراتور:

interface SmsProviderInterface { public function send(string $to, string $message): bool; } class MedianaAdapter implements SmsProviderInterface { ... } class KavenegarAdapter implements SmsProviderInterface { ... }

این معماری به من اجازه میده بدون تغییر کد اصلی، اپراتور جدید اضافه کنم یا اگر یکی دان‌شد، خودکار سوئیچ کنم به بعدی.

🔹 مقیاس‌پذیری و مانیتورینگ

وقتی تعداد کاربران زیاد شد، دیگه نمی‌تونستم با dd() دیباگ کنم! 😅

ابزارهایی که نجاتم دادن:

  • Laravel Telescope برای دیباگ درخواست‌ها

  • Sentry برای ردیابی خطاها

  • Laravel Horizon برای مانیتور کردن Queueها

💡درس فنی: همیشه از روز اول لاگ‌گیری و مانیتورینگ رو جدی بگیر. وقتی مشکل پیش بیاد، وقت دیباگ ندارید!


درس‌های بیزینسی که کدنویسی به من یاد نداد 📈

اینجا می‌خوام از دنیای کد بیام بیرون و درباره چیزی بگم که برای صاحبان کسب‌وکار جالب‌تره.

وقتی PromoSMS رو ساختم، فکر می‌کردم «اگر محصول فنی‌ام خوب باشه، مشتریان خودشون میان». اما اشتباه می‌کردم!

🔸 درس ۱: مشتری «فیچر» نمی‌خره، «راه‌حل مشکل» می‌خره

یک صاحب فروشگاه اینستاگرامی نمی‌خواد بدونه من از Redis استفاده کردم یا نه. اون می‌خواد بدونه:

«آیا می‌تونم وقتی سفارش جدید اومد، خودکار به مشتری پیامک بزنم تا اعتمادش جلب بشه؟»

پس توی پنل، فیچرها رو با زبان «سود کسب‌وکار» توضیح دادم، نه زبان فنی.

🔸 درس ۲: پشتیبانی سریع = وفاداری مشتری

توی ایران، خیلی از پنل‌های بزرگ پشتیبانی‌شون ساعت‌ها طول می‌کشه. من تصمیم گرفتم:

  • پاسخ به تیکت‌ها در کمتر از ۲ ساعت کاری

  • پاسخ مستقیم من (به‌عنوان سازنده) به سوالات فنی در لینکدین و توییتر

نتیجه؟ کاربران قدیمی دارن دوستانشون رو معرفی می‌کنن. این یعنی بازاریابی رایگان!

🔸 درس ۳: شفافیت، اعتماد می‌سازه

توی صفحه تعرفه‌ها، دقیقاً نوشتم هر پیامک چقدر هزینه داره. بدون «هزینه پنهان»، بدون «کارمزد نامرئی».

شاید فکر کنید اینطوری سودم کمتر میشه، اما برعکس: وقتی کاربر اعتماد کنه، بیشتر شارژ می‌کنه و طولانی‌تر می‌مونه.


حالا نوبت شماست 👇

اگر شما هم توسعه‌دهنده‌اید و می‌خواید این سرویس رو تست کنید:

  • 📚 مستندات فنی

  • 🎁 پیامک رایگان برای شروع

اگر صاحب کسب‌وکارید و می‌خواید بدونید چطور با پیامک فروش‌تون رو افزایش بدید من رو دنبال کنید


و در پایان... ✨

ساختن یک محصول، فقط کدنویسی نیست. ترکیبی‌ه از:

  • تخصص فنی ✅

  • درک نیاز مشتری ✅

  • صبر و یادگیری مستمر ✅

اگر شما هم ایده‌ای دارید که می‌خواید تبدیلش کنید به محصول، یا سوالی درباره پیاده‌سازی فنی PromoSMS دارید، توی کامنت‌ها بنویسید. قول میدم شخصاً جواب بدم. 👇

ممنون که تا اینجا خوندید. اگر این مقاله براتون مفید بود، با به‌اشتراک‌گذاری‌اش به من کمک کنید تا داستان‌های بیشتری از پشت صحنه استارتاپ‌های ایرانی براتون بنویسم. 💙

#لاراول #استارتاپ #پیامک_مارکتینگ #توسعه_فردی #PromoSMS #برنامه_نویسی #کسب_و_کار_اینترنتی

laravelبرنامه نویسیتوسعه فردیفروشگاه اینستاگرامیکسب کار
۲
۰
رضا پارسیان | سازنده PromoSMS.ir
رضا پارسیان | سازنده PromoSMS.ir
Full-Stack Developer (Laravel/Vue) | در حال ساخت PromoSMS.ir | نوشتن درباره کدنویسی، رشد استارتاپ و بازاریابی فنی 💻📈
شاید از این پست‌ها خوشتان بیاید