A comprehensive food delivery platform built with Go, featuring multi-user roles, secure authentication, and real-time order management.
- Authentication with JWT and OTP verification
- Profile and address management
- Shopping cart functionality
- Favorites management
- Order placement and tracking
- Payment integration with Razorpay
- Coupon redemption system
- Search functionality for dishes and sellers
- Seller authentication and profile management
- Product/dish management (CRUD operations)
- Order management and status updates
- Sales reporting with time-based filters
- Offer management
- Image upload for dishes
- Category management
- Seller verification and management
- User management (block/unblock)
- Coupon management
- Platform-wide monitoring
- Backend: Go with Fiber framework
- Database: PostgreSQL with GORM
- Authentication: JWT
- Documentation: Swagger/OpenAPI
- Payment Gateway: Razorpay
- SMS Service: Twilio
- Image Storage: Cloudinary
- Configuration: Viper
-
Categories
- GET
/categories
- List all categories - GET
/categories/{id}
- Get specific category
- GET
-
Dishes
- GET
/dishes
- List dishes with pagination and filters- Query params:
p
(page),l
(limit),category
,seller
- Query params:
- GET
/dishes/{id}
- Get specific dish details
- GET
-
Sellers
- GET
/user/sellers
- List sellers with pagination- Query params:
p
(page),l
(limit)
- Query params:
- GET
/user/sellers/{id}
- Get specific seller details
- GET
-
Authentication
- POST
/signup
- User registration- Required: email, firstName, phone
- POST
/verifyOtp
- Verify OTP - POST
/seller/login
- Seller login - POST
/seller/register
- Seller registration - POST
/admin/login
- Admin login
- POST
-
Cart Management
- GET
/cart
- View cart - POST
/addToCart/{id}
- Add item to cart - DELETE
/cart/{id}/deleteItem
- Remove item from cart - POST
/cart/checkout
- Place order
- GET
-
Orders
- GET
/orders
- List all orders - GET
/orders/{id}
- Get order details - POST
/orders/cancel/{id}
- Cancel order
- GET
-
Favorites
- GET
/favourites
- View favorite items - POST
/addToFavourite/{id}
- Add to favorites - DELETE
/favourites/{id}/delete
- Remove from favorites
- GET
-
Dish Management
- POST
/seller/addDish
- Add new dish (multipart/form-data) - GET
/seller/dishes
- List all dishes- Query params:
category
- Query params:
- PUT
/seller/dishes/{id}
- Update dish - DELETE
/seller/dishes/{id}
- Delete dish
- POST
-
Order Management
- GET
/seller/orders
- View all orders - GET
/seller/orders/{id}
- Get order details - PUT
/seller/orders/{id}/status
- Update order status- Status options: COOKING, FOOD READY, DELIVERED
- GET
-
Sales & Offers
- GET
/seller/sales
- Get sales report- Query params:
filter
(time intervals)
- Query params:
- POST
/seller/offers/addOffer
- Create new offer - GET
/seller/offers
- List all offers
- GET
-
Category Management
- POST
/admin/categories/addCategory
- Add category - PATCH
/admin/categories/{id}/edit
- Update category
- POST
-
User Management
- GET
/admin/users
- List all users - PATCH
/admin/users/{id}/block
- Block user - PATCH
/admin/users/{id}/unblock
- Unblock user
- GET
-
Seller Management
- GET
/admin/sellers
- List all sellers - PATCH
/admin/sellers/{id}/verify
- Verify seller
- GET
-
Coupon Management
- GET
/admin/coupons
- List all coupons - POST
/admin/coupons/add
- Create coupon - PATCH
/admin/coupons/{id}
- Update coupon status
- GET
- Clone the repository
git clone https://github.com/abdullahnettoor/food-delivery-eCommerce.git
- Install dependencies
make deps
- Set up environment variables (.env)
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=foodiebuddie
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
TWILIO_ACCOUNT_SID=your_account_sid
TWILIO_AUTH_TOKEN=your_auth_token
TWILIO_SERVICE_SID=your_service_sid
RAZORPAY_KEY_ID=your_key_id
RAZORPAY_SECRET=your_secret
- Run the application
make run
For development with hot reload:
make nodemon
- Generate Swagger documentation:
make swag
- Fork the repository
- Create your 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
This project is licensed under the MIT License - see the LICENSE file for details.