DineDrop is a robust, production-ready food delivery and restaurant management platform. It features a high-performance .NET Core API built on Clean Architecture principles and a modern, responsive React frontend.
- Seamless Ordering: Browse local restaurants, explore categorized menus, and manage your cart.
- Real-Time Order Tracking: Live order status updates powered by SignalR WebSocket connections.
- Secure Payments & Wallet: Built-in wallet management, transaction history, and support for promotional offers and coupons.
- Location & Address Management: Interactive address picker and saved delivery locations.
- Premium Dashboard: Real-time sales analytics, revenue ledger, and order volume metrics.
- Live Order Fulfillment: Instantly receive new incoming orders via SignalR with status progression (Pending ➡️ Preparing ➡️ Out for Delivery ➡️ Delivered).
- Menu Item Management: Complete menu item and category CRUD with live image uploads and validation.
- System Oversight: Manage user approvals (verifying restaurant onboarding requests).
- Security & Token Management: Robust user role management with strict role-based access control (RBAC).
The repository is structured into two main decoupled environments:
DineDrop/
│
├── backend/ # .NET 8 Clean Architecture Solution
│ ├── DineDrop.API/ # Presentation Layer (Controllers, Hubs, Middlewares)
│ ├── DineDrop.Application/ # Business Logic & Application Services (Interfaces, DTOs)
│ ├── DineDrop.Domain/ # Core Domain Entities, Enums, and Constants
│ └── DineDrop.Infrastructure/ # EF Core Data Access, Migrations, Real-Time Hubs, Identity
│
└── frontend/ # React Single Page Application (Vite)
├── public/ # Static assets & icons
└── src/ # Components, Dashboards, Auth Flows, and Styles
- Framework: .NET 8 / ASP.NET Core Web API
- Architecture: Clean Architecture / CQRS pattern inspired structure
- Database: SQL Server via Entity Framework Core
- Authentication: JWT with secure HTTP-only Cookies & Refresh Token Rotation
- Real-Time Communication: Microsoft SignalR (
OrderHub) - Password Security: BCrypt password hashing
- Framework: React 18 + Vite
- Styling: Modern CSS with CSS Variables & Responsive Glassmorphism Design
- Routing & State: Dynamic view rendering & contextual state management
- .NET 8 SDK
- Node.js (v18+)
- SQL Server (or SQL Server Express / Docker container)
-
Open a terminal and navigate to the backend API directory:
cd backend/DineDrop.API -
Setup Configuration: Duplicate the template config file to create your local development settings:
cp appsettings.example.json appsettings.json
Note: Open
appsettings.jsonand configure yourDefaultConnectionstring to point to your local SQL Server instance. -
Apply Database Migrations: Navigate to the project root or use the EF CLI to update your database:
dotnet ef database update --project ../DineDrop.Infrastructure --startup-project .Note: Migrations will automatically seed default Admin credentials (
[email protected]/Admin@123). -
Run the API Server:
dotnet run
The backend API will start on
http://localhost:5000(orhttps://localhost:5001).
- Open a separate terminal and navigate to the frontend directory:
cd frontend - Install Dependencies:
npm install
- Run the Development Server:
npm run dev
- Open your browser and navigate to
http://localhost:5173.
- Zero Secret Exploitation: Sensitive files like
appsettings.jsonand.envfiles are explicitly excluded via.gitignore. - Token Protection: Access tokens and refresh tokens are securely transmitted and stored using strict
HttpOnly,Secure, andSameSitecookie policies to guard against XSS and CSRF attacks. - Simultaneous Token Validation: Strict validation ensures both access and refresh tokens are verified before performing secure token revocations or logouts.
This project is proprietary and confidential. Unauthorized copying of files via any medium is strictly prohibited.