Fast. Smart. Legendary. Get your favorite spirits, wine, and beer delivered in 30β45 minutes. SipDash is the most feature-rich liquor delivery platform ever built.
- Browse & Order β Browse local liquor stores, filter by category (Spirits, Beer, Wine, Champagne, Cider, RTD, Mixers)
- Real-time Order Tracking β Live status updates: Confirmed β Preparing β Out for Delivery β Delivered
- Driver Info β See your driver's name and call them directly from the app
- Age Verification Gate β Mandatory 21+ confirmation on entry + ID check at door
- Scheduled Delivery β Pick a future date/time slot for your order
- Time-limited deals with live countdown timers
- Claim progress bars showing how many are left
- Automatic expiry β deals vanish when time runs out
- Chat-based AI drinks assistant
- Recommends drinks based on mood, occasion, budget
- Party planning, gift suggestions, trending picks
- Quick prompt suggestions for instant answers
- Enter guest count + party type (Chill Hangout / House Party / Dinner / Rager)
- Auto-calculates exact quantities: beer cans, wine bottles, spirits, mixers
- Estimated cost breakdown per category
- One-tap "Start Shopping" to fill your cart
- $9.99/month or $7.99/month (annual)
- β Free delivery on every order
- β 2Γ loyalty points on all purchases
- β Early access to flash deals
- β Monthly surprise gift
- β VIP priority customer support
- Earn 10 points per $1 spent (20 pts with SipPass)
- Three tiers: π₯ Bronze β π₯ Silver β π₯ Gold
- Redeem points as order credit ($0.01/point)
- Full transaction history
- Unique referral code per user (
SIP-XXXXXX) - 250 bonus points for referrer + referee on first order
- Share via WhatsApp, Instagram, SMS, or copy link
- Referral history and earnings tracker
- Real-time order status notifications
- Points earned alerts
- Flash deal announcements
- In-app notification bell with unread badge
- Save products for later
- Quick-add to cart from wishlist
- Persisted per user account
- Live KPIs: Revenue, Active Orders, Open Stores, Members
- Order Management: Advance order status with one tap, auto-notifies customer
- Store Control: Toggle stores open/closed in real time
- Inventory: Mark products in/out of stock instantly
- Loyalty Overview: Member counts by tier, points balances
| Layer | Technology |
|---|---|
| Frontend | React 18 + Vite |
| Routing | React Router v6 |
| UI Components | shadcn/ui + Tailwind CSS |
| Icons | Lucide React |
| Backend / DB | Base44 (managed BaaS) |
| Auth | Base44 Auth (built-in) |
| AI Assistant | Base44 Backend Functions |
| Deployment | Base44 Cloud |
sipdash/
βββ src/
β βββ App.jsx # Root router
β βββ pages/
β β βββ Home.jsx # Main feed, flash deals, categories
β β βββ StoreDetail.jsx # Store menu + add to cart
β β βββ Cart.jsx # Cart, checkout, address
β β βββ Orders.jsx # Order history
β β βββ OrderTracking.jsx # Live order tracker
β β βββ Rewards.jsx # SipRewards loyalty dashboard
β β βββ Notifications.jsx # Notification center
β β βββ Account.jsx # Profile + settings
β β βββ SipBot.jsx # AI chat assistant
β β βββ PartyPlanner.jsx # Party quantity calculator
β β βββ SipPass.jsx # Premium membership page
β β βββ Referral.jsx # Referral program
β β βββ AdminDashboard.jsx # Operations panel
β βββ components/
β β βββ NotificationBell.jsx # Header notification icon + badge
β β βββ Toast.jsx # In-app toast messages
β βββ lib/
β βββ notificationBus.js # Shared pub/sub event bus
βββ entities/ # Database schemas
β βββ Store.json
β βββ Product.json
β βββ Order.json
β βββ CartItem.json
β βββ LoyaltyAccount.json
β βββ LoyaltyTransaction.json
β βββ Notification.json
β βββ FlashDeal.json
β βββ Wishlist.json
β βββ Referral.json
β βββ Review.json
β βββ ScheduledDelivery.json
βββ functions/
βββ sipAgent.ts # AI backend function
SipDash uses a lightweight pub/sub event bus to keep notification state in sync across components without needing a global state manager like Redux or Context.
The NotificationBell (in the header) and the Notifications page are separate, independent React components. Before this pattern, marking notifications as read on the full page had no way to signal the bell to refresh β the badge would stay stale until a full page reload.
import { notificationBus } from "@/lib/notificationBus";
// Subscribe (e.g. in NotificationBell on mount)
const unsubscribe = notificationBus.subscribe(() => {
reloadNotificationsFromDB();
});
// Emit (e.g. in Notifications.jsx after marking as read)
notificationBus.emit();
// Cleanup on unmount β prevents memory leaks
return () => unsubscribe();User reads notification (Notifications.jsx)
β
βΌ
notificationBus.emit()
β
βΌ
NotificationBell.subscribe callback fires
β
βΌ
loadNotifications() re-fetches from DB
β
βΌ
unreadCount resets β badge clears instantly β
| Decision | Reason |
|---|---|
Plain Set of listeners |
Zero dependencies, tiny footprint (~10 lines) |
| Subscribe returns unsubscribe fn | Mirrors React useEffect cleanup pattern exactly |
| Bell also has a 30s poll | Fallback for cross-tab reads and server-pushed updates |
| Bell emits on its own mark-read | Keeps any future bus consumers in sync too |
The bus has a dedicated test suite (17 tests, 0 failures) covering:
- Core subscribe/emit/unsubscribe lifecycle
- Bell state: init, markAll, markOne, floor-at-zero
- Cross-component sync scenarios
- Memory leak prevention (mount/unmount cycles)
- 30s poll interval setup and teardown
| Entity | Description |
|---|---|
Store |
Liquor store profiles, hours, delivery info |
Product |
Drinks catalog with categories, ABV, pricing |
Order |
Customer orders with full status lifecycle |
CartItem |
Active cart items per user |
LoyaltyAccount |
Points balance, tier, lifetime stats |
LoyaltyTransaction |
Points earn/redeem history |
Notification |
In-app alerts and order updates |
FlashDeal |
Time-limited deals with countdown + claim limits |
Wishlist |
Saved products per user |
Referral |
Referral codes, referred users, bonus tracking |
Review |
Store and product ratings |
ScheduledDelivery |
Future delivery scheduling |
| Route | Page |
|---|---|
/ |
Home (feed, deals, stores) |
/store/:id |
Store menu |
/cart |
Shopping cart |
/orders |
Order history |
/order/:id |
Live order tracking |
/rewards |
Loyalty dashboard |
/notifications |
Notification center |
/account |
User profile |
/sipbot |
AI assistant |
/party-planner |
Party quantity calculator |
/sippass |
Premium membership |
/referral |
Referral program |
/admin |
Admin operations dashboard |
SipDash enforces a 21+ age gate on every session:
- Modal blocks access until user confirms age
- Stored in
localStoragefor session persistence - Physical ID verification required at delivery
- Admin can flag
age_verifiedon orders
- Node.js 18+
- A Base44 account
# Clone the repo
git clone https://github.com/tushar1551/sipdash.git
cd sipdash
# Install dependencies
npm install
# Start dev server
npm run devThis app is deployed and hosted on Base44. Push to main to trigger a deployment.
- Real-time GPS driver tracking map
- OpenAI GPT-4o powered SipBot
- Push notifications (PWA)
- Bundle deals & combo builder
- Social sharing (share your order)
- Multi-store cart (order from multiple stores)
- Dark mode
- Native mobile app (React Native)
- Fork the repo
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'feat: add your feature' - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
MIT License β see LICENSE for details.
SipDash is a platform for legal alcohol delivery. We comply with all local, state, and federal laws regarding alcohol sales and delivery. You must be 21 or older to use this service. Please drink responsibly.
Built with β€οΈ by the SipDash team
π₯ Sip smart. Sip fast. SipDash.