تذكير بالمهام مع Laravel وMongoDB

يونيو 30, 2025

📌 بناء تطبيق تذكير مهام

المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات.

المتطلبات

  • MongoDB Atlas cluster
  • PHP وامتداد MongoDB
  • Composer وNPM
  • معرفة أساسية بـ Laravel وMongoDB

1. إنشاء مشروع Laravel وتنصيب MongoDB

composer create‑project laravel/laravel task‑reminder
cd task‑reminder
composer require mongodb/laravel-mongodb

وبعدين في config/database.php ضيف:

'connections' => [
  'mongodb' => [
    'driver'   => 'mongodb',
    'dsn'      => env('MONGODB_URI'),
    'database' => 'YOUR_DB',
  ],
],

2. تسجيل دخول بـ Breeze

composer require laravel/breeze --dev
php artisan breeze:install
php artisan migrate
npm install && npm run dev
php artisan serve

3. طريق Ping لاختبار الاتصال بـ MongoDB

Route::get('/ping', function() {
  try {
    DB::connection('mongodb')->command(['ping'=>1]);
    return ['msg' => 'MongoDB is accessible!'];
  } catch (Exception $e) {
    return ['msg' => 'مش متصل: '.$e->getMessage()];
  }
});

4. موديل وكنترولر للمهمات (CRUD)

php artisan make:model Task --resource --controller

// في Task.php
use MongoDB\Laravel\Eloquent\Model;
class Task extends Model {
  protected $connection='mongodb';
  protected $fillable=['title','description','due_date','email','reminder_time','last_notification_date'];
}

الكنترولر بيتعامل مع إنشاء، عرض، تعديل، حذف، وإضافة تفاصيل زي تحويل التواريخ وربطها بإيميل المستخدم اللي عامل دخول.

5. الصفحات (Views) بـ Bootstrap

  • صفحة إنشاء: فيها العنوان، الوصف، تاريخ الاستحقاق، ووقت التذكير
  • صفحة تعديل: نفس الحاجة لكن الحقول محشية بالبيانات
  • الصفحة الرئيسية: بتعرض كل المهمات مع أزرار تعديل وحذف

6. إرسال إيميلات تذكير

php artisan make:command SendTaskReminders

// داخل handle() في SendTaskReminders.php
$now = Carbon::now();
$tasks = Task::whereNull('last_notification_date')
  ->where('reminder_time','>=',$now->subMinutes(10))
  ->get();
foreach($tasks as $task){
  Mail::raw("Reminder: {$task->title}", function($msg) use($task){
    $msg->to($task->email)
        ->subject("Task Reminder: {$task->title}");
  });
  $task->last_notification_date = $now;
  $task->save();
}

7. جدولة الأمر كل دقيقة

// في console.php
Schedule::command('app:send-task-reminders')->everyMinute();
// بعدين في الكرون:
* * * * * php /path/artisan schedule:run

الخلاصة

خلصنا تطبيق تذكير مهام كامل بـ MongoDB، وتسجيل دخول، وعمليات CRUD، وكمان تذكير بالإيميلات بشكل أوتوماتيكي.

المدونة

نظام طوابير Laravel واستخدام Supervisor في الإنتاج

يوليو 01, 2025

🚀 نظام Queue & Jobs في Laravel هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor. الخطوة 1: إنشاء...

الفرق بين Redux, Context & React Components في إدارة الحالة

أغسطس 06, 2025

عند بناء تطبيقات باستخدام React، هناك حاجة إلى إدارة البيانات التي تتغير نتيجة تفاعل المستخدم أو جلب البيانات من مصادر خارجية. توجد ثلاث وسائل رئيسي...

تذكير بالمهام مع Laravel وMongoDB

يونيو 30, 2025

📌 بناء تطبيق تذكير مهام المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات...

تاريخ React – استعراض شامل وتحليل تقني

يوليو 26, 2025

1. البدايات: النشأة داخل Facebook في عام 2011، واجه مهندسو Facebook تحديًا متزايدًا في صيانة واجهات المستخدم المعقدة والتفاعلية. تم تطوير مكتبة د...

Laravel 12.19: استخدام Attributes لتنظيم الـ Query Builder

يوليو 07, 2025

Laravel 12.19: استخدام Attributes تنظّم Query Builder في Laravel 12.19، دلوقتي تقدر تستخدم Attribute اسمه #[UseEloquentBuilder] علشان تحدد Query Bu...

دليل للأنيميشن المتحركة بالسكّول بس بـ CSS

يونيو 26, 2025

دليل للأنيميشن المتحركة بالسكّول بـ CSS دلوقتي تقدر تربط الأنيميشن بتاعتك بـ السكّول من غير جافاسكريبت — كله CSS بحت. 1. التلات مكونات بتوع...