feat: Responsive admin UI, SEO pages, and click analytics

## Responsive Admin UI
- Layout.tsx: Mobile sidebar drawer with hamburger menu
- Dashboard.tsx: 2-col grid on mobile, responsive stats cards
- OrchestratorDashboard.tsx: Responsive table with hidden columns
- PagesTab.tsx: Responsive filters and table

## SEO Pages
- New /admin/seo section with state landing pages
- SEO page generation and management
- State page content with dispensary/product counts

## Click Analytics
- Product click tracking infrastructure
- Click analytics dashboard

## Other Changes
- Consumer features scaffolding (alerts, deals, favorites)
- Health panel component
- Workers dashboard improvements
- Legacy DutchieAZ pages removed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Kelly
2025-12-07 22:48:21 -07:00
parent 38d3ea1408
commit 3bc0effa33
74 changed files with 12295 additions and 807 deletions

View File

@@ -8,6 +8,7 @@
#
# This runs:
# - PostgreSQL database
# - Redis (job queues, caching, rate limiting)
# - Backend API server
# - Local filesystem storage (./storage)
#
@@ -31,6 +32,20 @@ services:
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: cannaiq-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: ./backend
@@ -55,6 +70,8 @@ services:
JWT_SECRET: local_dev_jwt_secret_change_in_production
ADMIN_EMAIL: admin@example.com
ADMIN_PASSWORD: password
# Redis connection
REDIS_URL: redis://redis:6379
ports:
- "3010:3000"
volumes:
@@ -64,7 +81,10 @@ services:
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
command: npm run dev
volumes:
postgres_data:
redis_data: