· 4 min read
Cross-Platform Mobile App with React Native & Node.js
Project Overview
We developed a comprehensive food delivery mobile application that connects customers, restaurants, and delivery drivers through a seamless, real-time platform.
Client Requirements
- Industry: Food & Beverage Delivery
- Timeline: 5 months
- Budget: $25,000 - $35,000
- Platform: iOS & Android
- Target Users: 10,000+ customers, 500+ restaurants
Key Features Implemented
Customer App Features
- User registration and profile management
- Restaurant browsing with filters and search
- Menu viewing with customization options
- Shopping cart and checkout process
- Multiple payment methods integration
- Real-time order tracking with GPS
- Order history and reordering
- Rating and review system
- Push notifications for order updates
Restaurant Dashboard
- Menu management and pricing
- Order management and status updates
- Sales analytics and reporting
- Customer feedback monitoring
- Promotional campaigns management
- Inventory tracking
- Revenue and performance metrics
Delivery Driver App
- Driver registration and verification
- Real-time order assignments
- GPS navigation integration
- Earnings tracking
- Delivery history
- Performance metrics
- In-app communication with customers
Technical Implementation
Mobile App (React Native)
// Real-time order tracking component
import React, { useEffect, useState } from 'react';
import { View, Text } from 'react-native';
import MapView, { Marker } from 'react-native-maps';
import io from 'socket.io-client';
const OrderTracking = ({ orderId }) => {
const [driverLocation, setDriverLocation] = useState(null);
const [orderStatus, setOrderStatus] = useState('preparing');
useEffect(() => {
const socket = io('https://api.fooddelivery.com');
socket.emit('trackOrder', orderId);
socket.on('locationUpdate', (location) => {
setDriverLocation(location);
});
socket.on('statusUpdate', (status) => {
setOrderStatus(status);
});
return () => socket.disconnect();
}, [orderId]);
return (
<View style={{ flex: 1 }}>
<MapView
style={{ flex: 1 }}
region={{
latitude: driverLocation?.latitude || 0,
longitude: driverLocation?.longitude || 0,
latitudeDelta: 0.01,
longitudeDelta: 0.01,
}}
>
{driverLocation && (
<Marker
coordinate={driverLocation}
title="Delivery Driver"
/>
)}
</MapView>
<Text>Order Status: {orderStatus}</Text>
</View>
);
};Backend API (Node.js + Express)
// Real-time order management
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const Order = require('./models/Order');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
// Order status update endpoint
app.put('/api/orders/:id/status', async (req, res) => {
try {
const { id } = req.params;
const { status, driverLocation } = req.body;
const order = await Order.findByIdAndUpdate(
id,
{ status, driverLocation },
{ new: true }
);
// Emit real-time update to customer
io.to(`order_${id}`).emit('statusUpdate', status);
if (driverLocation) {
io.to(`order_${id}`).emit('locationUpdate', driverLocation);
}
res.json(order);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Socket connection handling
io.on('connection', (socket) => {
socket.on('trackOrder', (orderId) => {
socket.join(`order_${orderId}`);
});
});Database Schema (MongoDB)
// Order model
const orderSchema = new mongoose.Schema({
customer: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
restaurant: { type: mongoose.Schema.Types.ObjectId, ref: 'Restaurant' },
driver: { type: mongoose.Schema.Types.ObjectId, ref: 'Driver' },
items: [{
menuItem: { type: mongoose.Schema.Types.ObjectId, ref: 'MenuItem' },
quantity: Number,
customizations: [String],
price: Number
}],
totalAmount: Number,
status: {
type: String,
enum: ['placed', 'confirmed', 'preparing', 'ready', 'picked_up', 'delivered'],
default: 'placed'
},
deliveryAddress: {
street: String,
city: String,
coordinates: {
latitude: Number,
longitude: Number
}
},
paymentMethod: String,
estimatedDeliveryTime: Date,
actualDeliveryTime: Date
}, { timestamps: true });Advanced Features
Payment Integration
- Multiple payment gateways (Stripe, PayPal, Alipay)
- Wallet system with top-up functionality
- Promotional codes and discounts
- Split payments and tips
- Automatic refund processing
Real-time Features
- Live order tracking with GPS
- Real-time chat between customer and driver
- Push notifications for order updates
- Live restaurant availability updates
- Dynamic pricing based on demand
Analytics & Reporting
- Customer behavior analytics
- Restaurant performance metrics
- Delivery time optimization
- Revenue tracking and forecasting
- Heat maps for popular areas
Results Achieved
Business Metrics
- 15,000+ app downloads in first 3 months
- 85% customer retention rate
- Average order value increased by 30%
- 4.8/5 average app store rating
- 25% month-over-month growth
Technical Performance
- 99.9% app uptime
- Sub-3 second app launch time
- Real-time updates with <1 second latency
- Support for 1000+ concurrent users
- 95%+ crash-free sessions
Technologies Used
Mobile Development:
- React Native 0.72
- Redux Toolkit for state management
- React Navigation for routing
- React Native Maps for GPS tracking
- Socket.io for real-time communication
Backend:
- Node.js with Express.js
- MongoDB with Mongoose ODM
- Socket.io for WebSocket connections
- JWT for authentication
- Multer for file uploads
Third-party Services:
- Stripe for payment processing
- Firebase for push notifications
- Google Maps API for navigation
- Twilio for SMS notifications
- AWS S3 for image storage
DevOps:
- Docker containerization
- AWS EC2 and MongoDB Atlas
- CodePush for over-the-air updates
- Fastlane for automated deployment
- Crashlytics for error monitoring
Client Testimonial
“The mobile app has revolutionized our food delivery business. The real-time tracking feature and seamless user experience have significantly improved customer satisfaction. Orders have increased by 200% since launch, and our operational efficiency has improved dramatically.”
— Wang, CEO of Food Delivery Company
Project Timeline
- Month 1: Requirements analysis and UI/UX design
- Month 2-3: Mobile app development (customer & driver apps)
- Month 4: Backend API and admin dashboard development
- Month 5: Testing, optimization, and app store deployment
Ongoing Maintenance
We provide comprehensive support including:
- Regular app updates and new features
- Performance monitoring and optimization
- Bug fixes and security updates
- App store management and updates
- 24/7 technical support
Contact Us
Ready to build your mobile app? Let’s discuss your project:
- WeChat: anchorlau
- Email: [email protected]
- Phone: +86 18032926002