Commit graph

45 commits

Author SHA1 Message Date
isUnknown
4b7062e0bd Fix thanks and error page routing for both languages
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
- Add dedicated routes for /thanks, /error, /en/thanks, and /en/error
- Create missing error.en.txt content file
- Add title to error.fr.txt

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-21 11:19:48 +01:00
isUnknown
7575e5adbc Fix English homepage routing
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
Add dedicated route for /en to display home page in English using Kirby's multilingual system.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-21 11:17:25 +01:00
isUnknown
9b4bd4b731 product > english > description : nl2br
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
2026-01-21 11:11:18 +01:00
isUnknown
aa873e117f Fix cart initialization and ShopifyCart loading
- Wait for ShopifyCart to be available before initializing structured data
- Add getCart() method to retrieve existing cart from Shopify API
- Load cart state on page load to display correct initial cart contents

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-21 11:06:28 +01:00
9396ae4e02 Fix Shopify API connection on local Windows dev server
Add SSL_VERIFYPEER option to cURL to fix HTTP 0 errors when running
with PHP built-in server on Windows.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 12:03:06 +01:00
isUnknown
f3f302513e Improve Open Graph meta tags with default description
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
Add default descriptions for social sharing cards:
- FR: "Boutique de Index, ONG d'investigation indépendante"
- EN: "Index shop, independent investigative NGO"

Changes:
- Add language-specific default descriptions
- Fix description excerpt handling
- Add OG image generation helper (create-og-image.html)
- Use favicon as temporary OG image (TODO: create proper 1200x630 image)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 17:08:24 +01:00
isUnknown
9eb8d08bcc Add comprehensive SEO optimization
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
Implement complete SEO setup for virtual product pages with:
- Meta tags (title, description, canonical, hreflang)
- Open Graph protocol for social sharing
- Twitter Card tags
- Schema.org structured data (JSON-LD) for products
- XML sitemap including virtual pages
- Dynamic meta tag updates via JavaScript

Changes:
- Create SEO snippet with all meta tags
- Add structured data snippet for products
- Generate sitemap.xml with products and hreflang
- Update meta tags dynamically when Shopify data loads
- Remove noindex/nofollow (was blocking all indexing)
- Add product-specific OG tags (price, availability)

All pages now properly indexed with correct multilingual setup.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 17:02:27 +01:00
isUnknown
f69d990349 cart drawer : close button strokes to black
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
2026-01-16 16:41:46 +01:00
isUnknown
f4ecdcf947 Fix multilingual routing for virtual product pages
Use site()->visit() to properly set language context for virtual pages.
This ensures UI translations and language-specific content work correctly
on both /slug (French) and /en/slug (English) routes.

Changes:
- Add site()->visit($page, $lang) in routes to set page language
- Create product controller for language detection
- Fix add-to-cart button to update text in .txt div instead of button
- Remove broken hooks approach

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 16:40:10 +01:00
isUnknown
4489e705b8 Fix virtual pages with routes using Page::factory()
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
Replace page.children:after hook with proper routes implementation.
Product pages are now created dynamically via routes that match
Shopify handles for both French and English versions.

Changes:
- Add routes with Page::factory() for virtual product pages
- Remove hooks approach (not working)
- Clean up old Snipcart webhook routes
- Support FR and EN product URLs

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 12:53:19 +01:00
isUnknown
ade0ed1a67 Add virtual pages from Shopify and panel refresh button
This simplifies product management by eliminating manual Kirby page creation. Products are now automatically loaded as virtual pages from the Shopify API.

