A modern service marketplace platform connecting clients with trusted technicians
Features • Tech Stack • Getting Started • Documentation • Team
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.
- 🔐 Secure Authentication - ASP.NET Core Identity with Google OAuth integration
- 💬 Real-time Communication - Live chat and notifications using SignalR
- 💳 Flexible Payments - Stripe integration for online payments + cash option
- 🤖 AI-Powered Verification - Python ML models for ID card verification
- 📅 Smart Scheduling - Technician availability management system
- ⭐ Rating System - Build trust through reviews and ratings
- 🌍 Location Services - Comprehensive Egyptian location hierarchy
- ✅ Browse and search technicians by category, location, and rating
- ✅ View detailed technician profiles with experience and pricing
- ✅ Check real-time availability and book appointments
- ✅ Secure payment options (Stripe or Cash on Service)
- ✅ Real-time chat with technicians
- ✅ Rate and review service providers
- ✅ Track booking history and status
- ✅ Receive instant notifications
- ✅ Create professional profiles with portfolio
- ✅ Set custom pricing and service categories
- ✅ Manage availability schedule with time slots
- ✅ Receive and manage booking requests
- ✅ Direct communication with clients
- ✅ Track earnings and payment history
- ✅ Build reputation through ratings
- ✅ AI-verified identity for trust
- ✅ Comprehensive admin dashboard
- ✅ User and technician management
- ✅ Category and service oversight
- ✅ Payment monitoring and analytics
- ✅ System health monitoring
- ✅ Content moderation tools
The solution follows a clean 3-tier architecture with clear separation of concerns:
Sany3y/
├── Sany3y/ # Main Web Application (MVC)
│ ├── Controllers/ # 6 MVC Controllers
│ ├── Views/ # Razor Views (Account, Admin, Dashboard, etc.)
│ ├── wwwroot/ # Static files (CSS, JS, images)
│ ├── Extensions/ # Service configuration extensions
│ ├── Hubs/ # SignalR hubs (Chat, UserStatus)
│ └── Program.cs # Application entry point
│
├── Sany3y.API/ # RESTful API Backend
│ ├── Controllers/ # 16 API Controllers
│ ├── Services/ # Business logic services
│ ├── DTOs/ # Data Transfer Objects
│ ├── py/ # Python ML models for verification
│ │ ├── detect_id_card.pt
│ │ └── detect_arabic_numbers.pt
│ └── Program.cs # API entry point
│
├── Sany3y.Infrastructure/ # Data Access Layer
│ ├── Models/ # 17 Entity models
│ ├── Repositories/ # 9 Repository implementations
│ ├── ViewModels/ # View models for data transfer
│ ├── Migrations/ # EF Core migrations
│ └── AppDbContext.cs # Database context
│
└── docs/ # Documentation
├── Business Requirements Specification.pdf
└── ERDs/ # Database diagrams
- Framework: .NET 8 (LTS)
- Web Framework: ASP.NET Core MVC
- API: ASP.NET Core Web API with Swagger
- ORM: Entity Framework Core 8
- Database: SQL Server
- Authentication: ASP.NET Core Identity + JWT
- Real-time: SignalR for WebSocket communication
- Template Engine: Razor Pages
- CSS Framework: Bootstrap 5
- JavaScript: jQuery + Vanilla JS
- Validation: jQuery Validation
- Payment: Stripe.net (v50.0.0)
- OAuth: Google Authentication
- Email: ASP.NET Core Email Service
- PDF Generation: iTextSharp
- Python: ML model inference
- PyTorch: ID verification models
- Computer Vision: Arabic number detection
- Version Control: Git & GitHub
- CI/CD: GitHub Actions (.github/workflows/dotnet.yml)
- API Documentation: Swagger/OpenAPI
- Package Manager: NuGet
| Entity | Description |
|---|---|
| User | Extended IdentityUser with custom properties (NationalId, Bio, etc.) |
| Category | Service categories (Electrician, Plumber, Carpenter, etc.) |
| Task | Service bookings connecting clients and technicians |
| Payment | Payment records with Stripe integration |
| Rating | Reviews and ratings for technicians |
| Message | Real-time chat messages |
| Notification | User notifications |
| TechnicianSchedule | Availability time slots |
| Address | User location information |
| ProfilePicture | User profile images |
- Province → Governorate → City (Egyptian administrative divisions)
- .NET 8 SDK
- SQL Server (LocalDB or Express)
- Visual Studio 2022 or VS Code
- Python 3.8+ (for ML features)
- Git
-
Clone the repository
git clone https://github.com/Mohammed-3tef/Sany3y.git cd Sany3y -
Restore NuGet packages
dotnet restore
-
Update connection string
Edit
Sany3y/appsettings.json:{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=Sany3yDB;Trusted_Connection=True;" } } -
Configure API settings
Edit
Sany3y.API/appsettings.jsonwith your Stripe keys:{ "Stripe": { "SecretKey": "your_stripe_secret_key", "PublishableKey": "your_stripe_publishable_key" } } -
Apply database migrations
cd Sany3y dotnet ef database update -
Run the application
Option 1: Run both projects simultaneously (recommended)
# Terminal 1 - API cd Sany3y.API dotnet run # Terminal 2 - Web App cd Sany3y dotnet run
Option 2: Using Visual Studio
- Right-click solution → Properties → Multiple Startup Projects
- Set both
Sany3yandSany3y.APIto "Start"
-
Access the application
- Web App:
https://localhost:7001(or check console output) - API:
https://localhost:7178 - Swagger:
https://localhost:7178/swagger
- Web App:
For ID verification features:
cd Sany3y.API/py
pip install -r requirements.txt
python app.py- Access Swagger UI at
https://localhost:7178/swaggerwhen running the API
| Endpoint | Method | Description |
|---|---|---|
/api/Category/GetAll |
GET | Get all service categories |
/api/Technician/GetAll |
GET | Get all technicians |
/api/TechnicianSchedule/GetAvailability |
GET | Get technician availability |
/api/Payment/CreateStripeSession |
POST | Create Stripe payment session |
/api/Message/Send |
POST | Send chat message |
/api/Notification/GetUserNotifications |
GET | Get user notifications |
- Registration → Email verification → Profile completion
- Login → Session creation → Dashboard redirect
- Google OAuth → External authentication → Profile linking
- JWT Tokens → API authentication for mobile/external clients
- Browse available technicians by category
- View technician profile and ratings
- Check availability calendar
- Select time slot and create booking
- Choose payment method (Stripe/Cash)
- Receive confirmation and chat with technician
- Register as technician
- Complete profile with category and pricing
- Upload ID for verification (AI-powered)
- Set availability schedule
- Receive booking requests
- Manage appointments and earnings
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow C# coding conventions
- Use meaningful variable and method names
- Add XML documentation for public APIs
- Write unit tests for new features
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
![]() Mohammed Atef |
![]() Steven Amin |
![]() Omniaa Ashraf |
![]() Kenzi Shibl |
- 📧 Email: Contact team members via LinkedIn
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- ASP.NET Core team for the excellent framework
- Stripe for payment processing
- SignalR for real-time capabilities
- Bootstrap for responsive UI components
- All open-source contributors
Built with ❤️ by the Sany3y Team
⭐ Star us on GitHub if you find this project useful!




