RecipeApp is a full-stack mobile application for discovering, posting, and saving recipes. It's built with React Native (Expo) on the frontend and a Node.js / Express / MongoDB REST API on the backend, with Firebase Authentication for user accounts and AWS S3 for recipe image storage.
This repository contains both halves of the project:
ReactNative_RecipeApp/
├── frontend/ → React Native (Expo) mobile app
└── backend/ → Express + MongoDB REST API
- 🔐 Authentication – Sign up / log in with Firebase Auth
- 📖 Browse Recipes – View all recipes, organized by category and difficulty
- ✍️ Add Recipes – Authenticated users can post their own recipes with images
- ⭐ Favorites – Save and manage favorite recipes
- 🗂️ My Recipes – View and manage recipes you've personally posted
- 🛠️ Admin Panel – Admin-only category management screen
- 🖼️ Image Uploads – Recipe images uploaded to AWS S3 via the backend
- 📶 Offline Detection – Notifies users when they lose internet connectivity
| Layer | Technology |
|---|---|
| Mobile App | React Native, Expo, NativeWind (Tailwind), Zustand, React Navigation |
| Auth | Firebase Authentication |
| Backend API | Node.js, Express |
| Database | MongoDB (Mongoose) |
| File Storage | AWS S3 |
| Deployment | EAS Build (frontend), Azure Web App (backend) |
ReactNative_RecipeApp/
├── frontend/
│ ├── App.js # Root navigation (Drawer + Tabs)
│ ├── Screens/ # App screens (Sign in, Add Recipe, Admin, etc.)
│ ├── Tabs/ # Bottom tab navigator screens
│ ├── Components/ # Reusable UI components
│ ├── Store/ # Zustand state management + API calls
│ ├── Firebase/ # Firebase config & auth setup
│ └── assets/ # Images, icons, splash screens
│
└── backend/
├── server.js # Express app entry point
├── routes/ # API route definitions
├── Functions/ # Business logic per resource
├── model/ # Mongoose schemas
└── AWS/ # S3 client setup
This is a monorepo-style layout — the frontend and backend are run and configured independently. See the dedicated README in each folder for full setup instructions:
- 📱
frontend/README.md— running the mobile app with Expo - 🖥️
backend/README.md— running the API server
-
Start the backend first (the app needs a live API to fetch data):
cd backend npm install npm run dev -
Then start the frontend, pointing it at your backend's URL:
cd frontend npm install npm start
- Node.js v18+ and npm
- Expo CLI (
npm install -g expo-cli) or usenpx expo - A MongoDB instance (local or MongoDB Atlas)
- An AWS account with an S3 bucket (for image uploads)
- A Firebase project with Authentication enabled
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push to the branch and open a Pull Request
This project is licensed under the MIT License.