Changes:
- Add virtual pages via page.children:after hook
- Create shopify.php helper with caching (60min TTL)
- Add shopify-refresh panel plugin for cache management
- Remove manual product content files (now virtual)
- Update site.yml blueprint to show refresh button
- Fix cache implementation to use get/set pattern

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 12:44:28 +01:00
isUnknown
4987c4830f Add Shopify variant options selector with circular radio buttons
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
- Implement dynamic option rendering from Shopify variant data
- Generate circular radio buttons for product variants (sizes, colors, etc.)
- Disable add-to-cart button until option is selected
- Display "Choisissez une option" text when option required
- Update button text and enable on option selection
- Add is-selected class to chosen option
- Handle disabled state for out-of-stock variants
- Restore btn__default button style with icon and text structure
- Add chooseOption translation key in FR/EN

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 12:15:28 +01:00
isUnknown
0c8cc5000c improve styles and ignore claude settings
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
2026-01-16 12:04:15 +01:00
isUnknown
ad699f0365 Migrate product data from Kirby to Shopify Storefront API
- Add product loaders (product-loader.js, products-list-loader.js) to fetch data from Shopify
- Extend Shopify API client with getProductByHandle() and getAllProducts() methods
- Integrate Shopify metafields for multilingual support (custom.title_en, custom.description_en)
- Refactor product.php and home.php templates to load content dynamically
- Simplify product blueprint to minimal routing configuration
- Create generic buy-button.php snippet with variant selection
- Update footer.php with conditional script loading
- Refactor _section--product.scss for better Sass structure
- Add translations for loading states and product errors
- Clean up old Kirby product content files

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-16 12:03:20 +01:00
isUnknown
957cf79e45 Add cart button to header with item count
Add a cart button in the header (right of language switcher) that displays the number of items in parentheses when cart is not empty. Button opens the cart drawer on click and count updates dynamically when items are added/removed.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 12:06:26 +01:00
isUnknown
b3940bba08 Add i18n support and cart total to Shopify integration
Implement multilingual support for shop interface and add total calculation to cart drawer:
- Add FR/EN translations for all shop-related texts (cart, checkout, stock status)
- Update templates and JavaScript to use translation system
- Add cart total calculation with formatted currency display
- Refactor cart drawer styles to SASS with improved button styling (black borders on +/-)
- Fix English product content (replace JSON with proper HTML)
- Extract cart drawer to separate snippet for better organization

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 12:02:55 +01:00
isUnknown
28501fec7c Implement custom Shopify cart with drawer UI
Replace Shopify Buy Button iframe with custom implementation using Storefront API 2026-01. Create interactive cart drawer with full product management capabilities (add, remove, update quantities) and seamless checkout flow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 11:26:14 +01:00
isUnknown
c08662caf8 Archive and disable Snipcart integration for Shopify migration
Disable Snipcart e-commerce integration to prepare for Shopify Buy Button. All Snipcart code is preserved in assets/snipcart-archive/ with complete restoration instructions.

