Commit Graph
76 Commits
Author SHA1 Message Date
Malek TellissiandClaude Sonnet 4.6 4e53c9a310 Install composer on host during deploy so artisan commands work directly
Deploy / deploy (push) Failing after 7s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-12 04:22:59 +02:00
Malek TellissiandClaude Sonnet 4.6 822790bfc0 Improve image import logging and move HTTP downloads out of DB transaction
Deploy / deploy (push) Successful in 16s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-12 04:16:12 +02:00
Malek TellissiandClaude Sonnet 4.6 02c17d6984 Add shopify:images command to download product images for existing products
Deploy / deploy (push) Successful in 14s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 15:09:47 +02:00
Malek TellissiandClaude Sonnet 4.6 9ee67dfb69 Download and store Shopify product images locally on import
Deploy / deploy (push) Successful in 13s
Images are fetched from Shopify CDN, stored in storage/app/public/product-images/
as UUIDs, and saved in the Product.images array — matching Filament's FileUpload format.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 15:08:01 +02:00
Malek TellissiandClaude Sonnet 4.6 edc4c5a28c Set explicit navigation group order in panel provider
Deploy / deploy (push) Successful in 13s
Produkte group appears first, followed by Lager, Waren Ein/Ausgang,
Ressourcen, CRM.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 15:06:21 +02:00
Malek TellissiandClaude Sonnet 4.6 53955b0163 Group Produkte, Rezepte and Chargen under 'Produkte' nav group
Deploy / deploy (push) Successful in 13s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 15:04:19 +02:00
Malek TellissiandClaude Sonnet 4.6 32e196719a Extend shopify:import to handle Stück, Stangen and Default Title variants
Deploy / deploy (push) Successful in 13s
Parses additional packaging formats from option1 and falls back to SKU
parsing for single-variant products with 'Default Title'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 15:02:12 +02:00
Malek TellissiandClaude Sonnet 4.6 94d94effa9 Add shopify:import command for initial product/inventory import
Deploy / deploy (push) Successful in 14s
Fetches all products and variants from Shopify API, creates local
Products, Packings and ProductSizes with shopify_variant_id, and
fills ProductInventory rows to match Shopify's inventory_quantity.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 14:58:40 +02:00
Malek TellissiandClaude Sonnet 4.6 e099e7a0a0 Pass Shopify env vars into container via docker-compose
Deploy / deploy (push) Successful in 15s
Variables in .env are only available to docker compose for interpolation,
not automatically passed into the container — must be listed explicitly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 14:55:22 +02:00
Malek Tellissi afd5f5bd00 Trigger redeploy to include SHOPIFY_ACCESS_TOKEN
Deploy / deploy (push) Successful in 9s
2026-09-11 14:45:10 +02:00
Malek TellissiandClaude Sonnet 4.6 80b7831a1e Remove temporary Shopify OAuth install routes
Deploy / deploy (push) Successful in 14s
Token captured, routes no longer needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 03:21:48 +02:00
Malek Tellissi d7c956d21c Trigger redeploy to pick up Shopify secrets
Deploy / deploy (push) Successful in 9s
2026-09-11 03:17:49 +02:00
Malek TellissiandClaude Sonnet 4.6 527f99bb6e Set explicit redirect_uri in Shopify OAuth install URL
Deploy / deploy (push) Successful in 14s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 03:15:02 +02:00
Malek TellissiandClaude Sonnet 4.6 99d3ea748c Fix nullable clientSecret in ShopifyInstallController
Deploy / deploy (push) Successful in 13s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 03:13:40 +02:00
Malek TellissiandClaude Sonnet 4.6 2b7913311a Add temporary Shopify OAuth install routes
Deploy / deploy (push) Successful in 14s
/shopify/install  → redirects to Shopify OAuth
/shopify/callback → exchanges code for access token and displays it

