SnappAPI – سیستم درخواست سفر آنلاین 🚖



SnappAPI یک سیستم درخواست تاکسی آنلاین است که با استفاده از Laravel 12 توسعه داده شده است. این پروژه امکان درخواست سفر، مدیریت وضعیت سفر و تعامل میان کاربران و رانندگان را فراهم میکند.
-
ثبت درخواست سفر: هر کاربر میتواند با استفاده از متد
store
درخواست سفر ثبت کند. -
پردازش درخواست: درخواست سفر در یک Listener پردازش شده و فاصلهی مبدأ و مقصد محاسبه میشود. بر اساس این فاصله، هزینه سفر نیز محاسبه خواهد شد.
-
برادکست به رانندگان: اطلاعات سفر (مبدا، مقصد، فاصله و قیمت) برای نزدیکترین رانندگان در دسترس، روی کانال
**driver**
برادکست میشود. -
پذیرش درخواست توسط راننده: در صورتی که یک راننده درخواست را با متد
accept
بپذیرد، اطلاعات راننده و درخواست، روی کانال**users**
برادکست میشود. -
پیگیری وضعیت: کاربر میتواند با متد
status
وضعیت فعلی سفر خود را بررسی کند (مثلاً مشاهده کند که آیا راننده رسیده است یا خیر). -
راننده میتواند با متد
status
وضعیت فعلی خود را در سیستم مشاهده کند. -
پایان سفر: پس از اتمام سفر، راننده با متد
complete
پایان سفر را اعلام میکند و وضعیت او دوباره به "در دسترس" تغییر مییابد.
- Laravel 12 🚀 (بکاند اصلی)
- Laravel Sanctum 🔐 (احراز هویت کاربران و رانندگان)
- Redis ⚡ (کشینگ و بهینهسازی عملکرد)
- Laravel Reverb 📡 (برادکست رویدادها و ارتباط زنده)
- SQLite 🛢 (پایگاه داده اصلی)
- l5-swagger 📜 (مستندسازی API)
- PhpUnit 🧪 (تست کیفیت کد)
۱. پروژه رو کلون کن:
git clone [email protected]:pouria-azad/SnappAPI.git
cd SnappAPI
۲. وابستگیها رو نصب کن:
composer install
npm install
۳. فایل .env رو تنظیم کن و اطلاعات دیتابیس رو وارد کن:
cp .env.example .env
php artisan key:generate
۴. دیتابیس رو migrate کن:
php artisan migrate --seed
۵. داکیومنت هارو بساز کن:
php artisan l5-swagger:generate
۶. اجرای Redis برای بهینهسازی سرعت:
redis-server
۷. پروژه رو اجرا کن:
php artisan serve
php artisan reverb:start
php artisan queue:work
⏳ تا زمانی که درخواست فعلی کاربر پذیرفته نشده یا سفر فعلی او به پایان نرسیده، نمیتواند درخواست جدیدی ثبت کند.
🚗 راننده نیز تا زمانی که در یک سفر باشد، نمیتواند درخواست جدیدی را بپذیرد.
🔄 در حال حاضر، پردازش درخواست سفر از طریق Listener انجام میشود.
📊 اطلاعات رانندگانی که درخواست را دریافت کردهاند در دیتابیس ذخیره میشود. این امکان در آینده وجود دارد که با استفاده از Job پردازش درخواستها را مدیریت کنیم و مانند اسنپ، هر چند ثانیه یکبار دامنهی جستجوی رانندگان نزدیک را افزایش دهیم.
🔑 تمامی کاربران (رانندگان و مسافران) نیاز به احراز هویت با Sanctum Token دارند.
📜 تمامی متدها مستندسازی شده و تستهای PHPUnit برای آنها نوشته شده است.
- Role: Developer
- GitHub: Amyrosein
📌 این پروژه بهعنوان یک کلون از Snapp / Uber طراحی شده و قابلیت گسترش و شخصیسازی دارد.
🚀 اگر سوالی داشتی یا میخوای پروژه رو بهبود بدی، مشارکت در گیتهاب آزاد است! 😎
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.