Commit Graph

233 Commits

Author SHA1 Message Date
Unchained
cfb98a457f fix(analytics): add replay.js rewrite for Rybbit session replay
Some checks failed
Build and Deploy / build (push) Has been cancelled
2026-03-31 05:30:55 +02:00
Unchained
97479d542b fix(analytics): add tracking-config rewrite for Rybbit
Some checks failed
Build and Deploy / build (push) Has been cancelled
2026-03-31 05:27:27 +02:00
Unchained
56c05cc8fc feat(analytics): add Rybbit proxy rewrites and env vars
Some checks failed
Build and Deploy / build (push) Has been cancelled
- Add Next.js rewrites to proxy /api/script.js and /api/track through self-hosted Rybbit
- This bypasses ad blockers that would block rybbit.nodecrew.me directly
- Add NEXT_PUBLIC_RYBBIT_HOST and NEXT_PUBLIC_RYBBIT_SITE_ID env vars to K8s deployment
2026-03-31 05:17:57 +02:00
Unchained
511c3078c5 fix: update all fallback URLs from dev.manoonoils.com to manoonoils.com
Some checks failed
Build and Deploy / build (push) Has been cancelled
2026-03-31 00:53:37 +02:00
Unchained
44091fc72a fix: inline Rybbit config to avoid client directive in server component
Some checks failed
Build and Deploy / build (push) Has been cancelled
2026-03-31 00:50:33 +02:00
Unchained
b3efebd3e4 feat: integrate Rybbit analytics alongside OpenPanel
Some checks failed
Build and Deploy / build (push) Has been cancelled
- Add RybbitService for tracking e-commerce events
- Update useAnalytics hook to track with both OpenPanel and Rybbit
- Add Rybbit script to layout for page view tracking
- Track all applicable store events: product views, cart, checkout, orders, search, etc.
2026-03-31 00:38:38 +02:00
Unchained
044aefae94 fix: remove dev.manoonoils.com from ingress and update OpenPanel API URL
Some checks failed
Build and Deploy / build (push) Has been cancelled
- Remove dev.manoonoils.com from storefront ingress to prevent cross-domain tracking issues
- Use environment variable for OpenPanel API URL in route handler
- Fixes session state conflicts from multiple domains
2026-03-30 20:40:17 +02:00
Unchained
36915a3f75 feat: add OAuth 2.0 support for GSC monitoring
Some checks failed
Build and Deploy / build (push) Has been cancelled
- Updated monitor.py to support both OAuth and Service Account
- Created setup-oauth-local.py for easy local authorization
- Created cronjob-oauth.yaml for OAuth-based deployment
- Updated README with both authentication options
- OAuth is now the recommended method (no key file needed)
2026-03-30 17:56:49 +02:00
Unchained
771e9dc20b docs: add GSC monitoring quickstart guide
Some checks failed
Build and Deploy / build (push) Has been cancelled
2026-03-30 17:18:51 +02:00
Unchained
df915ca128 feat: add Google Search Console automated monitoring
- Python monitoring script for daily GSC reports
- Kubernetes CronJob for automated execution
- Tracks search analytics, crawl errors, and sitemap status
- Includes full setup documentation
2026-03-30 17:17:42 +02:00
Unchained
83efc4f1e2 feat: migrate storefront to manoonoils.com domain
Some checks failed
Build and Deploy / build (push) Has been cancelled
- Update ingress to serve all domains (dev.manoonoils.com, manoonoils.com, www.manoonoils.com)
- Update NEXT_PUBLIC_SITE_URL to https://manoonoils.com in deployment env vars
- Prepare for 24h testing period before removing dev domain
2026-03-30 16:52:04 +02:00
Unchained
f1c30b7141 fix: replace {{productName}} template in product page keywords
Some checks failed
Build and Deploy / build (push) Has been cancelled
- Add template replacement logic for product keywords
- Replace {{productName}} with actual product.name
- Keywords now show correct product name instead of template variable
2026-03-30 13:07:40 +02:00
Unchained
d9473e3f9e fix: add missing SEO to About and Contact pages
- Add keywords, canonical, OpenGraph to About page
- Refactor Contact page to server component with generateMetadata
- Create ContactPageClient for form functionality
- All pages now have complete SEO coverage
2026-03-30 12:21:26 +02:00
Unchained
be4e47aeb8 docs: add SEO verification with real rendered output proof
- Document actual rendered HTML structure
- Show extracted JSON-LD schemas
- Include complete verification test results
- Prove all 7/7 SEO checks pass with real data
2026-03-30 11:59:18 +02:00
Unchained
ba4da3287d fix: JSON-LD schema rendering in SSR
- Remove next/script dependency causing SSR issues
- Use regular script tag for server-side rendering
- Add real SEO verification test that checks rendered output
- All 7/7 SEO checks now passing
2026-03-30 11:55:21 +02:00
Unchained
3accf4c244 docs: add SEO implementation documentation and tests
- Add comprehensive SEO implementation guide
- Add automated SEO testing script
- Document all schema types and integrations
- Include verification methods and expected impact
2026-03-30 11:44:50 +02:00
Unchained
fd0490c3e1 feat: integrate SEO system into pages
- Add OrganizationSchema to root layout
- Add ProductSchema with metadata to product pages
- Add enhanced metadata to homepage with keywords
- Add enhanced metadata to products listing page
- Add noindex to checkout page via layout
- Implement canonical URLs, OpenGraph, and Twitter cards
2026-03-30 11:42:58 +02:00
Unchained
234b1f1739 feat: comprehensive SEO system with keywords and schema markup
- Add 4-locale keyword configurations (SR, EN, DE, FR)
- Create schema generators (Product, Organization, Breadcrumb)
- Add React components for JSON-LD rendering
- Implement caching for keyword performance
- Abstract all SEO logic for maintainability
2026-03-30 11:22:44 +02:00
Unchained
767afac606 Merge branch 'dev'
Some checks failed
Build and Deploy / build (push) Has been cancelled
2026-03-30 06:35:45 +02:00
Unchained
341fb68216 Merge branch 'feature/cash-on-delivery' into dev 2026-03-30 06:31:58 +02:00
Unchained
25e60457cc fix: shipping cost calculation and performance optimization
- Fix shipping cost not included in checkout total
- Add useShippingMethodSelector hook for proper abstraction
- Remove blocking initCheckout from Header for better performance
- Checkout now initializes lazily when cart opens or item added
2026-03-30 06:31:52 +02:00
Unchained
adb28c2a91 feat: Implement dual client/server analytics tracking
Complete analytics overhaul with redundant tracking:

CLIENT-SIDE (useAnalytics hook):
- Tracks user behavior in real-time
- Product views, add to cart, checkout steps
- Revenue tracking via op.revenue()
- Captures user session data

SERVER-SIDE (API route + server functions):
- POST /api/analytics/track-order endpoint
- trackOrderCompletedServer() function
- Reliable tracking that can't be blocked
- Works even if browser closes

DUAL TRACKING for order completion:
1. Client tracks immediately (session data)
2. API call to server endpoint (reliable)
3. Both sources recorded with 'source' property

Files:
- src/lib/analytics.ts - Client-side with dual tracking
- src/lib/analytics-server.ts - Server-side tracking
- src/app/api/analytics/track-order/route.ts - API endpoint

Benefits:
-  100% revenue capture (server-side backup)
-  Real-time client tracking
-  Ad blocker resistant
-  Browser-close resistant
-  Full funnel visibility
2026-03-30 05:41:05 +02:00
Unchained
6ae7b045a7 fix: Track order completion BEFORE clearing checkout
The checkout was being cleared before tracking, causing getTotal()
to return 0. Fixed by reordering operations:
1. Track order completion (while checkout data exists)
2. Then clear the checkout

Added console log to verify total is captured correctly.
2026-03-30 05:02:34 +02:00
Unchained
05b0a64c84 debug: Add console logging for revenue tracking
Add detailed console logs to debug why revenue tracking isn't working:
- Log when trackOrderCompleted is called
- Log revenue amount and currency
- Log success/failure of revenue tracking

This will help identify if the issue is with the op.revenue() call
or if it's failing silently.
2026-03-29 20:52:21 +02:00
Unchained
a516b3a536 fix: Remove auto-order confirmation code
The order confirmation requires MANAGE_ORDERS permission which
the storefront API token doesn't have. Removing the auto-confirmation
attempt to prevent console errors. Orders will remain UNCONFIRMED
until manually confirmed in Saleor Dashboard.
2026-03-29 20:49:52 +02:00
Unchained
aa737a1449 fix: Simplify analytics to fix OpenPanel errors
Remove complex tracking implementation that was causing errors:
- Remove op.increment/decrement calls (causing Duplicate event errors)
- Remove complex type definitions
- Remove unused tracking methods
- Keep only essential tracking with proper error handling

