From 21b78f8d17f05f6fa5860166024621725eec7a92 Mon Sep 17 00:00:00 2001 From: Timo Knuth Date: Wed, 14 Jan 2026 17:47:58 +0100 Subject: [PATCH] Shop integration --- .gitignore | 15 + Pottery-website/App.tsx | 46 +- Pottery-website/components/BlogPostLayout.tsx | 112 ++ Pottery-website/components/Cart.tsx | 131 ++ Pottery-website/components/FAQ.tsx | 92 ++ Pottery-website/components/Footer.tsx | 5 +- Pottery-website/components/Header.tsx | 22 +- Pottery-website/components/Hero.tsx | 4 +- Pottery-website/components/JournalSection.tsx | 57 +- Pottery-website/constants.ts | 27 + Pottery-website/index.html | 2 +- Pottery-website/pages/Admin.tsx | 795 ++++++++++ Pottery-website/pages/ArticleDetail.tsx | 52 + Pottery-website/pages/Atelier.tsx | 10 +- Pottery-website/pages/Checkout.tsx | 150 ++ Pottery-website/pages/Collections.tsx | 101 +- Pottery-website/pages/Editorial.tsx | 178 ++- Pottery-website/pages/Home.tsx | 7 +- .../pages/Journal/MotivationInClay.tsx | 96 ++ .../pages/Journal/PackagingGuide.tsx | 90 ++ .../pages/Journal/ProductPhotography.tsx | 93 ++ Pottery-website/pages/MockPayment.tsx | 77 + Pottery-website/pages/ProductDetail.tsx | 116 ++ Pottery-website/pages/Success.tsx | 50 + .../public/assets/images/packaging_guide.png | Bin 0 -> 779296 bytes Pottery-website/server/db_setup.js | 138 ++ Pottery-website/server/index.js | 180 +++ Pottery-website/server/migrate.js | 41 + Pottery-website/server/package-lock.json | 1361 +++++++++++++++++ Pottery-website/server/package.json | 23 + Pottery-website/server/schema.sql | 40 + Pottery-website/server/setup_log.txt | Bin 0 -> 964 bytes Pottery-website/server/test_db.js | 23 + Pottery-website/src/context/StoreContext.tsx | 299 ++++ Pottery-website/types.ts | 24 +- parallax-demo/generate_embedded.py | 43 + parallax-demo/generate_vase_depth.py | 42 + parallax-demo/index.html | 303 ++++ parallax-demo/index_embedded.html | 291 ++++ parallax-demo/pottery-vase.png | Bin 0 -> 718111 bytes parallax-demo/pottery-vase_depth.png | Bin 0 -> 3266 bytes parallax-demo/workshop.jpg | Bin 0 -> 367853 bytes parallax-demo/workshop_depth.png | Bin 0 -> 501351 bytes product-scroll-poc/fragmentShader.glsl | 10 + product-scroll-poc/index.html | 13 + product-scroll-poc/pottery-vase.png | Bin 0 -> 718111 bytes product-scroll-poc/script.js | 150 +- product-scroll-poc/vertexShader.glsl | 20 + product-scroll-poc/video_remove_bg.py | 96 ++ product-scroll-poc/workshop.jpg | Bin 0 -> 367853 bytes product-scroll-poc/workshop_depth.png | Bin 0 -> 501351 bytes seo_rules.md | 61 + 52 files changed, 5288 insertions(+), 198 deletions(-) create mode 100644 Pottery-website/components/BlogPostLayout.tsx create mode 100644 Pottery-website/components/Cart.tsx create mode 100644 Pottery-website/components/FAQ.tsx create mode 100644 Pottery-website/pages/Admin.tsx create mode 100644 Pottery-website/pages/ArticleDetail.tsx create mode 100644 Pottery-website/pages/Checkout.tsx create mode 100644 Pottery-website/pages/Journal/MotivationInClay.tsx create mode 100644 Pottery-website/pages/Journal/PackagingGuide.tsx create mode 100644 Pottery-website/pages/Journal/ProductPhotography.tsx create mode 100644 Pottery-website/pages/MockPayment.tsx create mode 100644 Pottery-website/pages/ProductDetail.tsx create mode 100644 Pottery-website/pages/Success.tsx create mode 100644 Pottery-website/public/assets/images/packaging_guide.png create mode 100644 Pottery-website/server/db_setup.js create mode 100644 Pottery-website/server/index.js create mode 100644 Pottery-website/server/migrate.js create mode 100644 Pottery-website/server/package-lock.json create mode 100644 Pottery-website/server/package.json create mode 100644 Pottery-website/server/schema.sql create mode 100644 Pottery-website/server/setup_log.txt create mode 100644 Pottery-website/server/test_db.js create mode 100644 Pottery-website/src/context/StoreContext.tsx create mode 100644 parallax-demo/generate_embedded.py create mode 100644 parallax-demo/generate_vase_depth.py create mode 100644 parallax-demo/index.html create mode 100644 parallax-demo/index_embedded.html create mode 100644 parallax-demo/pottery-vase.png create mode 100644 parallax-demo/pottery-vase_depth.png create mode 100644 parallax-demo/workshop.jpg create mode 100644 parallax-demo/workshop_depth.png create mode 100644 product-scroll-poc/fragmentShader.glsl create mode 100644 product-scroll-poc/pottery-vase.png create mode 100644 product-scroll-poc/vertexShader.glsl create mode 100644 product-scroll-poc/video_remove_bg.py create mode 100644 product-scroll-poc/workshop.jpg create mode 100644 product-scroll-poc/workshop_depth.png create mode 100644 seo_rules.md diff --git a/.gitignore b/.gitignore index da1541f..72c8892 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,22 @@ build/ # Python venv/ +.venv/ +env/ __pycache__/ *.pyc +*.egg-info/ +.pytest_cache/ +.mypy_cache/ +input/ +output/ + +# Distribution / Packaging +build/ +dist/ +wheels/ +*.egg +.eggs/ # System .DS_Store @@ -15,3 +29,4 @@ Thumbs.db # IDE .vscode/ +.idea/ diff --git a/Pottery-website/App.tsx b/Pottery-website/App.tsx index a705808..b7e8941 100644 --- a/Pottery-website/App.tsx +++ b/Pottery-website/App.tsx @@ -2,31 +2,51 @@ import React, { Suspense, lazy } from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import Header from './components/Header'; import Footer from './components/Footer'; +import Cart from './components/Cart'; import ScrollToTop from './components/ScrollToTop'; import RouteTransition from './components/RouteTransition'; +import { StoreProvider } from './src/context/StoreContext'; // Lazy load pages for better performance const Home = lazy(() => import('./pages/Home')); const Collections = lazy(() => import('./pages/Collections')); const Atelier = lazy(() => import('./pages/Atelier')); const Editorial = lazy(() => import('./pages/Editorial')); +const ProductPhotography = lazy(() => import('./pages/Journal/ProductPhotography')); +const PackagingGuide = lazy(() => import('./pages/Journal/PackagingGuide')); +const MotivationInClay = lazy(() => import('./pages/Journal/MotivationInClay')); +const ProductDetail = lazy(() => import('./pages/ProductDetail')); +const ArticleDetail = lazy(() => import('./pages/ArticleDetail')); +const Checkout = lazy(() => import('./pages/Checkout')); +const MockPayment = lazy(() => import('./pages/MockPayment')); +const Success = lazy(() => import('./pages/Success')); +const Admin = lazy(() => import('./pages/Admin')); function App() { return ( - -
- - }> - - } /> - } /> - } /> - } /> - - - -