تطبيق إدارة المرتب والمصروفات الشهرية — سجل العمل اليومي والتقارير (React + Express)
الوصف:
تطبيق ويب متكامل (Full-Stack) لإدارة المرتب الشهري والمصروفات الشخصية، موجه لمن يعمل بنظام اليومية أو الراتب الشهري. يسجل المستخدم ساعات عمله اليومية وحالته (عمل / نصف يوم / إجازة / غياب / مرضي / عطلة)، ويتابع مصروفاته مصنفة في 7 فئات، ويحصل تلقائيًا على صافي المرتب والمستحقات مع رسوم بيانية وتقارير شهرية وسجل تاريخي، مع إمكانية تصدير البيانات إلى Excel. يدعم التطبيق إنشاء شهر جديد تلقائيًا، وتعبئة الأيام الفائتة دفعة واحدة، وضبط إعدادات الراتب (الراتب، أيام العمل، ساعات اليوم، مقابل الساعة الإضافية، بداية ونهاية الشهر، احتساب الإجازات).
أهم المميزات:
- حسابات دخول آمنة: تسجيل/دخول بكلمة مرور مشفرة (bcrypt) وجلسة JWT في Cookie آمن (HttpOnly).
- لوحة تحكم شهرية: المرتب، قيمة اليوم والساعة، ساعات العمل المطلوبة والمنجزة والمتبقية، إجمالي المستحق، متوسط الدخل اليومي، نسبة الإنجاز، أعلى/أقل ساعات، أيام الغياب والإجازات — مع رسوم بيانية.
- سجل العمل اليومي: تسجيل/تعديل/حذف ساعات كل يوم مع الحالة والملاحظات + فلترة وبحث + تعبئة الأيام الفائتة.
- إدارة المصروفات: إضافة/تعديل/حذف المصروفات بالفئات (أساسيات، طعام وشراب، مواصلات، صحة، ترفيه، تعليم، أخرى) مع إجمالي ومتوسط.
- التقارير: تقرير الشهر الحالي + سجل الشهور السابقة + تصدير Excel.
- صفحة إعدادات شاملة لمعادلة احتساب الراتب.
- يعمل محليًا بقاعدة SQLite، وفي الإنتاج على PostgreSQL (Neon) وجاهز للنشر على Vercel كـ Serverless.
التقنيات والأدوات المستخدمة:
React 18 + Vite 5 + React Router 6 (الواجهة) — Express 5 + Node.js (الخادم) — SQLite (محليًا عبر node:sqlite) / PostgreSQL (إنتاج) — JWT + bcryptjs + cookie-parser — exceljs للتصدير — واجهة عربية RTL متجاوبة.
دوري في تنفيذ المشروع:
تصميم وتطوير التطبيق بالكامل (Full-Stack): واجهة React السبع صفحات، واجهة API الست مجموعات (auth, months, days, reports, expenses, export)، قاعدة البيانات بطبقتي SQLite/PostgreSQL، معادلات احتساب الراتب، والتصدير إلى Excel.
ملاحظات مهمة للعميل:
- المشروع أصلي ومنفذ بالكامل، ولقطات الشاشة من نسخة حقيقية تعمل ببيانات تجريبية.
- لا يوجد رابط معاينة عام حاليًا — يمكن عرض نسخة حية (Demo) عند الطلب.
- ملاحظة فنية للمشتري الجاد: صفحة "سجل العمل" تحتاج مراجعة بسيطة (خطأ عرض في نسخة الإنتاج الحالية)، وباقي الصفحات تعمل — التفاصيل في project_info.