About Project
My marketing agency client needed a reporting dashboard to share LinkedIn advert performance (impressions, clicks, engagement, likes, shares) with their partners across multiple campaigns. Raw data was scraped from LinkedIn's API and stored in a local database by another developer. My job was everything on top of that: the PHP backend, admin tools, and the whole frontend experience.
Key features I built:
- User login and password reset flow (with expiring email links)
- Role-based system to create/edit roles and users, assign granular permissions, and restrict partner-level access (so partners could get their own logins and only see their stats)
- A "partner" management tool to clean up LinkedIn's messy account naming
- CSV upload and configurable charting for telephone/sales data (dials, pitches, etc.), letting admins choose chart type, visibility, and display order per column
- A report generator with partner/date filtering that remembers your last selections via session vars
- Multiple report views combining stat cards, tables, and Chart.js visualizations (line, bar, doughnut)
- Sortable/exportable tables using DataTables + pdfmake
Stack: PHP backend, Vite build setup, Bootstrap 5, Chart.js, DataTables, Choices.js, pdfmake