A cross-platform super app for travel & payments in Seychelles ๐ธ๐จ
TropiLink is an all-in-one platform connecting tourists and locals with local services โ tours, taxis, boats, and more. Think of it as a mini Grab or WeChat tailored for the Seychelles islands.
- ๐ Service Booking โ Book tours, taxis, boats, and local experiences
- ๐ฌ Real-Time Chat โ Instant messaging between users and service providers
- ๐ณ Multi-Payment Support โ Stripe, WeChat Pay, Alipay integration
- ๐ Chinese Mini Programs โ WeChat, Alipay, and Baidu Smart Programs for Chinese tourists
- ๐ฑ Cross-Platform โ Mobile apps for iOS, Android, and Web
- ๐ฅ๏ธ Admin Dashboard โ Comprehensive management interface
TropiLink/
โโโ backend/ # Node.js + Express API Server
โ โโโ src/
โ โ โโโ controllers/ # Route handlers
โ โ โโโ models/ # Database models
โ โ โโโ routes/ # API routes
โ โ โโโ middleware/ # Auth, validation
โ โ โโโ services/ # Business logic
โ โ โโโ utils/ # Helper functions
โ โโโ package.json
โ
โโโ user-app/ # React Native / Expo Mobile App
โ โโโ src/
โ โ โโโ screens/ # App screens
โ โ โโโ components/ # Reusable components
โ โ โโโ navigation/ # React Navigation setup
โ โ โโโ services/ # API & Socket services
โ โ โโโ context/ # React Context (Auth, etc.)
โ โ โโโ utils/ # Helpers & constants
โ โโโ app.json # Expo configuration
โ โโโ eas.json # EAS Build configuration
โ โโโ package.json
โ
โโโ admin-dashboard/ # React Admin Panel
โ โโโ src/
โ โ โโโ pages/ # Dashboard pages
โ โ โโโ components/ # UI components
โ โ โโโ services/ # API integration
โ โโโ package.json
โ
โโโ wechat-miniprogram/ # WeChat Mini Program (ๅพฎไฟกๅฐ็จๅบ)
โ โโโ pages/ # Mini program pages
โ โโโ app.js
โ โโโ app.json
โ โโโ project.config.json
โ
โโโ alipay-miniprogram/ # Alipay Mini Program (ๆฏไปๅฎๅฐ็จๅบ)
โ โโโ pages/ # Mini program pages
โ โโโ app.js
โ โโโ app.json
โ
โโโ baidu-smartprogram/ # Baidu Smart Program (็พๅบฆๆบ่ฝๅฐ็จๅบ)
โ โโโ pages/ # Smart program pages
โ โโโ app.js
โ โโโ project.swan.json
โ
โโโ documentation/ # Project documentation
| Layer | Technology |
|---|---|
| Backend | Node.js, Express, TypeScript |
| Database | Supabase (PostgreSQL) |
| Real-Time | Socket.io (WebSocket) |
| User App | React Native, Expo |
| Admin Dashboard | React, TypeScript, Vite |
| Mini Programs | WeChat, Alipay, Baidu |
| Payments | Stripe, WeChat Pay, Alipay |
| Authentication | JWT, Supabase Auth |
- Node.js 18+
- npm or yarn
- Expo CLI (
npm install -g expo-cli) - EAS CLI (
npm install -g eas-cli) โ for native builds
# Clone the repository
git clone https://github.com/NiqueWrld/TropiLink.git
cd TropiLink
# Install backend dependencies
cd backend
npm install
# Install user app dependencies
cd ../user-app
npm install
# Install admin dashboard dependencies
cd ../admin-dashboard
npm installCreate .env files in each project:
Backend (backend/.env):
PORT=3000
DATABASE_URL=your_supabase_connection_string
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_anon_key
JWT_SECRET=your_jwt_secret
STRIPE_SECRET_KEY=sk_test_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxxUser App (user-app/.env):
EXPO_PUBLIC_API_URL=http://localhost:3000/api
EXPO_PUBLIC_SOCKET_URL=http://localhost:3000
EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx# Start backend server
cd backend
npm run dev
# Start user app (in a new terminal)
cd user-app
npm start
# Press 'w' for web, 'a' for Android, 'i' for iOS
# Start admin dashboard (in a new terminal)
cd admin-dashboard
npm run devTropiLink uses Expo EAS Build to compile native Android and iOS apps:
cd user-app
# Login to Expo
eas login
# Build Android APK (for testing)
npm run build:android:preview
# Build Android AAB (for Play Store)
npm run build:android
# Build iOS (requires Apple Developer account)
npm run build:ios# Open in WeChat DevTools
# Import project from: wechat-miniprogram/
# AppID: Your registered WeChat AppID# Open in Alipay DevTools
# Import project from: alipay-miniprogram/# Open in Baidu DevTools
# Import project from: baidu-smartprogram/| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
User login |
| POST | /api/auth/logout |
User logout |
| GET | /api/auth/me |
Get current user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/services |
List all services |
| GET | /api/services/:id |
Get service details |
| GET | /api/services/category/:category |
Get by category |
| POST | /api/services |
Create service (Provider) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/bookings/my |
Get user's bookings |
| POST | /api/bookings |
Create booking |
| PATCH | /api/bookings/:id/cancel |
Cancel booking |
| POST | /api/bookings/:id/rate |
Rate booking |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/chat/conversations |
Get conversations |
| GET | /api/chat/conversations/:id/messages |
Get messages |
| POST | /api/chat/conversations/:id/messages |
Send message |
| Role | Description |
|---|---|
| Tourist | Visitors booking services |
| Local | Residents using local services |
| Provider | Business owners offering services |
| Admin | Platform administrators |
TropiLink supports multiple payment methods:
- Stripe โ International credit/debit cards
- WeChat Pay โ Chinese mobile payments
- Alipay โ Chinese mobile payments
Real-time features powered by Socket.io:
// Client events
socket.emit('join', { conversationId });
socket.emit('sendMessage', { conversationId, content });
socket.emit('typing', { conversationId });
// Server events
socket.on('newMessage', (message) => {});
socket.on('userTyping', (data) => {});
socket.on('bookingUpdate', (booking) => {});This project is licensed under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
NiqueWrld - GitHub
Made with โค๏ธ for Seychelles ๐ธ๐จ