DinnaFind is your foodie wingman, using Touch Grass™️ Precision Geofencing Technology to nudge you toward epic eats and away from the same old takeout. Discover restaurants, save favorites, and get sassy reminders to try that dumpling spot you keep ignoring.
- Reverse Foodie Shaming: Get roasted for defaulting to fast food when a gem is nearby. Example: “POV: You’re at McDonald’s, but that artisanal taco truck is right there.”
- Carb Respect Mode: Our Bread-Pilled Discovery Engine™️ prioritizes carb-heavy spots—because gluten’s a vibe, not a villain.
- Grandma’s Guilt Trip API: Location-based reminders of family-recommended spots, with a side of “Nonna’s disappointed” if you skip them.
- Smart Geofencing: Walk near a saved pizza joint? Get a ping. Drive past that legendary arepa truck? We’ll let you know.
🎪 Shameless Engagement Hacks
- 🔔 Enable "Hangry Mode" for alerts that escalate from polite to your grandmother's guilt in 15min 📍 "POV: You're geotagged at McDonald's but saved 17 artisanal toast spots" 🍔 "Like a food wingman, but with 200% more tough love" 🕵️♂️ "Catfish-Free Check-In" Uses AI, satellite imagery, and vibes to confirm that "quaint café" isn't just a gas station hot dog stand with VSCO filters.
📲 Off-App Engagement Boosters
- "Lived Experience Points (LEP)" "Bread-Pilled Discovery Engine" - Prioritizes carb-forward establishments because gluten is not the enemy, blandness is. "Forklift Certified" Badge Unlocked after visiting 5 saved spots. Proof you're not a foodie NPC.
Thanks to DinnaFind, I found a meatball sub so good it ended my family's 47-year feud over Sunday gravy. We're all friends now—even Uncle Tony apologized for Christmas '03! — Maria, 41, Peacemaker of the Tri-State Area
DinnaFind's omnichannel approach revolutionized my lunch game. I'm eating like a unicorn startup founder with next-level taste buds. — Brittany, 29, Marketing Manager
Got a notification while doomscrolling in an Uber. Now I’m emotionally attached to a falafel stand. — Aisha, 28, Former Smoothie Bowl Enthusiast
DinnaFind swapped my 20-piece McNugget session for a poke bowl alert. My inner child wept, but my cholesterol threw a party. — Mike, 32, Professional Sadboi
Woke up to 'THE CHURROS ARE NEAR' at 2 a.m. Zero regrets. — Diego, 24, Chaos Goblin
Named 'Best App That’s Not Your Notes App Full of Forgotten Ramen Places' —TechCrunch, Probably
- 🍔 Discover - Find restaurants near you powered by Foursquare Places API
- 📍 Location-based - Search restaurants in your area or any location
- 💾 Save Favorites - Build your personal restaurant bucket list
- ✅ Track Visits - Mark restaurants as visited
- 🏷️ Organize - Add notes, tags, and priorities to your saved places
- 📱 Cross-platform - Works on iOS and Android
- Framework: React Native with Expo (Managed Workflow)
- Language: TypeScript
- Package Manager: Bun
- Navigation: Expo Router (file-based routing)
- Location Services:
- Expo Location (Geolocation & Geofencing)
- Background location tracking
- State Management: Redux Toolkit with Redux Saga
- Storage: Expo SecureStore & AsyncStorage
- APIs:
- Restaurant discovery API (TBD - Foursquare/Google Places)
- Custom backend for social features
- Node.js 18+
- Bun (latest version)
- Expo Go app on your phone
- iOS Simulator (Mac) or Android Emulator (optional)
Clone the repository:
git clone https://github.com/YOUR_USERNAME/dinnafind.git
cd dinnafind && bun install
# Start Expo development server
bun start
# Run on iOS Simulator
bun ios
# Run on Android Emulator
bun android
# Run on Expo Go (scan QR code)
bun start --tunnel
dinnafind/
├── __mocks__/ # Mock files for testing
├── __tests__/ # Test files
├── api/ # API integration layer
├── app/ # Expo Router screens
│ ├── (tabs)/ # Tab navigation screens
│ └── auth/ # Authentication flow
├── assets/ # Static assets (fonts, images)
├── components/ # Reusable UI components
│ ├── common/ # Shared components
│ └── screens/ # Screen-specific components
├── constants/ # App constants
├── contexts/ # React contexts
├── hooks/ # Custom React hooks
├── models/ # TypeScript models/interfaces
├── providers/ # App providers
├── services/ # Business logic services
├── store/ # Redux store configuration
│ ├── slices/ # Redux Toolkit slices
│ ├── sagas/ # Redux Sagas
│ └── reducers/ # Redux reducers
├── theme/ # Theme configuration
├── types/ # TypeScript type definitions
└── utils/ # Utility functions
// Real-time location tracking for nearby restaurants
import * as Location from 'expo-location';
import * as TaskManager from 'expo-task-manager';
// Geofencing for restaurant notifications
const GEOFENCE_TASK = 'restaurant-geofence';
- User location-based search
- Friend recommendations
- Curated lists from trusted sources
- Smart notifications based on proximity
# Type checking
bun typecheck
# Linting
bun lint
# Run tests
bun test
# Build for preview
bun expo export
# Configure EAS
bun eas build:configure
# Build for iOS
bun eas build --platform ios
# Build for Android
bun eas build --platform android
cp .env.example .env.local
Then add your API keys to .env.local
:
- Foursquare API: Get your API key from Foursquare Developers
- Supabase: Create a project and get your keys from Supabase
# .env.local
FOURSQUARE_CLIENT_ID=
FOURSQUARE_CLIENT_SECRET=
FOURSQUARE_API_KEY=
EXPO_PUBLIC_SUPABASE_URL=
EXPO_PUBLIC_SUPABASE_KEY=
EXPO_PUBLIC_SUPABASE_ANON_KEY=
API_URL=https://api.foursquare.com/v3
EXPO_ROUTER_APP_ROOT=./app
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow the existing code style
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License.