A modern, full-featured recipe management application built with React, Firebase, and Tailwind CSS. Store, organize, and plan your favorite recipes with a beautiful, responsive interface.
- User Registration & Login - Secure authentication with Firebase Auth
- Profile Management - Update profile information and upload profile photos
- Persistent Sessions - Stay logged in across browser sessions
- Add New Recipes - Create recipes with images, ingredients, and instructions
- View All Recipes - Browse your personal recipe collection
- Public Recipe Gallery - Discover recipes from other users
- Recipe Details - View complete recipe information with step-by-step instructions
- Search & Filter - Find recipes quickly with search functionality
- Create Meal Plans - Plan your meals by date
- Recipe Selection - Choose from your saved recipes for meal plans
- Date-based Organization - Organize meals by specific dates
- Personal Overview - Welcome message with user's name
- Recipe Statistics - View total number of recipes created
- Meal Plan Summary - See upcoming meal plans
- Quick Actions - Easy navigation to key features
- Modern Design - Clean, responsive interface with Tailwind CSS
- Dark/Light Theme - Toggle between themes for comfortable viewing
- Orange Theme - Consistent orange color scheme throughout the app
- Mobile Responsive - Works perfectly on all device sizes
- Cloudinary Integration - Upload and store recipe images
- Profile Photos - Upload and manage profile pictures
- Image Optimization - Automatic image optimization and storage
- Node.js (v14 or higher)
- npm or yarn
- Firebase account
- Cloudinary account
-
Clone the repository
git clone <repository-url> cd digital-recipe-book
-
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory with the following variables:VITE_FIREBASE_API_KEY=your_firebase_api_key VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain VITE_FIREBASE_PROJECT_ID=your_firebase_project_id VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id VITE_FIREBASE_APP_ID=your_firebase_app_id VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name VITE_CLOUDINARY_UPLOAD_PRESET=your_cloudinary_upload_preset
-
Firebase Setup
- Create a new Firebase project
- Enable Authentication (Email/Password)
- Create a Firestore database
- Set up security rules for Firestore
-
Cloudinary Setup
- Create a Cloudinary account
- Get your cloud name and upload preset
- Configure upload preset settings
-
Run the application
npm run dev
-
Open your browser Navigate to
http://localhost:5173
digital-recipe-book/
βββ src/
β βββ app/
β β βββ store.js # Redux store configuration
β βββ components/
β β βββ Navbar.jsx # Navigation component
β β βββ Button.jsx # Reusable button component
β β βββ Card.jsx # Reusable card component
β β βββ FormInput.jsx # Reusable form input component
β β βββ RecipeCard.jsx # Recipe card component
β β βββ LoadingSpinner.jsx # Loading spinner component
β β βββ EmptyState.jsx # Empty state component
β β βββ PageContainer.jsx # Page layout container
β βββ context/
β β βββ ThemeContext.jsx # Theme context for dark/light mode
β βββ feature/
β β βββ auth/
β β βββ authSlice.js # Redux auth slice
β β βββ authThunk.js # Redux auth thunks
β βββ firebase/
β β βββ config.js # Firebase configuration
β βββ pages/
β β βββ Home.jsx # Landing page
β β βββ LoginPage.jsx # Login page
β β βββ SignupPage.jsx # Registration page
β β βββ DashboardPage.jsx # User dashboard
β β βββ ProfilePage.jsx # User profile management
β β βββ AddRecipePage.jsx # Add new recipe
β β βββ ViewAllRecipesPage.jsx # User's private recipes
β β βββ RecipesPage.jsx # Public recipes gallery
β β βββ RecipeDetailPage.jsx # Individual recipe view
β β βββ MealPlanPage.jsx # Meal planning
β βββ utils/
β β βββ useCloudinaryUpload.js # Cloudinary upload hook
β βββ App.jsx # Main app component
β βββ main.jsx # App entry point
βββ public/ # Static assets
βββ package.json # Dependencies and scripts
βββ vite.config.js # Vite configuration
- Frontend: React 18, Vite
- Styling: Tailwind CSS
- State Management: Redux Toolkit
- Authentication: Firebase Auth
- Database: Firestore
- Image Storage: Cloudinary
- Routing: React Router DOM
- Icons: React Icons
- Secure user registration and login
- Profile photo upload with Cloudinary
- Persistent authentication state
- Protected routes for authenticated users
- Add Recipes: Upload images, add ingredients, and write step-by-step instructions
- Private Recipes: View only your own recipes in the private section
- Public Recipes: Browse and discover recipes from all users
- Recipe Details: Complete recipe view with all information
- Create meal plans for specific dates
- Select from your saved recipes
- View upcoming meal plans on dashboard
- Persistent meal plan data
- Welcome message with user's name
- Recipe count statistics
- Meal plan overview
- Quick navigation to key features
The application uses a consistent orange theme throughout:
- Primary Color: Orange (
text-orange-600,bg-orange-600) - Secondary Elements: Rounded buttons and cards
- Dark/Light Mode: Toggle between themes
- Responsive Design: Mobile-first approach
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
-
Build the application
npm run build
-
Deploy to your preferred platform
- Vercel, Netlify, Firebase Hosting, etc.
-
Configure environment variables on your hosting platform
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
If you encounter any issues or have questions:
- Check the Firebase console for any configuration issues
- Verify your environment variables are correctly set
- Ensure all dependencies are installed
- Check the browser console for any errors
Built with β€οΈ using React, Firebase, and Tailwind CSS