This reverts to a simpler, working analytics implementation.
2026-03-29 20:41:27 +02:00
Unchained
51a41cbb89 fix: Add missing currency field to checkout items tracking
CartItemData requires currency field for each item.
Added currency extraction from variant pricing.
2026-03-29 20:31:57 +02:00
Unchained
3c3f4129c8 feat: Implement comprehensive OpenPanel analytics tracking
Complete analytics overhaul with 30+ tracking events:

E-commerce Events:
- Product views, image views, variant selection
- Add/remove from cart, quantity changes
- Cart open and abandonment tracking
- Checkout funnel (all steps)
- Payment/shipping method selection
- Order completion with revenue tracking

User Engagement:
- Search queries with filters
- CTA clicks, external link clicks
- Element engagement (click/hover/view)
- Newsletter signups
- Promo code usage
- Wishlist actions

User Identity:
- User identification
- Property setting
- Screen/session tracking

Technical:
- Proper TypeScript types for all events
- Increment/decrement counters
- Pending revenue for cart abandonment
- Comprehensive error handling

Includes complete documentation in docs/ANALYTICS_GUIDE.md
2026-03-29 20:25:21 +02:00
Unchained
038a574c6e feat: Increase free shipping threshold from 3000 to 10000 RSD
Update free shipping minimum from 3,000 RSD to 10,000 RSD across:
- TickerBar component
- English translations (en.json)
- Serbian translations (sr.json)
- French translations (fr.json)
- German translations (de.json)
2026-03-29 19:47:26 +02:00
Unchained
31c6d2ce14 Merge dev: COD payment method implementation
Some checks failed
Build and Deploy / build (push) Has been cancelled
Features:
- Add Cash on Delivery (COD) payment method
- Modular payment configuration system
- PaymentMethodSelector and PaymentMethodCard components
- 30-day money back guarantee badge
- Checkout language fix for multilingual emails
- Cart reset after order completion
- Service layer architecture

Note: Orders are UNCONFIRMED until manually confirmed in dashboard.
Auto-confirmation has permission issues in Saleor.
2026-03-29 19:40:03 +02:00
Unchained
7677037748 Merge feature/cash-on-delivery: COD payment method implementation
Features:
- Add Cash on Delivery (COD) payment method
- Modular payment configuration system
- Reusable PaymentMethodSelector and PaymentMethodCard components
- 30-day money back guarantee badge
- Checkout language fix for multilingual emails
- Cart reset after order completion
- Service layer architecture for checkout operations

Technical:
- Abstracted email system in saleor-core-extensions
- Payment method detection from order data
- Configuration-driven translations (EN, SR, DE, FR)

Note: Order auto-confirmation has permission issues in Saleor,
orders will be UNCONFIRMED until manually confirmed.
2026-03-29 19:33:18 +02:00
Unchained
de4eb0852c feat: Add order auto-confirmation (best effort)
Added order confirmation after checkout completion.
Note: This requires MANAGE_ORDERS permission which currently
has the same bug as HANDLE_PAYMENTS. The try-catch ensures
checkout won't fail if confirmation fails. Orders will be
UNCONFIRMED until manually confirmed in dashboard.
2026-03-29 19:33:04 +02:00
Unchained
9c3d8b0d11 fix: Remove COD transaction creation to fix checkout errors
The transaction creation was failing due to HANDLE_PAYMENTS permission issues.
Removed the code to get checkout working again. Will implement via
order metadata or core-extensions webhook instead.
2026-03-29 19:17:06 +02:00
Unchained
e15e6470d2 fix: Add SALEOR_API_TOKEN auth for COD transaction creation
- Add SALEOR_API_TOKEN environment variable support
- Update Apollo client to include auth header
- Enable COD transaction creation after checkout
2026-03-29 18:22:16 +02:00
Unchained
5f9b7bac3a fix: set checkout languageCode to ensure emails are sent in correct language
- Add CHECKOUT_LANGUAGE_CODE_UPDATE mutation to update checkout language
- Call language code update before completing checkout
- Language code (SR, EN, DE, FR) is now set on checkout before order creation
- This ensures order confirmation emails are sent in the customer's language
- Update step numbering in checkout flow (now 6 steps total)
2026-03-29 14:42:52 +02:00
Unchained
fbe0761609 fix: remove manual transaction creation causing 400 error
- Remove CREATE_TRANSACTION_MUTATION call that's causing 400 error
- Saleor's checkoutComplete already creates order with NOT_CHARGED status for COD
- Order doesn't need manual transaction - staff handles fulfillment in dashboard
- Keep payment method selection and UI components intact
2026-03-29 14:31:42 +02:00
Unchained
10b18c6010 feat: add 30-day money back guarantee trust badge above complete order button
- Add green trust badge with checkmark icon above 'Complete Order' button
- Add translations for all locales (EN, SR, DE, FR)
- Badge includes: '30-Day Money-Back Guarantee' text
- Styled with green background and border to match trust/conversion theme
2026-03-29 14:27:05 +02:00
Unchained
eaf599f248 style: improve COD payment card selected state
- Add black border-2 and shadow when selected
- Change icon background to black with white icon when selected
- Add 'Selected' badge with checkmark icon
- Make text bolder and more visible when selected
- Add hover shadow effects
- Add 'selected' translation key for all locales
- Overall more lively and prominent selected state
2026-03-29 09:06:29 +02:00
Unchained
82c23e37a1 fix: use lowercase 'cod' in CODInstructions translation key
- Change useTranslations from Payment.COD to Payment.cod
- Fixes MISSING_MESSAGE error in CODInstructions component
- Consistent with translation file structure
2026-03-29 08:59:59 +02:00
Unchained
3e7ac79cf4 fix: use lowercase 'cod' for translation keys to match method ID
- Change translation keys from COD to cod in all locale files
- Fixes MISSING_MESSAGE error in PaymentMethodCard
- Aligns translation keys with payment method IDs
2026-03-29 08:57:59 +02:00
Unchained
0a87cdc347 fix: translate payment method names based on locale
- Update PaymentMethodCard to use next-intl translations
- Remove hardcoded English names from config
- Add comingSoon translation key for unavailable methods
- Payment names now match checkout language (SR/EN/DE/FR)
2026-03-29 08:55:20 +02:00
Unchained
ff481f18c3 feat: implement Cash on Delivery (COD) payment method
This commit adds comprehensive COD support using Saleor's native Transaction system:

