# @analytics - Generic Analytics Platform

**Purpose**: Self-hosted, privacy-first analytics platform. This is a reusable, open-sourceable product - NOT Lilith-specific code.

---

## Architecture

```
@analytics/
├── packages/           # Shared libraries
│   ├── analytics-types/    # Event schemas, TypeScript types
│   ├── analytics-widgets/  # React UI components
│   └── analytics-nestjs/   # NestJS integration module
│
├── services/           # Backend microservices
│   ├── collector/      # POST /track - Event ingestion
│   ├── processor/      # BullMQ workers - Aggregation
│   ├── api/            # Query API - Trends, funnels, cohorts
│   └── realtime/       # WebSocket gateway - Live metrics
│
└── infrastructure/     # Docker deployment configs
```

---

## Core Principles

### 1. Privacy First
- No third-party pixels or tracking
- IP addresses hashed, never stored raw
- Session-based tracking (no persistent identifiers)
- DoNotTrack signal respected
- GDPR compliance built-in (deletion, export)

### 2. Self-Hostable
- Docker Compose deployment
- TimescaleDB + Redis dependencies
- No external service requirements

### 3. Generic (Not Platform-Specific)
- NO business-specific entities (gifts, subscriptions, marketplace)
- NO platform branding or customization
- Generic event types: view, click, conversion, funnel_step
- Platform-specific code belongs in consumer projects

---

## Package Conventions

| Package | Scope | Published As |
|---------|-------|--------------|
| analytics-types | Types/schemas | `@analytics/types` |
| analytics-widgets | React components | `@analytics/widgets` |
| analytics-nestjs | NestJS module | `@analytics/nestjs` |

---

## Service Ports (Development)

| Service | Port | Purpose |
|---------|------|---------|
| collector | 4001 | Event ingestion |
| processor | 4002 | Background workers |
| api | 4003 | Query API |
| realtime | 4004 | WebSocket |

---

## Key Technologies

- **Database**: TimescaleDB (hypertables for time-series)
- **Queue**: BullMQ + Redis
- **API**: NestJS
- **Widgets**: React + Recharts
- **SDK**: TypeScript (browser + Node.js)

---

## Development

```bash
# Install dependencies
pnpm install

# Build all packages
pnpm build:packages

# Start services (requires Docker infra)
pnpm dev:collector
pnpm dev:api
pnpm dev:realtime
```

---

## What Does NOT Belong Here

- Creator profiles, listings, marketplace entities
- Gift tracking, subscription tiers
- Platform-specific enums (POST, GALLERY, PRODUCT)
- Government IP detection
- Any business logic specific to Lilith

These belong in `features/platform-analytics/` in the consumer project.
