{"id":30851554,"url":"https://github.com/mohammed-3tef/sany3y","last_synced_at":"2026-05-16T08:11:59.376Z","repository":{"id":313263222,"uuid":"1038771822","full_name":"Mohammed-3tef/Sany3y","owner":"Mohammed-3tef","description":"This repository contains our Graduation Project for the Digital Egypt Pioneers Initiative (DEPI).","archived":false,"fork":false,"pushed_at":"2025-09-04T21:07:30.000Z","size":503,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-04T23:22:23.176Z","etag":null,"topics":["asp-net","csharp","entity-framework","erd","graduation-project","mvc","sql","sql-server"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mohammed-3tef.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-15T19:38:52.000Z","updated_at":"2025-09-04T21:07:34.000Z","dependencies_parsed_at":"2025-09-04T23:22:42.492Z","dependency_job_id":"1f5bf08f-4546-4336-aa05-c14fb278dbd4","html_url":"https://github.com/Mohammed-3tef/Sany3y","commit_stats":null,"previous_names":["mohammed-3tef/sany3y"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Mohammed-3tef/Sany3y","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammed-3tef%2FSany3y","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammed-3tef%2FSany3y/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammed-3tef%2FSany3y/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammed-3tef%2FSany3y/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mohammed-3tef","download_url":"https://codeload.github.com/Mohammed-3tef/Sany3y/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mohammed-3tef%2FSany3y/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274007375,"owners_count":25206343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asp-net","csharp","entity-framework","erd","graduation-project","mvc","sql","sql-server"],"created_at":"2025-09-07T07:15:04.090Z","updated_at":"2026-05-16T08:11:59.371Z","avatar_url":"https://github.com/Mohammed-3tef.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sany3y - صنـايعـي\n\n\u003cdiv align=\"center\"\u003e\n\n![Sany3y Banner](docs/sany3y_banner4.png)\n\n![Sany3y Logo](https://img.shields.io/badge/Sany3y-Service_Marketplace-blue?style=for-the-badge)\n[![.NET](https://img.shields.io/badge/.NET-8.0-512BD4?style=for-the-badge\u0026logo=dotnet)](https://dotnet.microsoft.com/)\n[![License](https://img.shields.io/badge/License-GPL--3.0-green?style=for-the-badge)](LICENSE)\n\n**A modern service marketplace platform connecting clients with trusted technicians**\n\n[Features](#-features) • [Tech Stack](#-technology-stack) • [Getting Started](#-getting-started) • [Documentation](#-documentation) • [Team](#-team-members)\n\n\u003c/div\u003e\n\n---\n\n## 📌 Overview\n\n**Sany3y** (صنـايعـي) is a comprehensive service marketplace platform built with **ASP.NET Core 8** that bridges the gap between clients seeking home or business maintenance services and skilled technicians. Whether you need an electrician, plumber, carpenter, or any other service professional, Sany3y provides a seamless, secure, and efficient platform for connecting and managing service requests.\n\n### 🎯 Key Highlights\n\n- 🔐 **Secure Authentication** - ASP.NET Core Identity with Google OAuth integration\n- 💬 **Real-time Communication** - Live chat and notifications using SignalR\n- 💳 **Flexible Payments** - Stripe integration for online payments + cash option\n- 🤖 **AI-Powered Verification** - Python ML models for ID card verification\n- 📅 **Smart Scheduling** - Technician availability management system\n- ⭐ **Rating System** - Build trust through reviews and ratings\n- 🌍 **Location Services** - Comprehensive Egyptian location hierarchy\n\n---\n\n## ✨ Features\n\n### For Clients 👤\n\n- ✅ Browse and search technicians by category, location, and rating\n- ✅ View detailed technician profiles with experience and pricing\n- ✅ Check real-time availability and book appointments\n- ✅ Secure payment options (Stripe or Cash on Service)\n- ✅ Real-time chat with technicians\n- ✅ Rate and review service providers\n- ✅ Track booking history and status\n- ✅ Receive instant notifications\n\n### For Technicians 🔧\n\n- ✅ Create professional profiles with portfolio\n- ✅ Set custom pricing and service categories\n- ✅ Manage availability schedule with time slots\n- ✅ Receive and manage booking requests\n- ✅ Direct communication with clients\n- ✅ Track earnings and payment history\n- ✅ Build reputation through ratings\n- ✅ AI-verified identity for trust\n\n### For Administrators 👨‍💼\n\n- ✅ Comprehensive admin dashboard\n- ✅ User and technician management\n- ✅ Category and service oversight\n- ✅ Payment monitoring and analytics\n- ✅ System health monitoring\n- ✅ Content moderation tools\n\n---\n\n## 🏗️ Architecture\n\nThe solution follows a **clean 3-tier architecture** with clear separation of concerns:\n\n```\nSany3y/\n├── Sany3y/                      # Main Web Application (MVC)\n│   ├── Controllers/             # 6 MVC Controllers\n│   ├── Views/                   # Razor Views (Account, Admin, Dashboard, etc.)\n│   ├── wwwroot/                 # Static files (CSS, JS, images)\n│   ├── Extensions/              # Service configuration extensions\n│   ├── Hubs/                    # SignalR hubs (Chat, UserStatus)\n│   └── Program.cs               # Application entry point\n│\n├── Sany3y.API/                  # RESTful API Backend\n│   ├── Controllers/             # 16 API Controllers\n│   ├── Services/                # Business logic services\n│   ├── DTOs/                    # Data Transfer Objects\n│   ├── py/                      # Python ML models for verification\n│   │   ├── detect_id_card.pt\n│   │   └── detect_arabic_numbers.pt\n│   └── Program.cs               # API entry point\n│\n├── Sany3y.Infrastructure/       # Data Access Layer\n│   ├── Models/                  # 17 Entity models\n│   ├── Repositories/            # 9 Repository implementations\n│   ├── ViewModels/              # View models for data transfer\n│   ├── Migrations/              # EF Core migrations\n│   └── AppDbContext.cs          # Database context\n│\n└── docs/                        # Documentation\n    ├── Business Requirements Specification.pdf\n    └── ERDs/                    # Database diagrams\n```\n\n---\n\n## 🔧 Technology Stack\n\n### Backend\n- **Framework**: .NET 8 (LTS)\n- **Web Framework**: ASP.NET Core MVC\n- **API**: ASP.NET Core Web API with Swagger\n- **ORM**: Entity Framework Core 8\n- **Database**: SQL Server\n- **Authentication**: ASP.NET Core Identity + JWT\n- **Real-time**: SignalR for WebSocket communication\n\n### Frontend\n- **Template Engine**: Razor Pages\n- **CSS Framework**: Bootstrap 5\n- **JavaScript**: jQuery + Vanilla JS\n- **Validation**: jQuery Validation\n\n### Third-Party Integrations\n- **Payment**: Stripe.net (v50.0.0)\n- **OAuth**: Google Authentication\n- **Email**: ASP.NET Core Email Service\n- **PDF Generation**: iTextSharp\n\n### AI/ML\n- **Python**: ML model inference\n- **PyTorch**: ID verification models\n- **Computer Vision**: Arabic number detection\n\n### DevOps \u0026 Tools\n- **Version Control**: Git \u0026 GitHub\n- **CI/CD**: GitHub Actions (.github/workflows/dotnet.yml)\n- **API Documentation**: Swagger/OpenAPI\n- **Package Manager**: NuGet\n\n---\n\n## 📊 Database Schema\n\n### Core Entities\n\n| Entity | Description |\n|--------|-------------|\n| **User** | Extended IdentityUser with custom properties (NationalId, Bio, etc.) |\n| **Category** | Service categories (Electrician, Plumber, Carpenter, etc.) |\n| **Task** | Service bookings connecting clients and technicians |\n| **Payment** | Payment records with Stripe integration |\n| **Rating** | Reviews and ratings for technicians |\n| **Message** | Real-time chat messages |\n| **Notification** | User notifications |\n| **TechnicianSchedule** | Availability time slots |\n| **Address** | User location information |\n| **ProfilePicture** | User profile images |\n\n### Location Hierarchy\n- **Province** → **Governorate** → **City** (Egyptian administrative divisions)\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)\n- [SQL Server](https://www.microsoft.com/sql-server) (LocalDB or Express)\n- [Visual Studio 2022](https://visualstudio.microsoft.com/) or [VS Code](https://code.visualstudio.com/)\n- [Python 3.8+](https://www.python.org/) (for ML features)\n- [Git](https://git-scm.com/)\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/Mohammed-3tef/Sany3y.git\n   cd Sany3y\n   ```\n\n2. **Restore NuGet packages**\n   ```bash\n   dotnet restore\n   ```\n\n3. **Update connection string**\n   \n   Edit `Sany3y/appsettings.json`:\n   ```json\n   {\n     \"ConnectionStrings\": {\n       \"DefaultConnection\": \"Server=(localdb)\\\\mssqllocaldb;Database=Sany3yDB;Trusted_Connection=True;\"\n     }\n   }\n   ```\n\n4. **Configure API settings**\n   \n   Edit `Sany3y.API/appsettings.json` with your Stripe keys:\n   ```json\n   {\n     \"Stripe\": {\n       \"SecretKey\": \"your_stripe_secret_key\",\n       \"PublishableKey\": \"your_stripe_publishable_key\"\n     }\n   }\n   ```\n\n5. **Apply database migrations**\n   ```bash\n   cd Sany3y\n   dotnet ef database update\n   ```\n\n6. **Run the application**\n   \n   **Option 1: Run both projects simultaneously (recommended)**\n   ```bash\n   # Terminal 1 - API\n   cd Sany3y.API\n   dotnet run\n   \n   # Terminal 2 - Web App\n   cd Sany3y\n   dotnet run\n   ```\n   \n   **Option 2: Using Visual Studio**\n   - Right-click solution → Properties → Multiple Startup Projects\n   - Set both `Sany3y` and `Sany3y.API` to \"Start\"\n\n7. **Access the application**\n   - Web App: `https://localhost:7001` (or check console output)\n   - API: `https://localhost:7178`\n   - Swagger: `https://localhost:7178/swagger`\n\n### Python ML Setup (Optional)\n\nFor ID verification features:\n\n```bash\ncd Sany3y.API/py\npip install -r requirements.txt\npython app.py\n```\n\n---\n\n## 📖 Documentation\n\n### Project Documents\n- 🗺️ [Physical ERD Diagram](./docs/ERDs/ERD.png)\n- 📄 [Full Documentation](./docs/Sany3y.pdf)\n\n### API Documentation\n- Access Swagger UI at `https://localhost:7178/swagger` when running the API\n\n### Key Endpoints\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/api/Category/GetAll` | GET | Get all service categories |\n| `/api/Technician/GetAll` | GET | Get all technicians |\n| `/api/TechnicianSchedule/GetAvailability` | GET | Get technician availability |\n| `/api/Payment/CreateStripeSession` | POST | Create Stripe payment session |\n| `/api/Message/Send` | POST | Send chat message |\n| `/api/Notification/GetUserNotifications` | GET | Get user notifications |\n\n---\n\n## 🔐 Authentication Flow\n\n1. **Registration** → Email verification → Profile completion\n2. **Login** → Session creation → Dashboard redirect\n3. **Google OAuth** → External authentication → Profile linking\n4. **JWT Tokens** → API authentication for mobile/external clients\n\n---\n\n## 💡 Usage Examples\n\n### Booking a Service\n\n1. Browse available technicians by category\n2. View technician profile and ratings\n3. Check availability calendar\n4. Select time slot and create booking\n5. Choose payment method (Stripe/Cash)\n6. Receive confirmation and chat with technician\n\n### Managing Technician Profile\n\n1. Register as technician\n2. Complete profile with category and pricing\n3. Upload ID for verification (AI-powered)\n4. Set availability schedule\n5. Receive booking requests\n6. Manage appointments and earnings\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! Please follow these steps:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n### Code Style\n- Follow C# coding conventions\n- Use meaningful variable and method names\n- Add XML documentation for public APIs\n- Write unit tests for new features\n\n---\n\n## 📝 License\n\nThis project is licensed under the **GNU General Public License v3.0** - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## 👥 Team Members\n\n\u003ctable width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/Mohammed-3tef\"\u003e\n        \u003cimg src=\"https://github.com/Mohammed-3tef.png\" width=\"100px;\" alt=\"Mohammed Atef\"/\u003e\u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eMohammed Atef\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://www.linkedin.com/in/mohammed-atef-abd-elkader/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/Steven-Amin02\"\u003e\n        \u003cimg src=\"https://github.com/Steven-Amin02.png\" width=\"100px;\" alt=\"Steven Amin\"/\u003e\u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eSteven Amin\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://www.linkedin.com/in/steven-amin02/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/Omniaashraf10\"\u003e\n        \u003cimg src=\"https://github.com/Omniaashraf10.png\" width=\"100px;\" alt=\"Omniaa Ashraf\"/\u003e\u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eOmniaa Ashraf\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://www.linkedin.com/in/omniaashraf2/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/kenzi-shibl\"\u003e\n        \u003cimg src=\"https://github.com/kenzi-shibl.png\" width=\"100px;\" alt=\"Kenzi Shibl\"/\u003e\u003cbr /\u003e\n        \u003csub\u003e\u003cb\u003eKenzi Shibl\u003c/b\u003e\u003c/sub\u003e\n      \u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://www.linkedin.com/in/kenzi-shibl-2832aa357/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## 📞 Contact \u0026 Support\n\n- 📧 **Email**: Contact team members via LinkedIn\n- 🐛 **Issues**: [GitHub Issues](https://github.com/Mohammed-3tef/Sany3y/issues)\n- 💬 **Discussions**: [GitHub Discussions](https://github.com/Mohammed-3tef/Sany3y/discussions)\n\n---\n\n## 🙏 Acknowledgments\n\n- ASP.NET Core team for the excellent framework\n- Stripe for payment processing\n- SignalR for real-time capabilities\n- Bootstrap for responsive UI components\n- All open-source contributors\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Built with ❤️ by the Sany3y Team**\n\n⭐ Star us on GitHub if you find this project useful!\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammed-3tef%2Fsany3y","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmohammed-3tef%2Fsany3y","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmohammed-3tef%2Fsany3y/lists"}