Swipe. Match. Order. Pay with Stellar.
Discoverly is a Tinder-style food ordering app where users swipe through food items, match with their cravings, and pay seamlessly using the Stellar blockchain.
Built with:
- โ๏ธ Expo (React Native) โ Mobile app
- ๐ข Express.js โ Backend API
- โญ Stellar โ On-chain payment processing
- ๐ MongoDB โ Data persistence
Discoverly reimagines food ordering with a swipe-based discovery experience.
Instead of scrolling through long menus:
- Users swipe right to like a dish
- Swipe left to skip
- Matched dishes go into their cart
- Payments are processed via Stellar blockchain
This allows:
- Fast crypto-native checkout
- Low transaction fees
- Borderless payments
- Transparent transaction tracking
discoverly/
โ
โโโ mobile/ โ Expo (React Native) app
โโโ backend/ โ Express.js API
โโโ stellar/ โ Stellar payment utilities & services
โโโ README.md
- Swipe UI (card stack)
- User authentication
- Wallet connection
- Order flow
- Payment confirmation
- Auth & session management
- Restaurant & food listing APIs
- Match & cart management
- Order creation
- Stellar payment verification
- Webhook/event listeners
- Wallet creation (optional custodial)
- Payment intent generation
- Transaction submission
- Transaction verification
- Payment status tracking
- Expo
- React Native
- React Navigation
- Axios
- Zustand (or preferred state manager)
- Node.js
- Express.js
- MongoDB + Mongoose
- Stellar SDK
- JWT Authentication
- Stellar Network
- Stellar SDK (JavaScript)
- Horizon API
- Register / Login
- Swipe-based food discovery
- Add to cart via match
- Checkout with Stellar
- View order history
- Track payment status
- Create food listings
- Manage availability
- Receive on-chain payments
- Create payment request
- User signs transaction
- Submit to Stellar network
- Verify on backend
- Confirm order after verification
import { Horizon, Networks } from "stellar-sdk";
const server = new Horizon.Server("https://horizon-testnet.stellar.org");
const networkPassphrase = Networks.TESTNET; -
User taps Checkout
-
Backend creates a payment intent
-
Backend returns:
- Destination address
- Amount
- Memo (order ID)
-
User signs transaction
-
Transaction submitted to Stellar
-
Backend verifies:
- Transaction hash
- Destination
- Memo
- Amount
-
Order marked as PAID
const tx = await server.transactions().transaction(txHash).call();
if (
tx.memo === orderId &&
tx.successful
) {
// Mark order as paid
}git clone https://github.com/your-username/discoverly.git
cd discoverlycd backend
npm installCreate .env:
PORT=5000
MONGO_URI=
JWT_SECRET=
STELLAR_SECRET_KEY=
STELLAR_NETWORK=testnet
Run:
npm run devcd mobile
npm install
npx expo startUpdate API base URL inside config.
| Variable | Description |
|---|---|
| PORT | API port |
| MONGO_URI | MongoDB connection string |
| JWT_SECRET | Auth signing secret |
| STELLAR_SECRET_KEY | Server wallet secret |
| STELLAR_NETWORK | testnet / public |
Food cards are fetched from:
GET /api/foods/discover
Swipe Right:
POST /api/match
Creates:
- Match record
- Adds to cart
Swipe Left:
- No persistence (optional tracking)
Swipe โ Match โ Cart โ Checkout โ Stellar Payment โ Verification โ Order Confirmed
Order statuses:
- PENDING
- AWAITING_PAYMENT
- PAID
- PREPARING
- COMPLETED
- CANCELLED
- Never expose server secret key
- Verify all Stellar transactions on backend
- Validate memo & amount
- Use HTTPS in production
- Use rate limiting on payment endpoints
- Consider multi-sig for restaurant wallets (future improvement)
- AWS / Railway / Render / DigitalOcean
- Use production Stellar network
- Secure environment variables
- Expo EAS build
- App Store / Play Store deployment
- Non-custodial wallet integration
- QR payment support
- Restaurant analytics dashboard
- Stablecoin support (USDC on Stellar)
- Subscription meal plans
- On-chain loyalty points
Use Stellar Testnet:
- Fund accounts via Friendbot
- Switch to PUBLIC only in production
- Fork the repo
- Create feature branch
- Commit changes
- Open PR
Please follow:
- Clean commit messages
- Consistent code style
- Proper API documentation
MIT License
Discoverly combines the addictive swipe UX of modern dating apps with the power of blockchain-based payments to create a frictionless, borderless food discovery experience.
Food meets finance. Discovery meets decentralization.