Changes:
- Comment out Snipcart SCSS import
- Disable Snipcart routes (validate.json, webhook)
- Comment Snipcart attributes in product template
- Remove Snipcart scripts from footer
- Create archive with snipcart.js, product-size.js, _snipcart.scss
- Add comprehensive README.md with restoration guide

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-13 17:17:40 +01:00
isUnknown
84aa4cac17 fix cover image
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
2026-01-08 15:25:55 +01:00
isUnknown
6c8cdf21d2 fix home layout
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
2025-12-22 14:03:56 +01:00
isUnknown
b59d841d39 merge sliders
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
2025-12-22 10:22:36 +01:00
isUnknown
3ba37020ff Fix Snipcart v3 API compatibility for order completion redirect
Update event listener from deprecated v2 Snipcart.execute to v3 Snipcart.events.on API. Change event from 'order.completed' (webhook-only) to 'cart.confirmed' (client-side) and update parameter from order to cartState to match v3 structure.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 10:21:28 +01:00
isUnknown
010c4f6c20 thanks : style
All checks were successful
Deploy / Deploy to Production (push) Successful in 10s
2025-12-22 10:07:03 +01:00
Julie Blanc
48b744e8f1 delete temp img 2025-12-19 19:36:44 +01:00
Julie Blanc
14438b642b style gallery 2025-12-19 19:35:22 +01:00
isUnknown
57037fc435 Fix multilingual support for product data and thank you redirect
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
- Add translate: false to price, hasOptions, and optionValues fields
- Make thank you page redirect language-aware (detects /fr/ prefix)
- Ensure stock, weight, dimensions, and options are shared between languages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 18:05:37 +01:00
isUnknown
7359d43125 Fix button text update when selecting product option
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
- Update button text from "Choisissez une option" to "Ajouter au panier" when option is selected
- Add data-default-text attribute to preserve translated text
- Improve UX by providing clear feedback when option is selected

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 17:45:15 +01:00
isUnknown
1aa64a7396 Add thank you page and fix webhook stock update
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
- Create thank you page template with bilingual content (FR/EN)
- Add automatic redirect to /thanks after successful payment
- Fix webhook: move kirby()->impersonate() before product update
- Add error handling in webhook with try-catch
- Pass order token to thank you page for future enhancements
- Update thank you page styling for better UX

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 17:37:34 +01:00
isUnknown
f7a69482fc Add package dimensions for shipping calculation
- Add length, width, and height fields to product blueprint (in centimeters)
- Add corresponding data-item attributes for Snipcart shipping calculation
- Enable volume-based shipping cost calculation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 17:29:43 +01:00
isUnknown
2d66529c9a Add shipping weight support for Snipcart delivery calculation
All checks were successful
Deploy / Deploy to Production (push) Successful in 16s
- Add weight field to product blueprint (in grams)
- Add data-item-shippable and data-item-weight attributes to product template
- Enable Snipcart to calculate shipping costs based on product weight

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 17:12:51 +01:00
isUnknown
ee5eed49e6 Improve disabled button UX with custom message and no hover effect
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
- Disable hover animation on disabled add-to-cart button
- Display "Choisissez une option" message when button is disabled
- Add cursor: not-allowed and opacity styling for disabled state
- Format SCSS for better code consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 17:05:00 +01:00
isUnknown
a961ade257 Remove Snipcart product validation URL to simplify configuration
All checks were successful
Deploy / Deploy to Production (push) Successful in 13s
- Remove data-item-url attribute from product add-to-cart button
- Use direct HTML attributes for Snipcart instead of server-side validation
- Aligns with lapasseggiata project configuration that works without validation endpoint

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 16:50:45 +01:00
isUnknown
22afa818f1 Add Snipcart product validation endpoint and improve product gallery
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
- Add route handler for /validate.json to enable Snipcart product validation
- Update product gallery to display all product images instead of just the first one
- Fix CSS styling for product gallery list items
- Update home page to use first sorted image as product cover

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 16:39:16 +01:00
isUnknown
44ed53aae0 prevent css cache
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
2025-12-12 11:08:09 +01:00
isUnknown
1ca2fcfeee product > details : preserve line jump
All checks were successful
Deploy / Deploy to Production (push) Successful in 9s
2025-12-12 10:59:53 +01:00
isUnknown
30d09d6104 Add responsive image optimization with WebP support
- Configure thumbs presets in config.php (quality 85%, WebP format)
- Create picture snippet with srcset and WebP support
- Add product-card and product-detail presets
- Update templates to use optimized images
- Implement native lazy loading for product cards
- Add aspect-ratio CSS for layout stability

Improvements over reference project:
- Complete PHPDoc documentation
- Native CSS aspect-ratio support
- Optimized lazy loading strategy
- Product-specific image presets

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-10 16:00:58 +01:00
isUnknown
9c91a87720 Refactor: Extract header and footer into reusable snippets
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
- Created site/snippets/header.php with parameterized title and template
- Created site/snippets/footer.php with optional additional scripts
- Updated home.php and product.php to use the new snippets
- Reduces code duplication and improves maintainability

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-10 15:54:25 +01:00
isUnknown
24997f746d fix ci
All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
2025-12-10 15:37:59 +01:00
isUnknown
e595a61a21 fix ci
Some checks failed
Deploy / Deploy to Production (push) Failing after 6s
2025-12-10 15:36:47 +01:00
isUnknown
9ba2faadde fix ci
Some checks failed
Deploy / Deploy to Production (push) Failing after 7s
2025-12-10 15:34:06 +01:00
isUnknown
010be5b893 fix CI
Some checks failed
Deploy / Deploy to Production (push) Failing after 6s
2025-12-10 15:33:05 +01:00
isUnknown
0f0cf82ca9 CI : Use simple git clone instead of checkout action
Some checks failed
Deploy / Deploy to Production (push) Failing after 9s
2025-12-10 15:30:50 +01:00
isUnknown
b0fbfaefcd CI : fix flow
Some checks failed
Deploy / Deploy to Production (push) Failing after 58s
2025-12-10 15:17:13 +01:00
isUnknown
87987665f3 CI : update runner
Some checks are pending
Deploy / Deploy to Production (push) Waiting to run
2025-12-10 15:14:50 +01:00
isUnknown
a3620a1f5f first commit
Some checks are pending
Deploy / Deploy to Production (push) Waiting to run
2025-12-10 15:12:06 +01:00