Baseline snapshot of custom AI implementation before Laravel AI SDK migration. Includes: - Custom services: GeminiTextGenerationService, TextGenerationService (OpenAI), ImageGenerationService, AudioGenerationService, VideoGenerationService - IntentDetector for content moderation via keyword matching - AI enums: Intent, Orientation, UsageType - Blade prompt templates: system.blade.php, image.blade.php, video.blade.php - AiMessage with content_html accessor (markdown rendering) - AiUsageLog for monthly quota tracking per account - PostAssistantController with regex-based [GENERATE_*] parsing - WritingAssistantTab with markdown rendering, add-to-post, attachments - Workspace brand fields (name, description, tone, voice_notes) in system prompt - Session state block injected into prompts (thread counts, quota remaining) - AttachmentCollector pattern will replace the regex approach in Phase 2 - Post comments with replies, emoji reactions, real-time via Echo - Assets page with Unsplash + Giphy integrations
168 lines
3.9 KiB
Text
168 lines
3.9 KiB
Text
APP_NAME="TryPost"
|
|
APP_ENV=local
|
|
APP_KEY=
|
|
APP_DEBUG=true
|
|
APP_URL=http://localhost
|
|
|
|
# Self-hosted mode (skips payment requirements)
|
|
SELF_HOSTED=true
|
|
|
|
TELESCOPE_ENABLED=false
|
|
|
|
APP_LOCALE=en
|
|
APP_FALLBACK_LOCALE=en
|
|
APP_FAKER_LOCALE=en_US
|
|
|
|
APP_MAINTENANCE_DRIVER=file
|
|
|
|
BCRYPT_ROUNDS=12
|
|
|
|
LOG_CHANNEL=stack
|
|
LOG_STACK=single
|
|
LOG_DEPRECATIONS_CHANNEL=null
|
|
LOG_LEVEL=debug
|
|
|
|
# Database (PostgreSQL or MySQL)
|
|
# PostgreSQL: DB_CONNECTION=pgsql, DB_PORT=5432, DB_USERNAME=postgres
|
|
# MySQL: DB_CONNECTION=mysql, DB_PORT=3306, DB_USERNAME=root
|
|
DB_CONNECTION=pgsql
|
|
DB_HOST=127.0.0.1
|
|
DB_PORT=5432
|
|
DB_DATABASE=trypost
|
|
DB_USERNAME=postgres
|
|
DB_PASSWORD=
|
|
|
|
# Session
|
|
SESSION_DRIVER=database
|
|
SESSION_LIFETIME=1440
|
|
SESSION_ENCRYPT=false
|
|
SESSION_PATH=/
|
|
SESSION_DOMAIN=null
|
|
|
|
# Broadcasting, Queue, Cache
|
|
BROADCAST_CONNECTION=reverb
|
|
QUEUE_CONNECTION=redis
|
|
CACHE_STORE=redis
|
|
|
|
# File Storage
|
|
# Options: local, s3, r2 (or any S3-compatible: MinIO, DigitalOcean Spaces, etc.)
|
|
FILESYSTEM_DISK=local
|
|
|
|
# Redis
|
|
REDIS_HOST=127.0.0.1
|
|
REDIS_PASSWORD=null
|
|
REDIS_PORT=6379
|
|
|
|
# Mail
|
|
MAIL_MAILER=smtp
|
|
MAIL_HOST=127.0.0.1
|
|
MAIL_PORT=2525
|
|
MAIL_USERNAME=null
|
|
MAIL_PASSWORD=null
|
|
MAIL_ENCRYPTION=null
|
|
MAIL_FROM_ADDRESS="hello@example.com"
|
|
MAIL_FROM_NAME="${APP_NAME}"
|
|
|
|
# Reverb (WebSockets)
|
|
REVERB_APP_ID=1001
|
|
REVERB_APP_KEY=your-reverb-key
|
|
REVERB_APP_SECRET=your-reverb-secret
|
|
REVERB_HOST="localhost"
|
|
REVERB_PORT=8080
|
|
REVERB_SCHEME=http
|
|
|
|
# AWS S3 (set FILESYSTEM_DISK=s3)
|
|
AWS_ACCESS_KEY_ID=
|
|
AWS_SECRET_ACCESS_KEY=
|
|
AWS_DEFAULT_REGION=us-east-1
|
|
AWS_BUCKET=
|
|
AWS_URL=
|
|
|
|
# Cloudflare R2 (set FILESYSTEM_DISK=r2)
|
|
R2_ACCESS_KEY_ID=
|
|
R2_SECRET_ACCESS_KEY=
|
|
R2_ENDPOINT=
|
|
R2_REGION=auto
|
|
R2_BUCKET=
|
|
R2_URL=
|
|
|
|
# ============================================
|
|
# Social Platform Credentials
|
|
# ============================================
|
|
# Get your API keys from each platform's developer portal
|
|
|
|
# LinkedIn (https://developer.linkedin.com)
|
|
LINKEDIN_CLIENT_ID=
|
|
LINKEDIN_CLIENT_SECRET=
|
|
LINKEDIN_CLIENT_REDIRECT="${APP_URL}/accounts/linkedin/callback"
|
|
LINKEDIN_PAGE_CLIENT_REDIRECT="${APP_URL}/accounts/linkedin-page/callback"
|
|
|
|
# X / Twitter (https://developer.twitter.com)
|
|
X_CLIENT_ID=
|
|
X_CLIENT_SECRET=
|
|
X_CLIENT_REDIRECT="${APP_URL}/accounts/x/callback"
|
|
|
|
# TikTok (https://developers.tiktok.com)
|
|
TIKTOK_CLIENT_ID=
|
|
TIKTOK_CLIENT_SECRET=
|
|
TIKTOK_CLIENT_REDIRECT="${APP_URL}/accounts/tiktok/callback"
|
|
|
|
# Facebook (https://developers.facebook.com)
|
|
FACEBOOK_CLIENT_ID=
|
|
FACEBOOK_CLIENT_SECRET=
|
|
FACEBOOK_CLIENT_REDIRECT="${APP_URL}/accounts/facebook/callback"
|
|
|
|
# Instagram (https://developers.facebook.com)
|
|
INSTAGRAM_CLIENT_ID=
|
|
INSTAGRAM_CLIENT_SECRET=
|
|
INSTAGRAM_CLIENT_REDIRECT="${APP_URL}/accounts/instagram/callback"
|
|
|
|
# Threads (https://developers.facebook.com)
|
|
THREADS_CLIENT_ID=
|
|
THREADS_CLIENT_SECRET=
|
|
THREADS_CLIENT_REDIRECT="${APP_URL}/accounts/threads/callback"
|
|
|
|
# Google (https://console.cloud.google.com)
|
|
# Used for YouTube social account connection AND Google login/signup
|
|
GOOGLE_CLIENT_ID=
|
|
GOOGLE_CLIENT_SECRET=
|
|
GOOGLE_CLIENT_REDIRECT="${APP_URL}/accounts/youtube/callback"
|
|
GOOGLE_AUTH_CALLBACK="${APP_URL}/auth/google/callback"
|
|
|
|
# Pinterest (https://developers.pinterest.com)
|
|
PINTEREST_CLIENT_ID=
|
|
PINTEREST_CLIENT_SECRET=
|
|
PINTEREST_CLIENT_REDIRECT="${APP_URL}/accounts/pinterest/callback"
|
|
|
|
# AI Services
|
|
OPENAI_API_KEY=
|
|
GEMINI_API_KEY=
|
|
ELEVENLABS_API_KEY=
|
|
ELEVENLABS_DEFAULT_VOICE=EXAVITQu4vr4xnSDxMaL
|
|
|
|
# AI Provider Selection (text: gemini/openai, image: gemini, audio: elevenlabs, video: gemini)
|
|
AI_TEXT_PROVIDER=gemini
|
|
AI_IMAGE_PROVIDER=gemini
|
|
AI_AUDIO_PROVIDER=elevenlabs
|
|
AI_VIDEO_PROVIDER=gemini
|
|
|
|
# Media Services
|
|
UNSPLASH_ACCESS_KEY=
|
|
UNSPLASH_SECRET_KEY=
|
|
GIPHY_API_KEY=
|
|
|
|
# Google Tag Manager (optional - analytics)
|
|
GTM_ID=
|
|
|
|
# PostHog (optional - analytics)
|
|
POSTHOG_API_KEY=
|
|
POSTHOG_HOST=https://us.i.posthog.com
|
|
|
|
# Vite
|
|
VITE_APP_NAME="${APP_NAME}"
|
|
VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
|
|
VITE_REVERB_HOST="${REVERB_HOST}"
|
|
VITE_REVERB_PORT="${REVERB_PORT}"
|
|
VITE_REVERB_SCHEME="${REVERB_SCHEME}"
|
|
VITE_POSTHOG_API_KEY="${POSTHOG_API_KEY}"
|
|
VITE_POSTHOG_HOST="${POSTHOG_HOST}"
|