michangarrito/.env.example
rckrdmrd 48dea7a5d0 feat: Initial commit - michangarrito
Marketplace móvil para negocios locales mexicanos.

Estructura inicial:
- apps/backend (NestJS API)
- apps/frontend (React Web)
- apps/mobile (Expo/React Native)
- apps/mcp-server (Claude MCP Server)
- apps/whatsapp-service (WhatsApp Business API)
- database/ (PostgreSQL DDL)
- docs/ (Documentación)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:41:02 -06:00

434 lines
12 KiB
Plaintext

# =============================================================================
# MICHANGARRITO - VARIABLES DE ENTORNO
# =============================================================================
# Copiar este archivo a .env y configurar los valores
# Generado: 2026-01-04
# =============================================================================
# -----------------------------------------------------------------------------
# APLICACION
# -----------------------------------------------------------------------------
NODE_ENV=development
APP_NAME=michangarrito
APP_VERSION=1.0.0
APP_DESCRIPTION="POS inteligente para micro-negocios"
# -----------------------------------------------------------------------------
# PUERTOS DE SERVICIOS
# -----------------------------------------------------------------------------
WEB_PORT=3140
BACKEND_PORT=3141
MCP_PORT=3142
WHATSAPP_PORT=3143
MOBILE_METRO_PORT=8081
# -----------------------------------------------------------------------------
# BASE DE DATOS POSTGRESQL
# -----------------------------------------------------------------------------
DB_HOST=localhost
DB_PORT=5432
DB_NAME=michangarrito_dev
DB_USER=michangarrito_dev
# Generar con: openssl rand -base64 32
DB_PASSWORD=
# URL de conexion completa (se construye automaticamente)
DATABASE_URL=postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
# Pool de conexiones
DB_POOL_SIZE=10
DB_POOL_MIN=2
# SSL (solo produccion)
DB_SSL=false
# -----------------------------------------------------------------------------
# REDIS
# -----------------------------------------------------------------------------
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DATABASE=8
# Nota: Puerto 6379 es instancia compartida del workspace, DB 8 asignado a MiChangarrito
REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}/${REDIS_DATABASE}
# -----------------------------------------------------------------------------
# JWT / AUTENTICACION
# -----------------------------------------------------------------------------
# Generar con: openssl rand -base64 64
JWT_SECRET=
JWT_EXPIRES_IN=7d
JWT_REFRESH_EXPIRES_IN=30d
# OTP para login
OTP_EXPIRES_MINUTES=5
OTP_LENGTH=6
# PIN de acceso rapido
PIN_LENGTH=4
PIN_MAX_ATTEMPTS=3
PIN_LOCKOUT_MINUTES=30
# Biometrico
BIOMETRIC_ENABLED=true
# -----------------------------------------------------------------------------
# WHATSAPP BUSINESS API (Meta)
# -----------------------------------------------------------------------------
# Verificacion del webhook
WHATSAPP_VERIFY_TOKEN=
# Token de acceso (obtener de Meta Business)
WHATSAPP_ACCESS_TOKEN=
# ID del numero de telefono
WHATSAPP_PHONE_NUMBER_ID=
# ID de la cuenta de negocio
WHATSAPP_BUSINESS_ACCOUNT_ID=
# Webhook URL (para configurar en Meta)
WHATSAPP_WEBHOOK_URL=https://tu-dominio.com/webhook/whatsapp
# Numero compartido de la plataforma (para multi-tenant)
WHATSAPP_PLATFORM_NUMBER=+52XXXXXXXXXX
# -----------------------------------------------------------------------------
# LLM / INTELIGENCIA ARTIFICIAL
# -----------------------------------------------------------------------------
# Proveedor: openrouter, openai, anthropic, ollama
LLM_PROVIDER=openrouter
# API Key del proveedor
LLM_API_KEY=
# Modelo a usar
# OpenRouter: anthropic/claude-3-haiku, openai/gpt-4o-mini, meta-llama/llama-3-8b
# OpenAI: gpt-4o-mini, gpt-4o
# Anthropic: claude-3-haiku-20240307, claude-3-sonnet-20240229
# Ollama: llama3, mistral, phi3
LLM_MODEL=anthropic/claude-3-haiku
# URL base del proveedor
# OpenRouter: https://openrouter.ai/api/v1
# OpenAI: https://api.openai.com/v1
# Anthropic: https://api.anthropic.com/v1
# Ollama: http://localhost:11434/api
LLM_BASE_URL=https://openrouter.ai/api/v1
# Limites
LLM_MAX_TOKENS=4096
LLM_TEMPERATURE=0.7
# Tokens por defecto para nuevos usuarios
LLM_DEFAULT_TOKENS=500
# -----------------------------------------------------------------------------
# MCP SERVER (Model Context Protocol)
# -----------------------------------------------------------------------------
MCP_SERVER_NAME=michangarrito-mcp
MCP_SERVER_VERSION=1.0.0
MCP_LOG_LEVEL=info
# Herramientas habilitadas (separadas por coma)
MCP_ENABLED_TOOLS=ventas,productos,inventario,clientes,fiados,pedidos,reportes,configuracion
# -----------------------------------------------------------------------------
# STRIPE (Suscripciones y Pagos)
# -----------------------------------------------------------------------------
# Claves de API (modo test)
# Obtener de: https://dashboard.stripe.com/test/apikeys
STRIPE_SECRET_KEY=sk_test_
STRIPE_PUBLISHABLE_KEY=pk_test_
# Webhook secret
# Obtener de: https://dashboard.stripe.com/test/webhooks
STRIPE_WEBHOOK_SECRET=whsec_
# IDs de productos/precios (crear en Stripe Dashboard)
STRIPE_PRICE_CHANGARRITO=price_
STRIPE_PRICE_TIENDITA=price_
STRIPE_PRICE_TOKENS_1000=price_
STRIPE_PRICE_TOKENS_3000=price_
STRIPE_PRICE_TOKENS_8000=price_
STRIPE_PRICE_TOKENS_20000=price_
# Referencia OXXO
STRIPE_OXXO_ENABLED=true
# -----------------------------------------------------------------------------
# MERCADO PAGO (Terminal de Pago)
# -----------------------------------------------------------------------------
# Access Token (obtener de Mercado Pago Developers)
MERCADOPAGO_ACCESS_TOKEN=
# Public Key
MERCADOPAGO_PUBLIC_KEY=
# User ID (para Point integration)
MERCADOPAGO_USER_ID=
# Device ID de la terminal
MERCADOPAGO_DEVICE_ID=
# Webhook URL
MERCADOPAGO_WEBHOOK_URL=https://tu-dominio.com/webhook/mercadopago
# -----------------------------------------------------------------------------
# CLIP (Terminal de Pago)
# -----------------------------------------------------------------------------
# API Key (obtener de Clip Dashboard)
CLIP_API_KEY=
# Merchant ID
CLIP_MERCHANT_ID=
# Device ID de la terminal
CLIP_DEVICE_ID=
# Webhook URL
CLIP_WEBHOOK_URL=https://tu-dominio.com/webhook/clip
# -----------------------------------------------------------------------------
# CODI (Banxico QR)
# -----------------------------------------------------------------------------
# Habilitado
CODI_ENABLED=true
# CLABE virtual para recepcion
CODI_CLABE=
# Certificado (path o base64)
CODI_CERTIFICATE=
# Llave privada (path o base64)
CODI_PRIVATE_KEY=
# -----------------------------------------------------------------------------
# FIREBASE (Push Notifications)
# -----------------------------------------------------------------------------
# Project ID
FIREBASE_PROJECT_ID=
# Service Account (JSON)
# Opcion 1: Path al archivo
FIREBASE_SERVICE_ACCOUNT_PATH=./firebase-service-account.json
# Opcion 2: JSON como string (para produccion)
FIREBASE_SERVICE_ACCOUNT_JSON=
# Habilitado
FIREBASE_PUSH_ENABLED=true
# -----------------------------------------------------------------------------
# OCR / VISION (Procesamiento de Imagenes)
# -----------------------------------------------------------------------------
# Google Cloud Vision
# Obtener de: https://console.cloud.google.com/apis/credentials
GOOGLE_VISION_API_KEY=
# Alternativa: Tesseract local
OCR_PROVIDER=google
# OCR_PROVIDER=tesseract
# -----------------------------------------------------------------------------
# TRANSCRIPCION DE AUDIO
# -----------------------------------------------------------------------------
# OpenAI Whisper API
# Obtener de: https://platform.openai.com/api-keys
OPENAI_API_KEY=
# Modelo de Whisper
WHISPER_MODEL=whisper-1
# Alternativa: Whisper local
TRANSCRIPTION_PROVIDER=openai
# TRANSCRIPTION_PROVIDER=local
# -----------------------------------------------------------------------------
# ALMACENAMIENTO
# -----------------------------------------------------------------------------
# Tipo: local, s3, cloudinary
STORAGE_TYPE=local
# Local
STORAGE_LOCAL_PATH=./uploads
STORAGE_MAX_SIZE_MB=10
# AWS S3 (para produccion)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=us-east-1
AWS_S3_BUCKET=michangarrito-uploads
# Cloudinary (alternativa)
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
# -----------------------------------------------------------------------------
# CORS
# -----------------------------------------------------------------------------
FRONTEND_URL=http://localhost:3140
ALLOWED_ORIGINS=http://localhost:3140,http://localhost:3141,exp://localhost:8081
# -----------------------------------------------------------------------------
# LOGGING
# -----------------------------------------------------------------------------
LOG_LEVEL=debug
LOG_FORMAT=pretty
# LOG_FORMAT=json (para produccion)
# Sentry (error tracking - produccion)
SENTRY_DSN=
SENTRY_ENVIRONMENT=development
# -----------------------------------------------------------------------------
# SMTP / EMAIL (Opcional)
# -----------------------------------------------------------------------------
SMTP_HOST=localhost
SMTP_PORT=1025
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=noreply@michangarrito.com
# Mailhog para desarrollo
MAILHOG_WEB_PORT=8025
# -----------------------------------------------------------------------------
# RATE LIMITING
# -----------------------------------------------------------------------------
RATE_LIMIT_TTL=60
RATE_LIMIT_LIMIT=100
# WhatsApp rate limits
WHATSAPP_RATE_LIMIT_MESSAGES=1000
WHATSAPP_RATE_LIMIT_WINDOW=86400
# -----------------------------------------------------------------------------
# CACHE
# -----------------------------------------------------------------------------
CACHE_TTL=300
CACHE_MAX_ITEMS=1000
# Cache de productos (mas largo)
CACHE_PRODUCTS_TTL=3600
# -----------------------------------------------------------------------------
# JOBS / QUEUES (Bull)
# -----------------------------------------------------------------------------
BULL_REDIS_HOST=${REDIS_HOST}
BULL_REDIS_PORT=${REDIS_PORT}
# Colas disponibles
QUEUE_NOTIFICATIONS=notifications
QUEUE_REPORTS=reports
QUEUE_SYNC=sync
QUEUE_WHATSAPP=whatsapp
# -----------------------------------------------------------------------------
# EXPO / MOBILE
# -----------------------------------------------------------------------------
EXPO_PROJECT_ID=
EXPO_OWNER=
# EAS Build
EAS_PROJECT_ID=
# Updates
EXPO_UPDATES_URL=https://u.expo.dev/
# -----------------------------------------------------------------------------
# MULTI-TENANT
# -----------------------------------------------------------------------------
# Modo: single (un negocio por instancia) o multi (varios negocios)
TENANT_MODE=multi
# Deteccion de tenant por:
# - subdomain: negocio.michangarrito.com
# - header: X-Tenant-ID
# - whatsapp: detectar por contexto de conversacion
TENANT_DETECTION=whatsapp
# -----------------------------------------------------------------------------
# NEGOCIO / CONFIGURACION
# -----------------------------------------------------------------------------
# Moneda por defecto
DEFAULT_CURRENCY=MXN
# Zona horaria
DEFAULT_TIMEZONE=America/Mexico_City
# Idioma
DEFAULT_LANGUAGE=es-MX
# Impuestos
DEFAULT_TAX_RATE=16
TAX_INCLUDED=true
# Tickets
TICKET_COMPANY_NAME=MiChangarrito
TICKET_FOOTER=Gracias por su compra
# Horario de operacion por defecto
DEFAULT_OPENING_HOUR=8
DEFAULT_CLOSING_HOUR=22
# -----------------------------------------------------------------------------
# DESARROLLO
# -----------------------------------------------------------------------------
# Hot reload
HOT_RELOAD=true
# Debug
DEBUG=true
DEBUG_SQL=false
# Seed data
SEED_ENABLED=true
# Swagger docs
SWAGGER_ENABLED=true
SWAGGER_PATH=/api/docs
# -----------------------------------------------------------------------------
# PRODUCCION (descomentar para produccion)
# -----------------------------------------------------------------------------
# NODE_ENV=production
# DEBUG=false
# LOG_FORMAT=json
# SWAGGER_ENABLED=false
# DB_SSL=true
# STORAGE_TYPE=s3
# =============================================================================
# FIN DE CONFIGURACION
# =============================================================================