Work / Integration · 2026
Shopify merchant
I built and maintained this admin app alone for a Shopify merchant over ten months. It downloads each supplier's CSV feed every hour, fetches a second vendor's dealer CSV and ZIP files over SFTP, lets the merchant choose and map products, uploads them to Shopify in chunked queued jobs, and keeps price, stock and vendor cost in sync hourly. It runs on Laravel 12, Filament 4 and MySQL, talks to the Shopify GraphQL Admin API, and is live.
- live
- client work
- integration
- client anonymized
- Client
- Shopify merchant
- Type
- Integration · E-commerce: multi-vendor feed to Shopify sync
- Role
- Sole developer: design, Laravel backend, Filament admin, vendor integrations, Shopify sync, tests and deployment docs.
- Built with
- PHP, Laravel, Filament, Laravel queues, MySQL, Shopify GraphQL Admin API, SFTP (Flysystem), PHPUnit
- Also uses
- Supervisor, Laravel Sail, Vite
- Last active
- 2026
What it does
- Hourly CSV feed import per vendor.
- SFTP vendor integration: dealer CSV and ZIP feeds, warehouse stock status, quantity on hand and part-ID matching.
- Product selection and mapping, then chunked upload to Shopify with stored product IDs.
- Hourly price and stock sync for mapped products.
- Vendor cost pushed to Shopify inventory unit cost.
- Sales-channel publication handling.
- Dashboard widgets for sync stats, upload status, import activity and catalog mix.
How it is built
- A Laravel app with Filament resources for vendors, vendor products, product mappings and the SFTP vendor's products. Artisan commands, run hourly by the scheduler, dispatch per-vendor queued jobs that fan out into chunk jobs for Shopify writes through a small GraphQL client. Production is a plain Apache + PHP + MySQL server with Supervisor-managed queue workers and one cron entry.
My part
- Built the vendor feed importers, including an SFTP integration with CSV and ZIP stream parsing.
- Built the Shopify GraphQL client and the chunked upload, sync, delete and cost jobs.
- Built the Filament admin resources and dashboard widgets.
- Wrote unit and feature tests for parsers, pricing, quantities and the cost push.
- Documented the production setup (queue workers, scheduler, server deploy checklist).
Decisions
- Split Shopify writes into chunked queue jobs and store Shopify product IDs; deleting clears them so a product can be uploaded again.
- Cover parsers and pricing with unit tests, including a UTF-8 safety test.
- Deploy to a plain Apache + PHP + MySQL server rather than containers.
Challenges
- The SFTP vendor's feeds needed fixes for stock-status logic, text encoding, pagination and part-ID matching.
Skills
- Shopify integration (GraphQL Admin API)
- Laravel backend development (queues, scheduler, commands)
- Admin UI with Filament
- Supplier feed integration (CSV, ZIP, SFTP)
- Automated testing (PHPUnit)