Backend Development for POC Food Ordering App
Budget: €250 – €750 EUR
We are developing a Proof of Concept (POC) food ordering application that enables users to browse places (markets, restaurants, etc.), order food for pickup (no delivery), and make payments. The backend should be built using Django and PostgreSQL and must be structured to integrate seamlessly with an iOS mobile application.
Technical Stack:
* Backend Framework: Django (Django REST Framework - DRF)
* Database: PostgreSQL
* Authentication: JWT (djangorestframework-simplejwt) or OAuth2
* API Documentation: Swagger (drf-yasg) or Redoc
* Payment Gateway: Stripe (or other provider, to be determined)
* Geolocation Services: Yandex Map API for distance and time calculations
* Hosting: AWS, DigitalOcean, or similar (TBD)
Backend Features List:
1. User Management
User Registration & Authentication
JWT-based authentication
Email and password authentication
OAuth2 integration (Google, Apple Login) (if feasible)
Profile management (update name, phone, etc.)
User Roles & Permissions
Customer (Can browse places and order food)
Restaurant/Market Owner (Can manage menu items and receive orders)
Admin (Can manage the system)
User Session Management
Token refresh mechanism
Logout API
2. Places (Markets, Restaurants) Management
Fetch Nearby Places
Retrieve nearby restaurants/markets based on user location
Filter by:
Distance
Rating
Cuisine type
Sorting options (By popularity, distance, or rating)
Place Details
Name, location, rating, category, opening hours
Food menu (items available for ordering)
Place Reviews
Users can leave ratings and reviews for places
Fetch place ratings and aggregate them
3. Food Ordering System
Menu Items
Retrieve a list of food items from a place
Display price, description, availability
Order Placement
Allow users to place an order for pickup
Validate available items and stock before confirming order
Generate a unique order ID
Order Status Updates
Order states: Pending, Accepted, Ready for Pickup, Completed, Canceled
WebSockets or polling-based updates for order status changes
Order History
Retrieve past orders for a user
Show order details and timestamps
4. Payment Integration
Payment Methods
Credit/Debit Card (via Stripe or local gateway)
Cash on Pickup (to be confirmed)
Payment Processing
Secure Stripe API integration for card transactions
Generate payment invoices/receipts
Store transaction details securely in PostgreSQL
5. Distance & Time Estimation
Using Yandex Map API
Calculate distance from user to selected place
Estimate pickup time based on traffic conditions
6. Filtering & Sorting
Filters for Places
By distance
By rating
By open/closed status
Sorting
Nearest first
Highest rated first
Most popular first
8. Notifications System
Order Status Notifications
Push notifications via Firebase Cloud Messaging (FCM) (iOS integration)
Email notifications for order updates
Promotional Notifications
Discounts and deals (future scope)
API Documentation & Testing
Provide fully documented API endpoints using Swagger (drf-yasg) or ReDoc
Unit tests for core features (e.g., user authentication, order placement, payment processing)
Use Postman for API testing
Technical Stack:
* Backend Framework: Django (Django REST Framework - DRF)
* Database: PostgreSQL
* Authentication: JWT (djangorestframework-simplejwt) or OAuth2
* API Documentation: Swagger (drf-yasg) or Redoc
* Payment Gateway: Stripe (or other provider, to be determined)
* Geolocation Services: Yandex Map API for distance and time calculations
* Hosting: AWS, DigitalOcean, or similar (TBD)
Backend Features List:
1. User Management
User Registration & Authentication
JWT-based authentication
Email and password authentication
OAuth2 integration (Google, Apple Login) (if feasible)
Profile management (update name, phone, etc.)
User Roles & Permissions
Customer (Can browse places and order food)
Restaurant/Market Owner (Can manage menu items and receive orders)
Admin (Can manage the system)
User Session Management
Token refresh mechanism
Logout API
2. Places (Markets, Restaurants) Management
Fetch Nearby Places
Retrieve nearby restaurants/markets based on user location
Filter by:
Distance
Rating
Cuisine type
Sorting options (By popularity, distance, or rating)
Place Details
Name, location, rating, category, opening hours
Food menu (items available for ordering)
Place Reviews
Users can leave ratings and reviews for places
Fetch place ratings and aggregate them
3. Food Ordering System
Menu Items
Retrieve a list of food items from a place
Display price, description, availability
Order Placement
Allow users to place an order for pickup
Validate available items and stock before confirming order
Generate a unique order ID
Order Status Updates
Order states: Pending, Accepted, Ready for Pickup, Completed, Canceled
WebSockets or polling-based updates for order status changes
Order History
Retrieve past orders for a user
Show order details and timestamps
4. Payment Integration
Payment Methods
Credit/Debit Card (via Stripe or local gateway)
Cash on Pickup (to be confirmed)
Payment Processing
Secure Stripe API integration for card transactions
Generate payment invoices/receipts
Store transaction details securely in PostgreSQL
5. Distance & Time Estimation
Using Yandex Map API
Calculate distance from user to selected place
Estimate pickup time based on traffic conditions
6. Filtering & Sorting
Filters for Places
By distance
By rating
By open/closed status
Sorting
Nearest first
Highest rated first
Most popular first
8. Notifications System
Order Status Notifications
Push notifications via Firebase Cloud Messaging (FCM) (iOS integration)
Email notifications for order updates
Promotional Notifications
Discounts and deals (future scope)
API Documentation & Testing
Provide fully documented API endpoints using Swagger (drf-yasg) or ReDoc
Unit tests for core features (e.g., user authentication, order placement, payment processing)
Use Postman for API testing