A modern, cross-platform food ordering application built with React Native, Expo, and Appwrite. This app allows users to browse a menu, search for food, customize orders, manage a cart, and place orders, all with a beautiful and responsive UI.
- React Native 19 – Core framework for building native apps
- Expo 53 – Toolchain for React Native development
- Expo Router – File-based routing for navigation
- Appwrite – Backend-as-a-Service for authentication, database, and storage
- Zustand – State management for cart and auth
- NativeWind + Tailwind CSS – Utility-first styling for React Native
- TypeScript – Type safety and modern JavaScript features
- Sentry – Error tracking and session replay
- Other Libraries:
- @expo/vector-icons, react-native-gesture-handler, react-native-reanimated, react-native-safe-area-context, react-native-screens, use-debounce, clsx, etc.
- Authentication: Sign up, sign in, and session management via Appwrite
- Menu Browsing: View food categories and menu items with images and details
- Search & Filter: Find food by name or category
- Cart Management: Add, remove, and customize items in your cart
- Order Summary: View payment breakdown, delivery fee, and discounts
- Profile: User profile management (placeholder for extension)
- Responsive UI: Modern, mobile-first design with custom fonts and icons
- Error Handling: Integrated Sentry for error tracking
food_ordering-main/
├── app/ # App entry, navigation, and screens
│ ├── (auth)/ # Authentication screens (sign-in, sign-up)
│ ├── (tabs)/ # Main app tabs (home, search, cart, profile)
│ └── _layout.tsx # Root layout and Sentry integration
├── assets/ # Fonts, icons, and images
├── components/ # Reusable UI components (buttons, cards, inputs)
├── constants/ # Static data, images, and configuration
├── lib/ # Appwrite integration, data, and hooks
├── store/ # Zustand stores for auth and cart
├── globals.css # Global styles (NativeWind)
├── tailwind.config.js # Tailwind/NativeWind config
├── package.json # Project dependencies and scripts
└── ... # Other config and environment files
- Clone the repository:
git clone <repo-url> cd Pentry
- Install dependencies:
npm install # or yarn install - Set up environment variables:
- Create a
.envfile with your Appwrite endpoint and project ID:EXPO_PUBLIC_APPWRITE_ENDPOINT=your-appwrite-endpoint EXPO_PUBLIC_APPWRITE_PROJECT_ID=your-appwrite-project-id
- Create a
- Start the development server:
npm start # or yarn start - Run on device or emulator:
- Use Expo Go app or your preferred emulator for iOS/Android/web.
npm start– Start Expo development servernpm run android– Run on Android device/emulatornpm run ios– Run on iOS simulatornpm run web– Run in web browsernpm run lint– Lint code with ESLint
- Add new menu items or categories in
lib/data.ts - Extend authentication or user profile features in
store/auth.store.tsandapp/(auth)/ - Customize UI components in
components/ - Update backend logic in
lib/appwrite.ts
This project is for educational/demo purposes. Please check the repository for license details.