تطبيق ويب احترافي لإدارة المهام مبني باستخدام Clean Architecture و CQRS Pattern
- ✅ إدارة كاملة للمهام - إنشاء، تعديل، حذف، وتتبع المهام
- 🏷️ التصنيف والتنظيم - تصنيف المهام حسب الفئات والوسوم
- ⚡ نظام الأولويات - 4 مستويات للأولوية (منخفضة، متوسطة، عالية، عاجلة)
- 💬 نظام التعليقات - إضافة تعليقات على المهام
- 📎 المرفقات - إرفاق ملفات بالمهام
- 📊 إحصائيات تفصيلية - تقارير وتحليلات شاملة
- 🔍 بحث وفلترة متقدمة - بحث في العنوان والوصف والتصنيفات
- ⏰ تتبع المهام المتأخرة - تنبيهات للمهام المتجاوزة لموعدها
- 🌐 واجهة عربية كاملة - دعم كامل للغة العربية (RTL)
- 📱 تصميم متجاوب - يعمل على جميع الأجهزة
- 🎯 تصميم عصري - واجهة نظيفة وسهلة الاستخدام
- 🌓 دعم الوضع الداكن - راحة للعينين
- ⚡ أداء عالي - تحميل سريع وتفاعل فوري
- 📊 رسوم بيانية - تصوير بصري للبيانات
- ASP.NET Core 8.0 - إطار العمل الرئيسي
- Entity Framework Core 8.0 - ORM للتعامل مع قاعدة البيانات
- SQLite - قاعدة بيانات خفيفة وسريعة
- MediatR - تطبيق CQRS Pattern
- AutoMapper - تحويل بين الكائنات
- FluentValidation - التحقق من صحة البيانات
- Serilog - تسجيل الأحداث
- Blazor Server - واجهة تفاعلية
- Bootstrap 5 - إطار عمل CSS
- Bootstrap Icons - مكتبة الأيقونات
- Jenkins - أتمتة البناء والنشر
- GitHub Actions - CI/CD على GitHub
- Azure DevOps - خطوط أنابيب Azure
- Docker - الحاويات
- Docker Compose - إدارة الحاويات المتعددة
المشروع يتبع Clean Architecture مع فصل واضح للطبقات:
TodoBlazorApp/
├── src/
│ ├── Core/
│ │ ├── TodoBlazorApp.Domain/ # الكيانات والقواعد التجارية
│ │ └── TodoBlazorApp.Application/ # منطق الأعمال، CQRS، DTOs
│ ├── Infrastructure/
│ │ └── TodoBlazorApp.Infrastructure/ # EF Core، Repositories، Services
│ └── Presentation/
│ ├── TodoBlazorApp.API/ # RESTful API
│ └── TodoBlazorApp.BlazorUI/ # Blazor Server UI
├── tests/ # الاختبارات
├── scripts/ # سكريبتات البناء والنشر
└── docker/ # ملفات Docker
Command → Handler → Repository → Database
Query → Handler → Repository → Database
-
Domain Layer - الطبقة الأساسية
- Entities
- Enums
- Interfaces
- Domain Events
-
Application Layer - منطق الأعمال
- Commands & Queries (MediatR)
- DTOs
- Validators (FluentValidation)
- Mappings (AutoMapper)
-
Infrastructure Layer - البنية التحتية
- DbContext (EF Core)
- Repositories
- Services
- Migrations
-
Presentation Layer - العرض
- API Controllers
- Blazor Components
- Services
- .NET 8.0 SDK
- Git
- محرر كود (Visual Studio 2022 أو VS Code)
- (اختياري) Docker Desktop
git clone https://github.com/hnjm/TodoBlazorApp.git
cd TodoBlazorAppdotnet restore TodoBlazorApp.slndotnet build TodoBlazorApp.sln --configuration Release# Terminal 1 - تشغيل API
cd src/Presentation/TodoBlazorApp.API
dotnet run
# Terminal 2 - تشغيل Blazor UI
cd src/Presentation/TodoBlazorApp.BlazorUI
dotnet runWindows:
.\scripts\deploy\start-services.ps1Linux/Mac:
chmod +x scripts/deploy/build-and-deploy.sh
./scripts/deploy/build-and-deploy.sh build# بناء وتشغيل الحاويات
docker-compose up -d
# عرض حالة الحاويات
docker-compose ps
# عرض السجلات
docker-compose logs -f- API: http://localhost:7000
- Swagger UI: http://localhost:7000/swagger
- Blazor UI: http://localhost:5000
- Health Check: http://localhost:7000/api/health
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=todoapp.db;Cache=Shared"
},
"Serilog": {
"MinimumLevel": {
"Default": "Information"
}
}
}{
"ApiSettings": {
"BaseUrl": "https://localhost:7000/"
}
}# تشغيل جميع الاختبارات
dotnet test TodoBlazorApp.sln
# مع تقرير التغطية
dotnet test --collect:"XPlat Code Coverage"# استخدام السكريبت
./scripts/deploy/build-and-deploy.sh build
# أو يدوياً
dotnet publish src/Presentation/TodoBlazorApp.API/TodoBlazorApp.API.csproj -c Release -o ./publish/api
dotnet publish src/Presentation/TodoBlazorApp.BlazorUI/TodoBlazorApp.BlazorUI.csproj -c Release -o ./publish/ui# Linux
sudo ./scripts/deploy/build-and-deploy.sh deploy
# أو يدوياً
rsync -av publish/api/ user@server:/var/www/todoapp/api/
rsync -av publish/ui/ user@server:/var/www/todoapp/ui/# بناء الصور
docker-compose build
# نشر
docker-compose up -d
# إيقاف
docker-compose down# إنشاء Pipeline Job في Jenkins
# استخدم Jenkinsfile الموجود في المشروعالـ Workflows موجودة في .github/workflows/:
ci-cd.yml- البناء والنشر الآليpr-validation.yml- فحص Pull Requestsrelease.yml- إنشاء Releases
# استيراد azure-pipelines.yml إلى Azure DevOpsالوصول إلى Swagger UI:
http://localhost:7000/swagger
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /api/todos |
الحصول على جميع المهام |
| GET | /api/todos/{id} |
الحصول على مهمة محددة |
| GET | /api/todos/stats |
الحصول على الإحصائيات |
| GET | /api/todos/overdue |
المهام المتأخرة |
| POST | /api/todos |
إنشاء مهمة جديدة |
| PUT | /api/todos/{id} |
تحديث مهمة |
| DELETE | /api/todos/{id} |
حذف مهمة |
| PATCH | /api/todos/{id}/toggle |
تبديل حالة الإكمال |
| POST | /api/todos/{id}/comments |
إضافة تعليق |
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /api/health |
فحص صحة التطبيق |
# إنشاء Migration جديد
./scripts/database/add-migration.sh MigrationName
# تطبيق Migrations
./scripts/database/migrate.sh
# إنشاء نسخة احتياطية
./scripts/database/backup.shTodoItems
├── Id (PK)
├── Title
├── Description
├── IsCompleted
├── Priority
├── Category
├── Tags
├── DueDate
├── CreatedBy
├── CreatedDate
└── Comments (FK)
└── Attachments (FK)
1. لا يمكن الاتصال بـ API
# تحقق من أن API يعمل
curl http://localhost:7000/api/health
# تحقق من المنافذ
netstat -an | grep 70002. خطأ في قاعدة البيانات
# حذف قاعدة البيانات وإعادة إنشائها
rm todoapp.db
dotnet ef database update --project src/Presentation/TodoBlazorApp.API3. مشاكل Docker
# إعادة بناء الحاويات
docker-compose down
docker-compose build --no-cache
docker-compose up -dنرحب بالمساهمات! يرجى اتباع الخطوات التالية:
- Fork المشروع
- إنشاء فرع جديد (
git checkout -b feature/AmazingFeature) - Commit التغييرات (
git commit -m 'Add some AmazingFeature') - Push إلى الفرع (
git push origin feature/AmazingFeature) - فتح Pull Request
هذا المشروع مرخص تحت رخصة MIT - انظر ملف LICENSE للتفاصيل.
HNJM
- GitHub: @hnjm
- Email: [email protected]
إذا وجدت هذا المشروع مفيداً، يرجى إعطائه ⭐ على GitHub!
صُنع بـ ❤️ بواسطة HNJM
© 2025 Todo Application. جميع الحقوق محفوظة.


