پلتفرم مدرسه فجر دانش
پلتفرم کامل مدیریت مدرسه — React + Express + MongoDB با اپ اندروید، فعال در fajrdanesh1.ir.
گالری
3 تصویر — کلیک برای بزرگنماییچیست؟
فجر دانش یک پلتفرم آموزشی کامل برای یک مدرسه واقعی است که بهصورت زنده در fajrdanesh1.ir اجرا میشود. دانشآموزان، معلمان، والدین و اخبار آموزشی را در یک سیستم مدیریت میکند: فرانتاند ریاکت + Vite (بههمراه اپ اندروید Capacitor)، بکاند Express + MongoDB و API امنسازیشده با دسترسی نقشمحور.
لینک زنده: fajrdanesh1.ir
ویژگیهای شاخص
فرانتاند (React + Vite)
- داشبوردهای نقشمحور — نمای جداگانه مدیر، معلم، والدین و دانشآموز با چیدمانهای متفاوت
- مدیریت اخبار — انتشار اخبار آموزشی با محتوای غنی
- گالری و رسانه —
GalleryUploader/GalleryManagerبا آپلود تصویر و ویدیو - پیگیری پیشرفت —
ProgressChartوMultiTermProgressChartبرای نمایش رشد در هر ترم - نمرات و رتبهبندی — جدول نمرات، نمای خلاصه و جدول رتبهبندی
- آرشیو آزمون و سؤال — ساخت، ذخیره و استفاده مجدد از سؤالها
- برنامه کلاسی —
ScheduleEditorبرای زمانبندی ترم - اعلان هوشمند — سیستم
SmartNotificationبرای والدین و معلمان - پروفایل واقعی معلمان — صفحه اختصاصی برای هر معلم + پیشثبتنام (
PreRegisterForm) - خروجی PDF — jsPDF + autotable برای گزارشهای قابل چاپ
- فارسیمحور — پشتیبانی تقویم جلالی (
moment-jalaali) و ارقام فارسی
بکاند (Express + MongoDB)
- احراز هویت و نقشها — توکن JWT، هش bcrypt، سشن کوکی و اعمال نقشها با میانافزار
requireRole - ۱۲ مدل Mongoose —
User،Student،Grade،ClassSchedule،News،Gallery،Album،GalleryVideo،Question،Note،PreRegister،ActivityLog - کنترلرها و مسیرها — auth، admin، teacher، parent، news، gallery، schedule، questions، pre-register و meta، هرکدام با مسیرهای اختصاصی
- امنشده از پایه — هدرهای
helmet،express-rate-limit(سراسری + هر مسیر)، مسیر توکن CSRF،express-mongo-sanitize، محافظت HPP وexpress-validator - آپلود — خط لوله آپلود با multer و ذخیرهسازی در
uploads/ - بلادرنگ — Socket.io برای حضور و بهروزرسانیهای زنده
- لاگینگ — لاگ ساختاریافته Winston + لاگ درخواستهای Morgan
- بکاپ —
mongo_backup/، اسکریپتهای بازیابی وrestore_users.json
ساختار پروژه
School-Vps/
├── frontend/ # اپ React 18 + Vite (+ اپ اندروید Capacitor)
│ └── src/
│ ├── pages/ # داشبوردها، ورود/ثبتنام، درباره، تماس، افتخارات…
│ ├── components/ # بیش از ۵۰ کامپوننت شامل admin/، نمودارها، جدولها
│ ├── context/AuthContext.jsx # state سراسری احراز هویت
│ └── secure_guard/ProtectedRoute.jsx # محافظت مسیر بر اساس نقش
├── backend/
│ ├── index.js # اپ Express + پشته میانافزار
│ ├── models/ # ۱۲ اسکیمای Mongoose
│ ├── controllers/ # auth، admin، teacher، parent، news، schedule…
│ ├── routes/ # مسیرهای REST دستهبندیشده بر اساس دامنه
│ ├── middleware/ # auth، role، CSRF، مدیریت خطا
│ ├── config/ # بارگذار env، محدودیت نرخ، مسیرهای آپلود
│ ├── services/ # منطق کسبوکار
│ └── uploads/ # ذخیرهسازی رسانه
└── mongo_backup/ # بکاپهای دیتابیس
شروع کار
cd backend && npm install && npm run start:prod
cd frontend && npm install && npm run dev # http://localhost:5173
پیشنیازها: Node 18+، MongoDB، Git.
چرا برجسته است
این یک دمو نیست — یک پلتفرم تولیدی زنده با معلمان و دانشآموزان واقعی است. وسعت فولاستک را نشان میدهد (ریاکت، state، نمودارها، Capacitor در یک طرف؛ REST، احراز هویت، آپلود، بلادرنگ و سختافزاری امنیتی در طرف دیگر) و مراقبت عملیاتی یک پروژه واقعی را: محدودیت نرخ، CSRF، سانیتیز، لاگ ساختاریافته و بکاپ دیتابیس — همه از ابتدا در پروژه تعبیه شدهاند، نه بعداً اضافه شدهاند.