y# Dishcovery: AI-Powered Recipe Suggestion App 🍽️
Dishcovery is an innovative recipe suggestion platform where users can upload images of ingredients (fruits, vegetables, etc.) along with dietary preferences to generate personalized recipes. Powered by cutting-edge AI and robust backend systems, Dishcovery creates detailed recipes and saves them for users to browse, share, and enjoy.
- 📷 Ingredient Recognition: Upload photos of ingredients for analysis using AI vision models (Llama Vision from meta-llama/Llama-Vision-Free).
- 🧑🍳 Personalized Recipes: Generate recipes tailored to dietary preferences and restrictions.
- 📊 Detailed Recipe Information: Includes cooking steps, ingredients, calories, cooking time, servings, and dietary suitability.
- 🖼️ Dish Gallery: A global showcase of dishes generated by users, viewable in a card-based layout.
- 🛠️ Dynamic Dish View: Click on a dish card to see detailed information about that dish.
- 🔁 Caching with Redis: Optimized performance for dish gallery and recipe fetching.
- 🔒 User Authentication: Login functionality for users (future plans include a profile page to manage dishes).
- 🔗 Shareable Content: Dynamic thumbnails and metadata (planned).
- 🚀 Scalable Architecture: Optimized for high performance with caching and rate limiting.
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS and Shadcn Components
- Global State Management: Custom React hooks and Zustand
- Database: PostgreSQL with Drizzle ORM
- Caching: Redis via Upstash
- AI Vision Models: Llama Vision from meta-llama/Llama-Vision-Free (by Together.ai)
- Authentication: NextAuth.js
- Bun: For ultra-fast builds and dependency management (Why Bun?).
- Frontend & Server: Vercel
- Database: Cloud-hosted PostgreSQL
- Caching: Upstash Redis for serverless caching
- Upload: Users upload an image of ingredients and specify dietary preferences.
- AI Analysis: The image is analyzed by AI, and a recipe prompt is generated.
- Recipe Creation: AI returns a detailed recipe, which is saved to the PostgreSQL database.
- Gallery Display: Recipes are cached in Redis for efficient loading and displayed in a gallery.
- Interactive View: Click on any dish in the gallery to view its full details.
bun create itsOmSarraf/dishcovery-nextjs
cd dishcovery-nextjs
bun install
- Copy the
.env.example
bun dev
Visit http://localhost:3000
.
We welcome contributions to make Dishcovery even better! Here's how you can contribute:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add your message here"
- Push to the branch:
git push origin feature-name
- Open a Pull Request.
- 🚧 User Profile Pages: Allow users to view and manage their generated dishes.
- 📤 Social Sharing: Add dynamic thumbnails and metadata for sharing.
- 🕒 Rate Limiting: Implement per-user rate limiting for uploads.
- 🌐 Global Caching: Optimize gallery performance with Redis caching.
- 🔍 Search & Filter: Add functionality to search and filter dishes by cuisine, time, or dietary restrictions.
This project is open-source and available under the MIT License.