phase 8 and 9
This commit is contained in:
@@ -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
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user