A social platform for sharing and discovering cooking recipes, designed for home cooks, food bloggers, and culinary students.
Core Problem: Difficulty finding reliable recipes and sharing cooking experiences
This app provides a comprehensive solution with:
- Recipe Discovery: Browse and search through community-shared recipes
- Social Features: Follow other cooks and share your own creations
- Practical Tools: Shopping lists, meal planning, and recipe organization
- Quality Control: Rating and review system for recipe reliability
- Create & Share: Upload recipes with photos, ingredients, and step-by-step instructions
- Rich Metadata: Cuisine type, dietary info, difficulty level, prep/cook times
- Visual Design: Instagram-like interface with beautiful food photography (emojis)
- Rating System: 5-star ratings and reviews from the community
- Smart Search: Find recipes by title, description, or tags
- Advanced Filters: Filter by cuisine, diet, difficulty, cooking time, and ratings
- Recipe Feed: Discover new recipes from followed users and popular content
- Save Collections: Bookmark favorite recipes for easy access
- User Profiles: Personal profiles with follower/following system
- Recipe Collections: Organize saved recipes in personal collections
- Community Interaction: Like, comment, and share recipes with others
- Shopping Lists: Auto-generate shopping lists from saved recipes
- Smart Categorization: Ingredients grouped by category (Produce, Dairy, etc.)
- Meal Planning: Weekly meal planner with drag-and-drop functionality
- Recipe Scaling: Adjust serving sizes with automatic ingredient scaling
- Node.js 18+ installed
- npm or yarn package manager
-
Clone the repository
git clone <repository-url> cd recipe_sharing_app
-
Install dependencies
npm install # or yarn install -
Start development server
npm run dev # or yarn dev -
Open your browser
Navigate to http://localhost:3000
The app will start immediately with sample recipes and a default user profile!
- Explore Recipes: Browse the main feed to discover recipes
- Search & Filter: Use the search bar and filters to find specific recipes
- View Details: Click "View Recipe" to see ingredients and instructions
- Rate Recipes: Give 1-5 star ratings to help other users
- Click "Create" in the navigation
- Fill Recipe Details: Add title, description, and select an emoji icon
- Add Ingredients: List all ingredients with amounts and units
- Write Instructions: Step-by-step cooking directions
- Set Metadata: Choose cuisine type, diet info, and difficulty
- Publish: Share your recipe with the community
- Click "Profile" to view your personal page
- Edit Profile: Update your name, bio, and avatar
- View Stats: See your recipes, followers, and saved items
- Recipe History: Browse all your published recipes
-
Shopping Lists:
- Go to "Shopping" tab
- Add ingredients from saved recipes
- Check off items as you shop
- Items are categorized automatically
-
Meal Planning:
- Visit "Planner" tab
- Navigate between weeks
- Add saved recipes to meal slots
- Generate shopping lists from meal plans
- Next.js 14+: Modern React framework with App Router
- React 18+: Component-based UI with hooks and functional components
- TypeScript: Type-safe development with strong typing
- Tailwind CSS: Utility-first CSS framework for responsive design
- Local Storage: Client-side data persistence for offline functionality
- React State: Component state management with useState and useEffect
- Type Safety: Comprehensive TypeScript interfaces and types
RecipeCard: Interactive recipe display with ratings and detailsRecipeForm: Comprehensive recipe creation interfaceUserProfile: User management and profile editingShoppingList: Smart shopping list with categorizationMealPlanner: Weekly meal planning calendar
- Responsive Design: Works perfectly on mobile, tablet, and desktop
- Intuitive Navigation: Clear tab-based navigation system
- Visual Feedback: Smooth animations and hover effects
- Food Photography: Emoji-based food icons for visual appeal
- Screen Reader Friendly: Semantic HTML and ARIA labels
- Keyboard Navigation: Full keyboard accessibility
- Color Contrast: High contrast ratios for readability
- Mobile First: Touch-friendly interface design
The app uses browser localStorage for data persistence:
- Recipes: All recipe data and metadata
- User Profile: Personal information and preferences
- Saved Recipes: Bookmarked recipe collections
- Shopping Lists: Shopping list items and completion status
- Meal Plans: Weekly meal planning data
npm run dev: Start development servernpm run build: Build for productionnpm run start: Start production servernpm run lint: Run ESLint
src/
βββ app/ # Next.js App Router
β βββ layout.tsx # Root layout component
β βββ page.tsx # Main application page
β βββ globals.css # Global styles with Tailwind
βββ components/ # React components
β βββ RecipeCard.tsx # Recipe display component
β βββ RecipeForm.tsx # Recipe creation form
β βββ UserProfile.tsx # User profile management
β βββ ShoppingList.tsx # Shopping list functionality
β βββ MealPlanner.tsx # Meal planning calendar
β βββ SearchFilters.tsx # Recipe filtering component
βββ lib/ # Utility functions
βββ types.ts # TypeScript type definitions
βββ storage.ts # Local storage utilities
The app is optimized for Vercel deployment:
- Automatic Deployment: Connect your GitHub repository to Vercel
- Build Configuration: Uses the included
vercel.jsonconfiguration - Environment: No environment variables required
- Performance: Optimized for fast loading and responsiveness
npm run build
npm run startThis is a demonstration project showcasing modern web development practices:
- Clean, readable React/TypeScript code
- Modern Next.js patterns with App Router
- Responsive design with Tailwind CSS
- Local-first data approach
- User-centered design principles
MIT License - Feel free to use this project as a learning resource or starting point for your own recipe sharing application.
Built with β€οΈ for food lovers everywhere! π΄
Start your culinary journey by running the app locally and exploring the sample recipes, then create your own food masterpieces to share with the community!