Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
192 changes: 110 additions & 82 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,133 +1,161 @@
# 🍳 MoodChef
<div align="center">

### *The Emotional Intelligence of Home Cooking*
# 🍳 MoodChef

**MoodChef** is a robust, full-stack recipe discovery platform that prioritizes a **UX-first methodology**. Unlike traditional recipe databases, MoodChef maps culinary choices to emotional states, providing a seamless bridge between a user's mood and their meal.
### *Where Your Mood Meets Your Meal*

---
A full-stack, mood-driven recipe discovery platform that maps emotional states to culinary choices — helping you find the perfect meal for how you feel right now.

<br/>

### 💎 Core Architecture & UX
![React](https://img.shields.io/badge/React_19-20232A?style=for-the-badge&logo=react&logoColor=61DAFB)
![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white)
![Node.js](https://img.shields.io/badge/Node.js-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge&logo=postgresql&logoColor=white)
![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)

* **Mood-Based Taxonomy:** A custom discovery engine leveraging emotional tags (*Cozy, Fresh, Energetic*) to filter culinary content.
* **Design-First Implementation:** Built with **Framer Motion** for high-fidelity micro-interactions and a responsive UI optimized for the kitchen environment.
* **End-to-End Type Safety:** Utilizing a **Shared Schema** approach via **Zod**, ensuring strict data validation from the PostgreSQL layer to the React frontend.
* **Interactive Workflow:** A specialized "Cooking Mode" UI designed to minimize cognitive load during step-by-step execution.
</div>

---

### 🛠️ Technical Specifications

| Layer | Stack | Purpose |
| --- | --- | --- |
| **Frontend** | **React, TypeScript, Tailwind** | Modern, declarative UI with utility-first styling. |
| **Backend** | **Node.js, Express.js** | Modular REST API with middleware-based authentication. |
| **Database** | **PostgreSQL + Drizzle ORM** | Type-safe SQL operations with automated migrations. |
| **Validation** | **Zod** | Shared runtime validation and static type inference. |
## 📖 About the Project

---
MoodChef bridges the gap between how you feel and what you eat. Instead of searching by ingredient or cuisine alone, the platform lets users discover meals through emotional context — whether they are craving something *cozy*, need an *energy boost*, or want something *fresh and light*.

### 📂 Repository Structure
Built on a modern full-stack architecture with end-to-end type safety, MoodChef prioritizes both developer experience and a seamless in-kitchen UI.

```text
├── client/ # Frontend: React components, hooks, and UI logic
├── server/ # Backend: Express API, Auth, and Database controllers
├── shared/ # Cross-stack: Shared Zod schemas and TypeScript types
└── migrations/ # Infrastructure: Drizzle-generated SQL migrations
---

```
## ✨ Features

| Feature | Description |
|---|---|
| **Mood-Based Discovery** | Filter recipes through emotional tags — *Cozy, Fresh, Comfort, Energized* |
| **Advanced Explorer** | Combine Cuisine (Italian, Asian, Indian), Dietary Type (Vegan, Keto, Paleo), and prep time filters |
| **Cooking Mode** | Distraction-free, step-by-step UI designed to minimize cognitive load in the kitchen |
| **Randomizer Engine** | Instant meal suggestion for indecisive users |
| **Secure Authentication** | Session management via Passport.js-based authentication hooks |

---

### 🚀 Deployment & Local Setup
## 🛠️ Tech Stack

1. **Initialize Environment:**
```bash
git clone <repository-url> && npm install
| Layer | Technology | Purpose |
|---|---|---|
| **Frontend** | React 19, TypeScript, Tailwind CSS | Responsive, declarative UI with utility-first styling |
| **Animations** | Framer Motion | High-fidelity micro-interactions and transitions |
| **Backend** | Node.js, Express.js | Modular REST API with middleware-based authentication |
| **Database** | PostgreSQL + Drizzle ORM | Type-safe SQL operations with automated migrations |
| **Validation** | Zod (Shared Schema) | Runtime validation and static type inference across the full stack |

---

## 📂 Project Structure

```
MoodChef/
├── client/ # Frontend — React components, hooks, and UI logic
│ └── src/
│ ├── components/ # Reusable Radix UI components
│ ├── hooks/ # Custom React hooks
│ └── pages/ # Route-level page components
├── server/ # Backend — Express API, auth, and database controllers
│ ├── routes/ # API route definitions
│ ├── controllers/ # Business logic handlers
│ └── seed/ # Recipe seeding scripts
├── shared/ # Cross-stack — Shared Zod schemas and TypeScript types
└── migrations/ # Infrastructure — Drizzle-generated SQL migration files
```

---

2. **Database Configuration:**
Ensure a PostgreSQL instance is running and provide the connection string in a `.env` file:
```env
DATABASE_URL=postgresql://user:pass@localhost:5432/moodchef
## 🚀 Getting Started

```
### Prerequisites

Ensure the following are installed on your system before proceeding:

3. **Schema Sync & Execution:**
```bash
npm run db:push && npm run dev
- **Node.js** — v20.0.0 or higher ([Download](https://nodejs.org/))
- **PostgreSQL** — A running local or hosted instance ([Download](https://www.postgresql.org/download/))
- **npm** — Included with Node.js

```
### Installation

**1. Clone the repository**

*The platform will serve at `http://localhost:5000`.*
```bash
git clone <repository-url>
cd MoodChef
```

---
**2. Install all dependencies**

### Developed by Nehal Mehta, Rushikesh Korde & Om Jumle
MoodChef is a sophisticated mood-based recipe discovery engine designed to bridge the gap between emotional cravings and culinary execution. By leveraging a modern tech stack, it provides users with a curated experience to find meals that match their current "vibe"—whether they are seeking comfort, energy, or a quick bite.
```bash
npm install
```

🚀 Technical Overview
The application is built using a robust full-stack architecture:
**3. Configure environment variables**

Frontend: A responsive, type-safe UI built with React 19 and TypeScript, styled using Tailwind CSS and enhanced with Framer Motion for fluid animations.
Create a `.env` file in the root directory and add your database connection string:

Backend: A high-performance Express.js server utilizing Drizzle ORM for seamless PostgreSQL interaction.
```env
DATABASE_URL=postgresql://user:password@localhost:5432/moodchef
```

Data Integrity: Strict schema validation powered by Zod, ensuring data consistency between the database and the client.
> **Note:** Replace `user`, `password`, and `moodchef` with your actual PostgreSQL credentials and database name.

✨ Key Features
Emotional Filtering: Discover recipes through mood-based tags such as Cozy, Comfort, Fresh, and Energized.
**4. Synchronize the database schema**

Advanced Explorer: Filter dishes by Cuisine (Italian, Asian, Indian, etc.), Dietary Type (Vegan, Keto, Paleo), and preparation time.
```bash
npm run db:push
```

Interactive Cooking Mode: A dedicated view for step-by-step instructions and ingredient management.
**5. Start the development server**

Randomizer Engine: An integrated feature to suggest dishes for indecisive users.
```bash
npm run dev
```

Secure Infrastructure: Implementation of session management and passport-based authentication hooks.
The application (client + API) will be served concurrently at:

🛠️ Installation & Setup
Prerequisites
Node.js: v20 or higher
```
http://localhost:5000
```

PostgreSQL: Local or hosted instance
---

Step-by-Step Guide
Clone and Navigate:
## 💡 Usage

Bash
git clone <repository-url>
cd MoodChef
Install Dependencies:
Once running, navigate to `http://localhost:5000` in your browser.

Bash
npm install
Environment Configuration:
Create a .env file in the root directory:
1. **Select your mood** from the home screen (e.g., *Cozy, Energized, Fresh*)
2. **Browse filtered recipes** that match your emotional state
3. **Refine results** using the Advanced Explorer (cuisine, diet, prep time)
4. **Open Cooking Mode** on any recipe for a step-by-step guided experience
5. **Not sure what you want?** Hit the **Randomizer** for an instant suggestion

Code snippet
DATABASE_URL=postgresql://user:password@localhost:5432/moodchef
Synchronize Database Schema:
---

Bash
npm run db:push
Launch Development Environment:
## 🤝 Contributing

Bash
npm run dev
The application will serve the client and API concurrently at http://localhost:5000.
Contributions are welcome! To get started:

📂 Architecture
/client: Contains the React frontend, featuring modular Radix UI components and custom hooks.
1. Fork the repository
2. Create a new branch: `git checkout -b feature/your-feature-name`
3. Make your changes and commit: `git commit -m 'feat: add your feature'`
4. Push to your branch: `git push origin feature/your-feature-name`
5. Open a Pull Request

/server: Houses the Express API, storage logic, and recipe seeding scripts.
Please ensure your code follows the existing TypeScript conventions and passes any relevant validation before submitting.

/shared: Centralized Zod schemas and TypeScript definitions used by both frontend and backend.
---
*Developed by **Nehal Mehta**, **Rushikesh Korde**, and **Om Jumle***.

📝 License
This project is licensed under the MIT License.
<div align="center">

Developed by Nehal Mehta and Rushikesh Korde.
</div>