Patrak: متتبّع التعلّم اليومي (Rust و GTK4)
تطبيق سطح مكتب وأداة سطر أوامر لتتبّع التعلّم اليومي من الدورات المرئية والكتب ومشاريع git. يلتقط التقدّم تلقائياً من mpv و zathura ومن الـ commits، مع أهداف، وسلاسل أيام متتالية، وعادات، ومراجعة بالتكرار المتباعد.
التقنيات المستخدمة
نظرة عامة
الدور: مشروع شخصي · الفترة: أكتوبر 2026
يراقب Patrak مجلدات الدورات المرئية والكتب ومستودعات git. فيقرأ تقدّم المشاهدة من mpv عبر سكربت Lua صغير، وموضع القراءة من zathura، والـ commits التي كتبتَها في كل مستودع، ثم يعرض دقائق اليوم وصفحاته والـ commits مقارنةً بالأهداف اليومية، وخريطة حرارية لسلسلة الأيام المتتالية، ومجاميع الأسبوع، وما ينبغي مشاهدته أو قراءته بعد ذلك. ويتتبّع أيضاً عادات مخصصة، ومواعيد إنهاء الدورات مع تاريخ إنهاء متوقع، وملاحظات لكل محاضرة، ويحوّل أسطر Q: و A: في تلك الملاحظات إلى بطاقات مراجعة مجدولة بالتكرار المتباعد. وكل ذلك متاح من نافذة GTK4 و libadwaita ومن سطر الأوامر، ويرسل مؤقت systemd تذكيراً مساءً إذا لم تتحقق أهداف اليوم.
البنية المعمارية
حزمة Rust واحدة (crate) فيها واجهة سطر أوامر (clap) وميزة اختيارية للواجهة الرسومية (gtk4-rs و libadwaita). وتُحفظ الحالة في مخطط SQLite ذي إصدارات: عناصر المكتبة، والتقدّم اليومي، وبطاقات المراجعة، والعادات، والمشاريع، والإجازات. وتُطابَق الملفات بنوعها وحجمها ووقت تعديلها، والمستودعات بأول commit فيها، فلا يضيع تقدّمها عند نقلها أو إعادة تسميتها.
التحديات
حساب التقدّم دون أن يُطلب من المستخدم تسجيل أي شيء: مواضع mpv و zathura، والفصول داخل المحاضرات الطويلة، والـ commits التي أُعيد ترتيبها أو دُمجت لاحقاً (rebase أو squash) فتُحسب مرة واحدة بحسب وقت المؤلف، وسلاسل الأيام التي تراعي الإجازات.
النتائج
أداة أستخدمها يومياً: نحو 10,000 سطر من Rust مع 47 اختباراً، ونافذة GTK4، وواجهة سطر أوامر.