Food Delivery Server is the backend for the Food Delivery App (React Native mobile app).
- TypeScript
- Node.js
- Express
- MongoDB
- Twilio API
- JSON Web Token
- Docker
- Node.js
- Docker
-
Get a free API Key at Twilio
-
Clone the repository
git clone https://github.com/mdossantosdev/food-delivery-server.git
- Go into food-delivery-server
cd food-delivery-server
- Copy the
.env.sample
file to.env
and fill it
cp .env.sample .env
DB_CLUSTER=your_db_cluster
DB_NAME=your_db_name
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_password
JWT_SECRET=your_jwt_secret
TOKEN_LIFE=24h
TWILIO_ACCOUNT_SID=your_twilio_account_sid
TWILIO_AUTH_TOKEN=your_twilio_auth_token
TWILIO_PHONE_NUMBER=your_twilio_phone_number
- Run the Docker container
docker-compose up
- The API should now be running at http://localhost:8000
POST /api/v1/admin/merchant
: Create a new merchant
GET /api/v1/admin/merchants
: Get a list of all existing merchants
GET /api/v1/admin/merchant/:id
: Get a specific merchant by ID
GET /api/v1/admin/transactions
: Get a list of all existing transactions
GET /api/v1/admin/transaction/:id
: Get a specific transaction by ID
PUT /api/v1/admin/deliver/verify
: Verify a deliverer by updating their verification status
GET /api/v1/admin/delivers
: Get a list of all existing deliverers
POST /api/v1/admin/category
: Create a new category
POST /api/v1/user/register
: Create a new customer
PATCH /api/v1/user/verify
: Verify the phone number
POST /api/v1/user/login
: Login as a customer
GET /api/v1/user/otp
: Get a new OTP for user verification
GET /api/v1/user/profile
: Get the customer's profile
PATCH /api/v1/user/profile
: Edit the customer's profile
POST /api/v1/user/create-order
: Create a new order
GET /api/v1/user/orders
: Get all orders placed by the customer
GET /api/v1/user/order/:id
: Get a specific order by ID
PATCH /api/v1/user/order/:id
: Update the status of a specific order by ID
POST /api/v1/user/cart
: Add a food item to the customer's cart
GET /api/v1/user/cart
: Get the items in the customer's cart
DELETE /api/v1/user/cart
: Empty the customer's cart
GET /api/v1/user/offer/verify/:id
: Verify the validity of an offer by ID
POST /api/v1/user/create-payment
: Create a payment transaction
POST /api/v1/deliver/register
: Create a new deliverer
POST /api/v1/deliver/login
: Login as a deliverer
GET /api/v1/deliver/profile
: Get the deliverer's profile
PATCH /api/v1/deliver/profile
: Edit the deliverer's profile
PATCH /api/v1/deliver/update-status
: Updates the availability status and location of the deliverer
POST /api/v1/merchant/login
: Login as a merchant
GET /api/v1/merchant/profile
: Get the merchant's profile
PATCH /api/v1/merchant/profile
: Update merchant's profile information
PATCH /api/v1/merchant/coverimage
: Update merchant's cover image URL
PATCH /api/v1/merchant/service
: Update merchant's service availability and location
POST /api/v1/merchant/food
: Create a new food item for the merchant
GET /api/v1/merchant/food
: Get all food items associated with the merchant
GET /api/v1/merchant/orders
: Get all orders associated with the merchant
GET /api/v1/merchant/order/:id
: Get details of a specific order by ID
PUT /api/v1/merchant/order/:id/process
: Update status and remarks of a specific order by ID
POST /api/v1/merchant/offer
: Create a new offer for the merchant
GET /api/v1/merchant/offers
: Get offers associated with the merchant
PUT /api/v1/merchant/offer/:id
: Update an existing offer by ID
GET /api/v1/shop/categories
: Get available food categories from the shop
GET /api/v1/shop/top-restaurants/:postalCode
: Get top restaurants based on the postal code
GET /api/v1/shop/foods30min/:postalCode
: Get food items deliverable within 30 minutes in a postal code
GET /api/v1/shop/search/:postalCode
: Search for food items in restaurants within a postal code
GET /api/v1/shop/restaurant/:id
: Get detailed information about a specific restaurant by ID
GET /api/v1/shop/offers/:postalCode
: Get active offers based on the postal code
This project is licensed under the MIT License.