Preview and map the file
Users select the header row, review sample data, and connect each Excel column to the correct platform field through a visual workspace.
I built a Laravel and React workspace that lets users connect different Excel formats to one data model, validate configurations, and reuse approved mappings for future uploads.
My role: Designed and implemented the Laravel mapping workflow and React interface, including validation, versioning, permissions, edit locks, and background processing.
Customer files used different column names, layouts, and value formats. Building a separate importer for every format slowed onboarding, required developer support, and made changes difficult to maintain.
Users select the header row, review sample data, and connect each Excel column to the correct platform field through a visual workspace.
Required fields, data types, countries, dates, units, relationships, defaults, and duplicate mappings are checked before large datasets are processed.
Mappings move through draft, published, archived, and historical states, allowing a new version to be prepared without changing the active configuration.
A guided update compares new headers with the existing mapping, identifies added or removed columns, and keeps production uploads on the published version until approval.
Tenant-level permissions isolate mappings between organizations. Edit locks prevent two users from changing the same draft, while published and historical versions remain protected from accidental updates.
Large-file analysis runs through Laravel queues. Private WebSocket events notify the React interface when processing finishes, providing immediate feedback without repeated polling.
A reusable import system needs more than matching column names. Validation, version history, permissions, background processing, and a clear interface make the configuration safe for non-technical users.
PHP, Laravel, React, TypeScript, Inertia.js, PostgreSQL, Laravel Queues, WebSockets, Amazon S3, Laravel Vapor, Pest, and PHPUnit.