Overview
Reporting automation and catalog syncs are common after a shop or ERP outgrows spreadsheets.
Problem statement
Manual exports drift out of date and imports without validation corrupt prices or stock.
Requirements and constraints
Scheduler entry, artisan command, dry-run import, emailed or stored output, failure logs.
Proposed architecture
Laravel scheduler invokes commands. Large transforms may shell to Python when already used in the stack.
Database design
Staging tables or row-level validation before upsert into products or inventory.
API design and authentication
Pull from partner REST endpoints when keys are provided; push via SFTP or email when that is what the client uses.
Security
Credentials only in .env. Exports that contain PII stay on private disks.
Performance
Long jobs belong on queues, not HTTP requests.
Testing and deployment
Commands tested with fixture CSVs in CI where clients allow.
Challenges and lessons
Half-failed imports; use transactions and error reports.
Verified results
Businesses run on timetables instead of someone remembering to click Export.