تذكير بالمهام مع 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، وكمان تذكير بالإيميلات بشكل أوتوماتيكي.

المدونة

حقق أداءً أعلى لتقارير البيانات الضخمة باستخدام نظام (Queues)

يوليو 07, 2025

إزاي نعمل كاش لتقارير بفترة زمنية ثابتة إزاي نولّد تقارير ضخمة في الخلفية باستخدام الـ Job Queues 1. 🧠 كاش للتقارير بفترة زمنية ثابتة لو ع...

الدليل الكامل لتحديثات ECMAScript 2025 للمطورين

يوليو 06, 2025

📘 شرح تفصيلي لتحديثات ECMAScript 2025 جميع مميزات ECMAScript 2025، مع أمثلة عملية وفهم ليه الميزة دي مهمة لأي مبرمج واجهة أمامية. ١. مجموعات مسما...

إزاي تستخدم Web Components ببساطة وذكاء

يوليو 06, 2025

إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...

لارافيل 12: كل جديد من 12.0 لـ 12.19 – دليل شامل

يوليو 20, 2025

🔧 1. لارافيل 12.0 – ستارتر كيتس وتعديلات أساسية إصدار 12.0 جاب Starter Kits جاهزة للـ React، Vue، Livewire، وكمان دمج مع WorkOS AuthKit،...

تحديث Laravel 12.18.0

يونيو 17, 2025

تحديث Laravel 12.18.0 صدر نسخه Laravel 12.18.0 فيها شوية ميزات جامدة كده: توابع لتشفير وفك تشفير النصوص باستخدام Stringable ديركت في chain strings...

نظرة معمقة على Laravel Context: تسجيل وتحليل السياق البرمجي باحترافية

يوليو 20, 2025

في Laravel 12، تم تقديم Laravel Context كأداة قوية بتخلي تتبع الطلبات، تسجيل الأخطاء، وتحليل سلوك الوظائف الخلفية أسهل وأدق من أي وقت فات. وده بيحصل ع...

The Ultimate Managed Hosting Platform