From 8545112d561de286c24ebba0372161b338b518de Mon Sep 17 00:00:00 2001 From: Jake Runyan Date: Sun, 8 Feb 2026 23:12:47 -0800 Subject: [PATCH] Initial commit --- .claude/settings.local.json | 12 + .eslintrc.json | 3 + .gitignore | 41 + app/about/page.tsx | 58 + app/globals.css | 27 + app/layout.tsx | 37 + app/page.tsx | 54 + app/recipes/[category]/[slug]/page.tsx | 132 + app/recipes/page.tsx | 29 + components/Footer.tsx | 26 + components/Header.tsx | 39 + components/RecipeCard.tsx | 59 + components/RecipesClient.tsx | 85 + components/RecipesSidebar.tsx | 138 + data/README.md | 140 + data/authors.json | 19 + data/recipes/README.md | 206 + .../1970.01.01-example-recipe-2.mdx | 114 + .../assets/.gitkeep | 6 + .../1970.01.01-example-recipe-1.mdx | 99 + .../assets/.gitkeep | 5 + data/taxonomy.json | 187 + lib/recipes.ts | 164 + next.config.ts | 17 + package-lock.json | 8025 +++++++++++++++++ package.json | 32 + postcss.config.mjs | 9 + tailwind.config.ts | 18 + tsconfig.json | 27 + 29 files changed, 9808 insertions(+) create mode 100644 .claude/settings.local.json create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 app/about/page.tsx create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/page.tsx create mode 100644 app/recipes/[category]/[slug]/page.tsx create mode 100644 app/recipes/page.tsx create mode 100644 components/Footer.tsx create mode 100644 components/Header.tsx create mode 100644 components/RecipeCard.tsx create mode 100644 components/RecipesClient.tsx create mode 100644 components/RecipesSidebar.tsx create mode 100644 data/README.md create mode 100644 data/authors.json create mode 100644 data/recipes/README.md create mode 100644 data/recipes/desserts/1970.01.01-example-recipe-2/1970.01.01-example-recipe-2.mdx create mode 100644 data/recipes/desserts/1970.01.01-example-recipe-2/assets/.gitkeep create mode 100644 data/recipes/mains/1970.01.01-example-recipe-1/1970.01.01-example-recipe-1.mdx create mode 100644 data/recipes/mains/1970.01.01-example-recipe-1/assets/.gitkeep create mode 100644 data/taxonomy.json create mode 100644 lib/recipes.ts create mode 100644 next.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..14e270f --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,12 @@ +{ + "permissions": { + "allow": [ + "Bash(npx create-next-app@latest:*)", + "Bash(node --version:*)", + "Bash(npm --version:*)", + "Bash(where:*)", + "Bash(npm install:*)", + "Bash(npm run build:*)" + ] + } +} diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dfc192f --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# env files +.env*.local +.env + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/app/about/page.tsx b/app/about/page.tsx new file mode 100644 index 0000000..f8c834f --- /dev/null +++ b/app/about/page.tsx @@ -0,0 +1,58 @@ +import type { Metadata } from 'next'; + +export const metadata: Metadata = { + title: 'About - Cooking', + description: 'Learn more about our recipe collection', +}; + +export default function AboutPage() { + return ( +
+
+

+ About +

+

+ Welcome to our content-first recipe site +

+
+ +
+
+

+ Our Mission +

+

+ We believe cooking should be accessible, enjoyable, and creative. Our goal is to provide + high-quality recipes with clear instructions and beautiful photography to inspire home cooks + everywhere. +

+
+ +
+

+ Content Structure +

+

+ Each recipe is organized in its own folder with: +

+
    +
  • MDX file with recipe content and instructions
  • +
  • metadata.json for tags and organization
  • +
  • Assets folder for images and other media
  • +
+
+ +
+

+ Technology +

+

+ Built with modern web technologies including Next.js, React, TypeScript, and Tailwind CSS + to ensure fast performance and excellent SEO. +

+
+
+
+ ); +} diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..13d40b8 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,27 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..f459188 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,37 @@ +import type { Metadata } from "next"; +import "./globals.css"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; + +export const metadata: Metadata = { + title: "Cooking - Recipe Collection", + description: "A content-first recipe site with delicious recipes and cooking tips", + keywords: ["recipes", "cooking", "food", "kitchen"], + authors: [{ name: "Cooking" }], + openGraph: { + type: "website", + locale: "en_US", + url: "https://cooking.example.com", + siteName: "Cooking", + title: "Cooking - Recipe Collection", + description: "A content-first recipe site with delicious recipes and cooking tips", + }, +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + +
+
+ {children} +
+