The Exchange
Live demoWebsite and back office for a weekly print classifieds paper covering Eastern Washington and North Idaho: online ads, the digital edition, editorial columns and an events calendar.
What I built
- Online ad placement with card payments. A multi-step ad builder that authorizes the card at checkout and captures it only when staff approve the ad. Prices are recalculated on the server so they can't be tampered with.
- Mobile reader for the print edition. A PDF.js reader with pinch and double-tap zoom, so the weekly paper is readable on a phone. Uploads are processed and archived in a background queue.
- Print-to-web import pipeline. Staff upload the week's print classifieds as a spreadsheet plus a ZIP of photos, and queued jobs turn them into live listings.
- Admin panel. Filament screens for articles, columns, display advertisers, the ad approval queue and the e-edition archive.
- Search that understands categories. Meilisearch full-text search that also routes common terms straight to the right category, with search logging to find gaps.
- Image handling for print sources. Uploads are resized on the server, and CMYK print files are converted to web color automatically.
922classified ads
576articles
243e-editions
460automated tests
Stack
- Laravel 12
- PHP 8.4
- Filament 5
- Livewire 4
- Tailwind 4
- MySQL 8
- Meilisearch
- PDF.js
Open the Exchange
Payments run in demo mode. No card is charged.