Pourfect is a beautifully crafted, cross-platform mobile app built with Expo React Native for discovering, exploring, and learning about cocktails. Whether you're a mixology enthusiast or a casual sipper, Pourfect helps you dive into a curated world of drinks โ with offline support, fun interactions, and a personalized experience.
- ๐งญ Explore Cocktails โ Browse from a collection of handcrafted cocktails with ingredients, glass types, and instructions.
- ๐พ Offline Mode โ Cache cocktail and alcohol data locally using MMKV for seamless access even without internet.
- ๐ Favorites โ Save your go-to cocktails using persistent local storage powered by Zustand + MMKV.
- ๐ณ Shake to Discover โ Shake your phone to discover a random cocktail using expo-sensors.
- ๐ก Daily Tip Toast โ Receive a fun tip or fact every day when you open the app.
- ๐งช Personalized Themes โ Coming soon via nativewind for customizable looks and feel.
- React Native + Expo Router
- Zustand for state management
- react-native-mmkv for ultra-fast local storage
- Supabase โ PostgreSQL + Realtime backend with SQL RPCs
- expo-sensors for motion detection
- TypeScript throughout
- Tailwind/NW (nativewind) for styling (in progress)
Built on a normalized schema using PostgreSQL in Supabase, including:
cocktails
๐นalcohols
๐ฅingredients
๐ฟcocktail_ingredients
cocktail_alcohols
Includes custom RPC functions like get_random_cocktail()
for optimized backend querying.
git clone https://github.com/dixitpriyanshu/pourfect.git
cd pourfect
bun install
npx expo start
There is a pourfect_mock.sql for tables creation and entering the mock data, make sure you replace the images link to your images.
You can store images in Supabase storage bucket or your prefered storage option.
Make sure to:
-
Add your Supabase project keys in .env
-
Run Supabase migrations (or use the SQL insert seed provided)
-
Enable device permissions if testing on physical phone
๐ฒ APK Download You can try the app instantly by downloading the latest APK below:
๐ Download Pourfect.apk
(Built using EAS Build + Expo Dev Client)
๐งโ๐ป Contributing This is a personal/portfolio project, but open to suggestions and ideas. Feel free to fork or submit issues!
๐ง Lessons Learned
-
Implemented complex state handling and offline-first UX with Zustand + MMKV
-
Leveraged custom RPCs and relational queries in Supabase for performant backend
-
Developed fun interactive features (like shake-to-discover) to improve user engagement
-
Learned to handle network resilience, caching, and async data fetching gracefully
๐ฎ Contact Feel free to reach out if you're interested in the project or want to collaborate!
-
Developer: Priyanshu Dixit
-
Email: [email protected]
Made with โ, ๐ป, and a splash of ๐ธ