phase 8 and 9

This commit is contained in:
Stefanescu Mihai
2026-03-19 18:42:19 +02:00
parent d75cabfeec
commit 82ebb697f3
94 changed files with 4498 additions and 749 deletions
+25 -26
View File
@@ -121,51 +121,50 @@ Raw event tables grow fast. Pre-aggregate data for fast dashboard loads.
Choose a frontend approach and build a polished interface.
- [ ] Pick a stack:
- **Option A:** Blade + Livewire + Alpine.js (server-rendered, simpler)
- **Option B:** Inertia.js + Vue/React (SPA feel, more flexibility)
- [ ] Install Tailwind CSS (already in the Laravel scaffold via Vite)
- [ ] Build a **layout** with sidebar navigation (websites list, reports sections) and top bar (date picker, user menu)
- [ ] Integrate a charting library (Chart.js, ApexCharts, or ECharts) for:
- [x] Pick a stack:
- **Option A:** Blade + Alpine.js (server-rendered, simpler) — selected
- [x] Install Tailwind CSS (already in the Laravel scaffold via Vite) + Inter font
- [x] Build a **layout** with sidebar navigation (websites list, reports sections) and top bar (date picker, user menu)
- [x] Integrate a charting library (Chart.js + chartjs-chart-geo) for:
- Line charts (visitors over time)
- Bar charts (top pages, browsers)
- Pie/donut charts (device type, traffic source split)
- World map (geographic report)
- [ ] Build **comparison mode** — compare current period vs. previous period with delta percentages
- [ ] Add loading states, empty states, and error handling throughout
- [ ] Make the dashboard responsive (mobile-friendly)
- Bar charts (top pages, browsers, sources)
- Pie/donut charts (device type, traffic source split, new vs returning)
- World map (geographic report — choropleth)
- [x] Build **comparison mode** — compare current period vs. previous period with delta percentages on metric cards
- [x] Add loading states, empty states, and error handling throughout
- [x] Make the dashboard responsive (mobile-friendly) — collapsible sidebar with overlay on mobile
---
## Phase 8: API for Programmatic Access
## Phase 8: API for Programmatic Access ✅
Let users pull their analytics data via an API.
- [ ] Create API token management (Laravel Sanctum) — UI page to generate/revoke API tokens
- [ ] Build versioned API routes (`/api/v1/...`)
- [ ] Endpoints:
- [x] Create API token management (Laravel Sanctum) — UI page to generate/revoke API tokens
- [x] Build versioned API routes (`/api/v1/...`)
- [x] Endpoints:
- `GET /api/v1/websites` — list websites
- `GET /api/v1/websites/{id}/stats` — summary metrics with date-range params
- `GET /api/v1/websites/{id}/pages` — top pages
- `GET /api/v1/websites/{id}/referrers` — traffic sources
- `GET /api/v1/websites/{id}/events` — events report
- `GET /api/v1/websites/{id}/visitors` — audience breakdown
- [ ] Add API resource classes for consistent JSON formatting
- [ ] Rate limit API endpoints per token
- [x] Add API resource classes for consistent JSON formatting
- [x] Rate limit API endpoints per token
---
## Phase 9: Advanced Features
## Phase 9: Advanced Features ✅
Features that differentiate from a basic analytics tool.
- [ ] **Funnels** — let users define a sequence of pages/events and visualize drop-off at each step
- [ ] **Segments** — filter all reports by visitor attributes (e.g., mobile users from Germany)
- [ ] **Custom dashboards** — let users pin specific widgets/reports to a custom overview
- [ ] **Alerts / Notifications** — notify users when traffic spikes, drops, or a goal hits a threshold (email and/or in-app)
- [ ] **Data export** — CSV/PDF export for any report
- [ ] **UTM builder** — in-app tool to generate campaign URLs with UTM parameters
- [ ] **Annotations** — let users add notes on specific dates (e.g., "launched ad campaign") visible on charts
- [x] **Funnels** — let users define a sequence of pages/events and visualize drop-off at each step
- [x] **Segments** — filter all reports by visitor attributes (e.g., mobile users from Germany)
- [x] **Custom dashboards** — let users pin specific widgets/reports to a custom overview
- [x] **Alerts / Notifications** — notify users when traffic spikes, drops, or a goal hits a threshold (email and/or in-app)
- [x] **Data export** — CSV/PDF export for any report
- [x] **UTM builder** — in-app tool to generate campaign URLs with UTM parameters
- [x] **Annotations** — let users add notes on specific dates (e.g., "launched ad campaign") visible on charts
---