An open API service indexing awesome lists of open source software.

https://github.com/omarj9/recipo

A Recipe Finder Web App with admin dashboard, built using Nextjs 15 and Postgresql database
https://github.com/omarj9/recipo

better-auth drizzle-kit drizzle-orm google-auth nextjs otpauth zod

Last synced: about 2 months ago
JSON representation

A Recipe Finder Web App with admin dashboard, built using Nextjs 15 and Postgresql database

Awesome Lists containing this project

README

        

# ๐Ÿ”ฅ Recipo - Find Your Perfect Recipe

Recipo is your ultimate recipe finder web app that helps you discover delicious dishes from around the world! Browse recipes by country, save your favorites, and create your own culinary journey.

## Star โญ the repo if you like what you see ๐Ÿ˜‰.

## ๐Ÿš€ Features

- ๐ŸŒ **Country-based Recipe Search** - Find recipes specific to different countries and cultures
- ๐Ÿ” **Advanced Filtering** - Filter recipes by country or difficulty
- ๐Ÿ‘ค **User Accounts** - Login with email OTP or Google Auth
- โค๏ธ **Favorite Recipes** - Add the recipes you like to your favorites
- ๐ŸŒŸ **Rate or Comment** - Add a rating and comments to recipes
- ๐Ÿ”Ž **SEO Optimization** - Optimize SEO for better search engine indexing
- ๐Ÿ‘‘ **Admin Dashboard** - Manage recipes, countries, and users (admin access only)

## ๐Ÿ› ๏ธ Tech Stack

- โš›๏ธ **Frontend**: Next.js 15, React 19, Tailwind CSS, Shadcn UI
- ๐Ÿ” **Authentication**: Better-Auth
- ๐Ÿ’พ **Database**: PostgreSQL, Drizzle ORM
- ๐Ÿงช **Form Validation**: React Hook Form, Zod

## ๐Ÿ”ง Getting Started

### Prerequisites

- Node.js 18+
- npm or yarn
- PostgreSQL database (supabase, neon...)

### Installation

1. Clone the repository:

```bash
git clone https://github.com/OmarJ9/recipo.git
cd recipo
```

2. Install dependencies:

```bash
npm install
# or
yarn install
```

3. Set up environment variables:
Create a `.env` file in the root directory with:

```
DATABASE_URL=your_postgresql_database_url
BETTER_AUTH_SECRET=your_better-auth_secret
BETTER_AUTH_URL=http://localhost:3000
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
```

4. Migrate the database:

```bash
npx drizzle-kit migrate
# or
yarn drizzle-kit migrate
```

5. Start the development server:

```bash
npm run dev
# or
yarn dev
```

6. Open [http://localhost:3000](http://localhost:3000) in your browser.

## ๐Ÿ–ฅ๏ธ Showcase

Here are some screenshots showcasing the web application:









## ๐Ÿ“š Project Structure

```
recipo/
โ”œโ”€โ”€ src/ # Source files
โ”‚ โ”œโ”€โ”€ actions/ # Server actions
โ”‚ โ”œโ”€โ”€ app/ # App router components
โ”‚ โ”‚ โ”œโ”€โ”€ (auth)/ # Authentication routes
โ”‚ โ”‚ โ”œโ”€โ”€ admin/ # Admin dashboard
โ”‚ โ”‚ โ”œโ”€โ”€ recipes/ # Recipe-related pages
โ”‚ โ”‚ โ””โ”€โ”€ api/ # API routes
โ”‚ โ”œโ”€โ”€ components/ # UI components
โ”‚ โ”œโ”€โ”€ database/ # Database configurations
โ”‚ โ”œโ”€โ”€ hooks/ # Custom React hooks
โ”‚ โ”œโ”€โ”€ lib/ # Utility functions
โ”‚ โ””โ”€โ”€ types/ # TypeScript type definitions
โ””โ”€โ”€ public/ # Static files
```