A modern, feature-rich recipe platform built with Nuxt 3, Vue 3, and TailwindCSS. Perfect for culinary enthusiasts, food bloggers, and recipe creators.
Demo Β· Report Bug Β· Request Feature
This template and many others are available at NuxtMint.com
Join our friendly Discord community to get help, share your ideas, and connect with other developers!
- π Rich Recipe Management
- Step-by-step instructions
- Interactive timers with notifications
- Dynamic serving size calculator
- Ingredient management
- π¨ Modern UI/UX
- Clean, minimalist design
- Smooth animations and transitions
- Responsive layout for all devices
- Dark mode support
- π Search & Discovery
- Full-text search
- Category and tag filtering
- Recipe recommendations
TastyTales uses several Nuxt modules to enhance functionality:
- @nuxt/content v3 - File-based CMS
- @pinia/nuxt - State Management
- @nuxtjs/tailwindcss - CSS Framework
- @nuxtjs/google-fonts - Web Fonts
- nuxt-icon - Icon System
- Create a new JSON file in
content/recipes/
with the following structure:
{
"title": "Classic Margherita Pizza",
"description": "Traditional Neapolitan pizza with fresh ingredients",
"image": "/images/recipes/margherita-pizza.jpg",
"prepTime": "15 minutes",
"cookTime": "12 minutes",
"servings": 4,
"difficulty": "medium",
"tags": ["italian", "pizza", "vegetarian"],
"ingredients": [
"Pizza dough",
"San Marzano tomatoes",
"Fresh mozzarella",
"Fresh basil",
"Olive oil",
"Salt"
],
"instructions": [
{ "instruction": "Preheat oven to 500Β°F (260Β°C)", "timer": 1 },
{ "instruction": "Roll out the pizza dough", "timer": 5 },
"Spread tomato sauce",
"Add fresh mozzarella",
"Bake for 12-15 minutes",
"Garnish with fresh basil"
]
}
- Create a new Markdown file in
content/blog/
with the following frontmatter:
---
title: 'The Art of Pizza Making'
description: 'Learn the secrets of making authentic Neapolitan pizza at home'
date: '2025-02-03'
image: '/images/blog/pizza-making.jpg'
author:
name: 'John Doe'
avatar: '/images/authors/john.jpg'
tags: ['tips', 'techniques', 'italian']
---
# The Art of Pizza Making
Your blog content goes here in Markdown format...
## Tips for Perfect Pizza
1. Use high-quality ingredients
2. Let the dough rest properly
3. Preheat your oven thoroughly
## Common Mistakes to Avoid
- Don't overload toppings
- Avoid using cold ingredients
- Don't skip the resting time
Query your content in components/pages:
<script setup>
// Fetch all recipes
const { data: recipes } = await useAsyncData('recipes', () =>
queryCollection('recipes').all()
);
// Fetch a single recipe
const { data: recipe } = await useAsyncData('pizza', () =>
queryCollection('recipes')
.where('title', '=', 'Classic Margherita Pizza')
.first()
);
// Search recipes by tag
const { data: italianRecipes } = await useAsyncData('italian', () =>
queryContent('recipes').where('tags', 'LIKE', 'italian').all()
);
</script>
- Node.js 16.x or later
- pnpm 7.x or later
- Clone the repository
git clone https://github.com/florianjs/tasty-tales.git
cd tastytales
- Install dependencies
pnpm install
- Start development server
pnpm dev
- Build for production
pnpm build
tastytales/
βββ components/ # Reusable Vue components
β βββ recipe/ # Recipe-specific components
β βββ ui/ # UI components
βββ composables/ # Composable functions
βββ content/ # Recipe content (JSON/Markdown)
βββ layouts/ # Page layouts
βββ pages/ # Application routes
βββ public/ # Static assets
βββ stores/ # Pinia stores
βββ types/ # TypeScript types
βββ app.vue # Application entry
βββ nuxt.config.ts # Nuxt configuration
βββ tailwind.config.ts # TailwindCSS configuration
The default theme uses a warm, inviting color scheme:
colors: {
primary: colors.orange,
accent: colors.amber,
// Customize in tailwind.config.ts
}
- Headings: Playfair Display (elegant serif)
- Body: Inter (modern sans-serif)
Customize fonts in nuxt.config.ts
:
googleFonts: {
families: {
'Playfair+Display': [500, 600, 700],
'Inter': [400, 500, 600]
}
}
This project is optimized for deployment on Cloudflare Pages, which provides:
- Global CDN distribution
- Automatic HTTPS
- Zero cold starts
- Easy deployment process
Basic deployment steps:
- Connect your repository to Cloudflare Pages
- Set build command:
pnpm run build
- Set build output directory:
.output/public
- Add a D1 SQL Database from Cloudflare
- Bind your database to your Cloudflare Page
For detailed deployment instructions, follow the Nuxt Content deployment guide for Cloudflare.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Nuxt.js - The Intuitive Vue Framework
- TailwindCSS - A utility-first CSS framework
- Pinia - The Vue Store that you will enjoy using
Made with β€οΈ by 0xExile