A production-ready, open-source starter kit for building offline order receiving apps for on-demand services and local commerce. Built with React, TypeScript, and Vite.
Lynxo is a fully functional frontend template for launching:
- π° Service Bookings β Water delivery, gas cylinders, home maintenance, cleaning services
- π Retail & Grocery Delivery β Local grocery stores, restaurant orders, pharmacy delivery
- π¦ Hyperlocal Commerce β Any business needing order collection + last-mile delivery
Why Lynxo + Tradly?
- Tradly = Headless commerce platform (product listings, inventory, checkout, payments)
- Lynxo = Delivery-focused customer-facing app (orders, real-time tracking, fulfillment)
Together, they give you a complete stack in days, not months.
- Live Product Listings β Real-time inventory from Tradly
- Smart Search & Filters β Find products by category or search
- Easy Checkout β Add items, set delivery slot, track order
- Real-time Tracking β Order status updates every 10 seconds
- Mobile-First β Works perfectly on phones and tablets
- Product Sync β Automatically pulls listings, prices, inventory from Tradly
- User Authentication β Email/OTP registration built-in
- Real Orders β Orders sync to Tradly for fulfillment tracking
- Payment Methods β Dynamically fetch available payment options
- Shipping Methods β Support pickup, delivery, or custom logistics
- Offline-First β Works with mock data; switch to live API anytime
- Error Handling β Graceful fallbacks if API is unavailable
- TypeScript β Full type safety across the codebase
- Responsive Design β Built with Tailwind CSS (looks great on all screens)
| Layer | Technology |
|---|---|
| Frontend | React 19 + TypeScript |
| Build | Vite 7 |
| State | Zustand 5 |
| Styling | Tailwind CSS 3 |
| Icons | Lucide React |
| Commerce Backend | Tradly Platform API |
- Node.js β₯ 18
- npm or yarn
- Tradly Account (optional, but recommended for live testing)
- Sign up at https://tradly.app/signup
- Get your publishable API key from SuperAdmin > Settings > API
git clone https://github.com/TRADLY-PLATFORM/Lynxo.git
cd Lynxo
npm installnpm run devOpens at http://localhost:5173. App works with built-in demo data.
Create .env.local:
VITE_TRADLY_PUBLISHABLE_KEY=pk_live_your_key_here
VITE_TRADLY_BASE_URL=https://api.tradly.app
VITE_TRADLY_CURRENCY=USDReload your appβnow pulling real products from your Tradly account! π
npm run buildOutputs optimized build to dist/. Ready for deployment.
src/
βββ pages/ # Page components
β βββ Home.tsx # Product listing & search
β βββ Checkout.tsx # Cart review, user info, order placement
β βββ Tracking.tsx # Real-time order status
βββ components/ # Reusable UI components
βββ store/
β βββ useStore.ts # Zustand store (cart, orders, Tradly session)
βββ lib/
β βββ tradlyApi.ts # Tradly API client
β βββ data/
β βββ products.ts # Mock product data (fallback)
βββ styles/
β βββ index.css # Tailwind imports
βββ App.tsx # Root component
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/products/v1/listings |
Fetch product listings |
GET |
/v1/categories |
Fetch product categories |
POST |
/v1/users/register |
Register new user |
POST |
/v1/users/login |
Login existing user |
POST |
/v1/users/verify |
Verify OTP after registration |
POST |
/v1/addresses |
Create delivery address |
GET |
/v1/tenants/payment_methods |
Fetch available payment methods |
GET |
/v1/tenants/shipping_methods |
Fetch available shipping methods |
POST |
/products/v1/cart |
Add item to user's cart |
DELETE |
/products/v1/cart |
Clear user's cart |
POST |
/products/v1/cart/checkout |
Place real order |
GET |
/products/v1/orders/{id} |
Fetch order details & status |
All API requests include:
- Header:
Authorization: Bearer {publishable_key} - User-specific endpoints also include:
X-Auth-Key: {user_auth_key}(received after login)
User adds items
β
User clicks "Place Order"
β
Login or Register (if Tradly enabled)
β
OTP Verification (if new user)
β
Create delivery address
β
Sync local cart β Tradly
β
Fetch payment & shipping methods
β
POST checkout β Real order created
β
Track order in real-time
Home (/)
- Product grid with live inventory
- Category & search filters
- Product detail modal
Cart (/cart)
- View items, update quantities
- Order summary with delivery fee
Checkout (/checkout)
- User details & delivery address
- Delivery time slot selection
- OTP verification (if new user)
- Order placement
Tracking (/tracking)
- Real-time order status
- Delivery time estimate
- Order reference number
The app uses Zustand for simple, scalable state:
// Cart & Orders
cart, addToCart, removeFromCart, cartTotal(), cartCount()
orders, currentOrderId, placeOrderAsync()
// Tradly User Session
tradlyUser, verifySession, loginOrRegisterUser()
// Products
tradlyProducts, productsLoading, fetchProducts()Data persists to localStorage for returning customers.
# Leave empty to use mock data (perfect for development)
VITE_TRADLY_PUBLISHABLE_KEY=
# Or fill in your live API key
VITE_TRADLY_PUBLISHABLE_KEY=pk_live_your_key_here
VITE_TRADLY_BASE_URL=https://api.tradly.app
VITE_TRADLY_CURRENCY=USDnpm run lintnpm run buildnpm run preview| File | Purpose |
|---|---|
src/lib/tradlyApi.ts |
Tradly API client + types |
src/store/useStore.ts |
Cart, orders, auth state |
src/pages/Home.tsx |
Product listing + filters |
src/pages/Checkout.tsx |
Order placement flow |
src/pages/Tracking.tsx |
Real-time order tracking |
.env.local |
YOUR API KEY (never commit) |
- Check
.env.localβ isVITE_TRADLY_PUBLISHABLE_KEYset? - If empty, app uses mock data (expected)
- If set, check browser console for API errors
- Verify API key is valid at https://tradly.app
- Ensure name, email, and address are filled
- Check browser console for API errors
- App falls back to local orders if API fails
- Don't use
public x: stringin constructors - Use explicit fields:
public x: string; constructor(x) { this.x = x; }
- Tradly Docs: https://developer.tradly.app
- React Docs: https://react.dev
- Vite Docs: https://vite.dev
- Zustand Docs: https://github.com/pmndrs/zustand
- Tailwind Docs: https://tailwindcss.com
Part of the TRADLY-PLATFORM ecosystem. See LICENSE file.
- Issues: GitHub issues on this repo
- Tradly API help: https://developer.tradly.app
- Community: TRADLY platform forums
Lynxo = Template. Tradly = Backend. Your app = Built! π