**Architecture:**
- Uses Saleor's native Transaction objects (not metadata)
- Modular payment method configuration
- Extensible design for future payment types (cards, bank transfer, etc.)

**New Components:**
- PaymentMethodSelector: Reusable payment method selection UI
- PaymentMethodCard: Individual payment method card
- CODInstructions: COD-specific instructions and guidance
- PaymentSection: Checkout integration wrapper

**Core Features:**
- COD selected by default for Serbia (default-channel)
- Transaction created automatically on order completion
- Transaction visible in Saleor Dashboard
- Multi-language support (EN, SR, DE, FR)
- No additional fees
- Instructions shown to customer (prepare cash, inspect order, no fee)

**Files Added:**
- docs/COD-IMPLEMENTATION-PLAN.md
- src/lib/config/paymentMethods.ts
- src/lib/saleor/payments/types.ts
- src/lib/saleor/payments/cod.ts
- src/components/payment/PaymentMethodSelector.tsx
- src/components/payment/PaymentMethodCard.tsx
- src/components/payment/CODInstructions.tsx
- src/components/payment/index.ts
- src/app/[locale]/checkout/components/PaymentSection.tsx

**Files Modified:**
- src/app/[locale]/checkout/page.tsx (added payment section, transaction creation)
- src/i18n/messages/{en,sr,de,fr}.json (payment translations)

**Technical Details:**
- Transaction status: NOT_CHARGED
- Available actions: [CHARGE]
- PSP Reference format: COD-{orderNumber}-{timestamp}
- Staff collects cash and fulfills order via Dashboard

Closes: Cash on Delivery payment implementation
2026-03-29 06:02:51 +02:00
Unchained
6f9081cb52 fix: remove turbopack.root config causing CPU issues and module resolution errors
Some checks failed
Build and Deploy / build (push) Has been cancelled
2026-03-28 19:32:16 +02:00
Unchained
7f35dc57c6 fix: set turbopack root directory 2026-03-28 18:48:58 +02:00
Unchained
7d63f4fbcd fix: add missing useRef import 2026-03-28 18:44:07 +02:00
Unchained
b78b081d29 fix: use ref instead of state for initialization flag to prevent dependency array size change 2026-03-28 18:41:36 +02:00
Unchained
676dda4642 fix: set language code in CartDrawer before init 2026-03-28 18:20:12 +02:00
Unchained
c8d184f9dc fix: set language code before initializing checkout 2026-03-28 18:18:52 +02:00
Unchained
322c4c805b fix: add back email update step in checkout 2026-03-28 18:09:57 +02:00
Unchained
bcf74e1fd1 feat: implement one-page checkout with dynamic shipping 2026-03-28 18:03:12 +02:00