291 lines
7.0 KiB
Markdown
291 lines
7.0 KiB
Markdown
# Download Tracking System
|
|
|
|
Sistema de seguimiento de descargas anónimo para Claude Code Templates, inspirado en npm analytics.
|
|
|
|
## Descripción
|
|
|
|
Este sistema rastrea las descargas e instalaciones de componentes de forma completamente anónima para:
|
|
- Identificar los componentes más populares
|
|
- Mejorar la calidad de los componentes más utilizados
|
|
- Entender patrones de uso para desarrollo futuro
|
|
- Proporcionar estadísticas públicas similares a npm
|
|
|
|
## Arquitectura
|
|
|
|
### Backend (Vercel + Supabase)
|
|
|
|
1. **API Endpoint**: `/api/track-download-supabase.js`
|
|
- Recibe requests POST con datos de descarga
|
|
- Valida y almacena en Supabase (PostgreSQL)
|
|
- Maneja rate limiting y validaciones
|
|
|
|
2. **Base de Datos**:
|
|
```sql
|
|
-- Tabla principal de descargas
|
|
component_downloads (
|
|
id, component_type, component_name, component_path,
|
|
category, download_timestamp, user_agent, ip_address,
|
|
country, cli_version, created_at
|
|
)
|
|
|
|
-- Tabla de estadísticas agregadas
|
|
download_stats (
|
|
id, component_type, component_name, total_downloads,
|
|
last_download, created_at, updated_at
|
|
)
|
|
```
|
|
|
|
### Cliente (CLI)
|
|
|
|
1. **TrackingService**: Maneja el envío de datos
|
|
- Dual endpoint: Base de datos + telemetría
|
|
- Fire-and-forget (no bloquea al usuario)
|
|
- Respeta opt-out del usuario
|
|
- Timeout de 5 segundos
|
|
|
|
2. **Integración**: Se ejecuta automáticamente en:
|
|
- `--agent`, `--command`, `--mcp`, `--setting`, `--hook`
|
|
- Instalaciones de templates
|
|
- Health checks
|
|
- Lanzamientos de analytics dashboard
|
|
|
|
## Datos Recopilados
|
|
|
|
### Información Anónima
|
|
- **Tipo de componente**: agent, command, mcp, setting, hook
|
|
- **Nombre del componente**: ej. "api-security-audit"
|
|
- **Categoría**: ej. "security", "testing", "automation"
|
|
- **Timestamp**: Momento de instalación
|
|
- **Plataforma**: OS (linux, darwin, win32)
|
|
- **Versión CLI**: Para compatibilidad
|
|
- **País**: Solo código de 2 letras (IP geolocation)
|
|
|
|
### NO se Recopila
|
|
- ❌ Información personal identificable
|
|
- ❌ Nombres de usuario
|
|
- ❌ Rutas completas de archivos
|
|
- ❌ Contenido de proyectos
|
|
- ❌ Tokens o credenciales
|
|
|
|
## Configuración
|
|
|
|
### Variables de Entorno
|
|
|
|
```bash
|
|
# Desactivar tracking completamente
|
|
export CCT_NO_TRACKING=true
|
|
export CCT_NO_ANALYTICS=true
|
|
|
|
# Modo debug (mostrar info de tracking)
|
|
export CCT_DEBUG=true
|
|
|
|
# Base de datos (Supabase)
|
|
export SUPABASE_URL="https://..."
|
|
export SUPABASE_SERVICE_ROLE_KEY="..."
|
|
```
|
|
|
|
### Opt-out del Usuario
|
|
|
|
El tracking se desactiva automáticamente si:
|
|
- `CCT_NO_TRACKING=true`
|
|
- `CCT_NO_ANALYTICS=true`
|
|
- `CI=true` (entornos CI/CD)
|
|
|
|
## Desarrollo
|
|
|
|
### Setup Local
|
|
|
|
1. Instalar dependencias:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Configurar Vercel:
|
|
```bash
|
|
# Instalar Vercel CLI
|
|
npm i -g vercel
|
|
|
|
# Configurar proyecto
|
|
vercel
|
|
```
|
|
|
|
3. Configurar base de datos (Supabase):
|
|
```bash
|
|
# Crear proyecto en Supabase
|
|
# Copiar SUPABASE_URL y SUPABASE_SERVICE_ROLE_KEY
|
|
# Agregar variables de entorno en Vercel Dashboard
|
|
```
|
|
|
|
### Testing
|
|
|
|
```bash
|
|
# Test local con CLI
|
|
CCT_DEBUG=true node cli-tool/bin/create-claude-config.js --agent deep-research-team/academic-researcher
|
|
|
|
# Test sin tracking (simula opt-out)
|
|
CCT_NO_TRACKING=true node cli-tool/bin/create-claude-config.js --agent test-agent
|
|
|
|
# Test directo al API
|
|
curl -X POST https://www.aitmpl.com/api/track-download-supabase \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"type":"agent","name":"test","path":"test","category":"test","cliVersion":"1.19.0"}'
|
|
```
|
|
|
|
### Deployment
|
|
|
|
```bash
|
|
# Deploy a Vercel
|
|
vercel --prod
|
|
|
|
# Verificar endpoints
|
|
curl -X POST https://tu-dominio.com/api/track-download-supabase \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"type":"agent","name":"test","path":"test","category":"test","cliVersion":"1.19.0"}'
|
|
```
|
|
|
|
## API Reference
|
|
|
|
### POST /api/track-download-supabase
|
|
|
|
**Request Body:**
|
|
```json
|
|
{
|
|
"type": "agent|command|mcp|setting|hook|template",
|
|
"name": "component-name",
|
|
"path": "optional/component/path",
|
|
"category": "component-category",
|
|
"cliVersion": "1.0.0"
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Download tracked successfully",
|
|
"data": {
|
|
"type": "agent",
|
|
"name": "component-name",
|
|
"timestamp": "2023-12-07T10:30:00.000Z"
|
|
}
|
|
}
|
|
```
|
|
|
|
**Error Response:**
|
|
```json
|
|
{
|
|
"error": "Bad Request",
|
|
"message": "Component type and name are required"
|
|
}
|
|
```
|
|
|
|
## Monitoreo
|
|
|
|
### Health Check
|
|
|
|
```bash
|
|
# Verificar salud del API
|
|
curl https://tu-dominio.com/api/track-download
|
|
```
|
|
|
|
### Métricas
|
|
|
|
El sistema proporciona métricas para:
|
|
- Total de descargas por componente
|
|
- Tendencias de popularidad
|
|
- Distribución geográfica
|
|
- Versiones de CLI más usadas
|
|
- Patrones temporales de uso
|
|
|
|
### Logs
|
|
|
|
Los logs incluyen:
|
|
- Requests exitosos/fallidos
|
|
- Errores de validación
|
|
- Problemas de conectividad a BD
|
|
- Rate limiting activado
|
|
|
|
## Seguridad
|
|
|
|
### Protecciones Implementadas
|
|
|
|
1. **Rate Limiting**: Por IP y por endpoint
|
|
2. **Validación de Input**: Sanitización de todos los campos
|
|
3. **Timeout**: 5s máximo por request
|
|
4. **CORS**: Headers configurados apropiadamente
|
|
5. **SQL Injection**: Queries parametrizadas
|
|
6. **Privacy**: No PII, solo métricas agregadas
|
|
|
|
### Compliance
|
|
|
|
- **GDPR**: No se almacenan datos personales identificables
|
|
- **CCPA**: Sistema completamente anónimo
|
|
- **Opt-out**: Múltiples formas de desactivar tracking
|
|
|
|
## Troubleshooting
|
|
|
|
### Problemas Comunes
|
|
|
|
1. **Tracking no funciona**:
|
|
- Verificar conectividad de red
|
|
- Comprobar variables de entorno
|
|
- Revisar logs con `CCT_DEBUG=true`
|
|
|
|
2. **Base de datos no responde**:
|
|
- Verificar `POSTGRES_URL`
|
|
- Comprobar límites de conexión
|
|
- Revisar logs de Vercel
|
|
|
|
3. **Rate limiting activo**:
|
|
- Espaciar requests
|
|
- Implementar backoff exponencial
|
|
- Contactar soporte si persiste
|
|
|
|
### Debugging
|
|
|
|
```bash
|
|
# Debug completo
|
|
CCT_DEBUG=true node cli-tool/src/index.js --agent api-security-audit
|
|
|
|
# Solo tracking de base de datos
|
|
# (modificar código temporalmente)
|
|
|
|
# Verificar payload
|
|
console.log(JSON.stringify(payload, null, 2))
|
|
```
|
|
|
|
## Roadmap
|
|
|
|
### Próximas Features
|
|
|
|
1. **Dashboard Público**: Estadísticas en tiempo real
|
|
2. **API Pública**: Endpoint para consultar métricas
|
|
3. **Webhooks**: Notificaciones de descargas populares
|
|
4. **ML Insights**: Recomendaciones basadas en patrones
|
|
5. **Retention Analytics**: Análisis de uso continuado
|
|
|
|
### Mejoras Técnicas
|
|
|
|
1. **Caching**: Redis para requests frecuentes
|
|
2. **CDN**: Distribución geográfica
|
|
3. **Monitoring**: Alertas y métricas avanzadas
|
|
4. **Backup**: Replicación de base de datos
|
|
5. **Performance**: Optimización de queries
|
|
|
|
## Contribuir
|
|
|
|
1. Fork el repositorio
|
|
2. Crear branch: `git checkout -b feature/tracking-improvement`
|
|
3. Commit cambios: `git commit -m 'Add tracking feature'`
|
|
4. Push branch: `git push origin feature/tracking-improvement`
|
|
5. Crear Pull Request
|
|
|
|
## Licencia
|
|
|
|
MIT License - Ver [LICENSE](LICENSE) para detalles.
|
|
|
|
## Contacto
|
|
|
|
- Issues: [GitHub Issues](https://github.com/davila7/claude-code-templates/issues)
|
|
- Discussions: [GitHub Discussions](https://github.com/davila7/claude-code-templates/discussions)
|
|
- Email: soporte@claude-code-templates.com |