To be removed after token is captured.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 03:12:20 +02:00
Malek TellissiandClaude Sonnet 4.6 7e9c43f2bf Improve Shopify sync error logging
Deploy / deploy (push) Successful in 14s
Log clear hint for 403 (IP whitelist), 401, 429, 5xx.
Commands exit with failure and print error when API returns no data.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:54:44 +02:00
Malek TellissiandClaude Sonnet 4.6 467d85dfec Add Shopify inventory sync and order webhook
Deploy / deploy (push) Successful in 14s
- Migration: shopify_variant_id on products_sizes, shopify_order_id on products_sales
- ShopifyService: paginated REST client (2024-10 API)
- shopify:map — one-time command to link variants by SKU
- shopify:sync — reconciliation command (Shopify is master)
- VerifyShopifyWebhook middleware: HMAC-SHA256 verification
- ShopifyWebhookController: idempotent orders/paid handler, FIFO inventory deduction
- Webhook route: POST /api/webhooks/shopify/orders-paid

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:53:49 +02:00
Malek TellissiandClaude Sonnet 4.6 f54b471848 Fix container startup: plain HTTP behind reverse proxy
Deploy / deploy (push) Successful in 13s
- Caddyfile: disable auto_https and admin, listen on :80 only
- docker-compose: bind port only on 127.0.0.1 to avoid public exposure
- bootstrap/app.php: trust all proxies so Laravel generates correct URLs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:29:22 +02:00
Malek TellissiandClaude Sonnet 4.6 a9d14e4bde Run app on host port 5000 behind reverse proxy
Deploy / deploy (push) Successful in 14s
Caddy still listens on :80 inside the container, but only port 5000 is
exposed to the host. Removes 443/HTTPS ports and Caddy cert volumes —
TLS is handled by the upstream reverse proxy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:23:36 +02:00
Malek TellissiandClaude Sonnet 4.6 a10f43fe21 Fix brace expansion not working in Alpine sh
Deploy / deploy (push) Failing after 29s
Busybox ash does not support brace expansion, so
storage/framework/{sessions,views,cache} was created as a literal
directory name instead of three separate ones. Split into explicit paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:19:21 +02:00
Malek TellissiandClaude Sonnet 4.6 b3a2070a9e Fix bootstrap/cache missing during Docker build
Deploy / deploy (push) Failing after 10s
Composer's post-autoload-dump hook runs php artisan package:discover,
which requires bootstrap/cache and storage/framework subdirs to exist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:16:29 +02:00
Malek TellissiandClaude Sonnet 4.6 e8b52a255c Fix: FrankenPHP-Tag auf php8.4-alpine korrigieren (latest-php8.4-alpine existiert nicht)
Deploy / deploy (push) Failing after 2m22s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:11:40 +02:00
Malek TellissiandClaude Sonnet 4.6 a597e58838 Fix: PHP 8.3 -> 8.4 im Dockerfile (Symfony 8.1.x erfordert >=8.4.1)
Deploy / deploy (push) Failing after 7s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:10:34 +02:00
Malek TellissiandClaude Sonnet 4.6 9567ce7511 Fix: Composer in Dockerfile via multi-stage copy hinzufügen
Deploy / deploy (push) Failing after 12s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 02:08:50 +02:00
Malek TellissiandClaude Sonnet 4.6 a9f25d37e9 Initial commit: SpiceManagementSystem mit Deploy-Pipeline
Deploy / deploy (push) Failing after 4m54s
- Laravel 11 + Filament 3 Warenwirtschaft für Gewürze
- Chargen/LOT-Verwaltung mit Herkunfts-Tracking
- Öffentliche LOT-API (/api/lot/{nummer})
- Shopify Inventory Import
- Docker/FrankenPHP/Caddy Setup
- Gitea Actions Deploy-Workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-11 01:55:06 +02:00
Malek Tellissi 400172cdde Erster Upload 2026-09-11 01:17:47 +02:00