sojorn/go-backend/.env.example
Patrick Britton 3c4680bdd7 Initial commit: Complete threaded conversation system with inline replies
**Major Features Added:**
- **Inline Reply System**: Replace compose screen with inline reply boxes
- **Thread Navigation**: Parent/child navigation with jump functionality
- **Chain Flow UI**: Reply counts, expand/collapse animations, visual hierarchy
- **Enhanced Animations**: Smooth transitions, hover effects, micro-interactions

 **Frontend Changes:**
- **ThreadedCommentWidget**: Complete rewrite with animations and navigation
- **ThreadNode Model**: Added parent references and descendant counting
- **ThreadedConversationScreen**: Integrated navigation handlers
- **PostDetailScreen**: Replaced with threaded conversation view
- **ComposeScreen**: Added reply indicators and context
- **PostActions**: Fixed visibility checks for chain buttons

 **Backend Changes:**
- **API Route**: Added /posts/:id/thread endpoint
- **Post Repository**: Include allow_chain and visibility fields in feed
- **Thread Handler**: Support for fetching post chains

 **UI/UX Improvements:**
- **Reply Context**: Clear indication when replying to specific posts
- **Character Counting**: 500 character limit with live counter
- **Visual Hierarchy**: Depth-based indentation and styling
- **Smooth Animations**: SizeTransition, FadeTransition, hover states
- **Chain Navigation**: Parent/child buttons with visual feedback

 **Technical Enhancements:**
- **Animation Controllers**: Proper lifecycle management
- **State Management**: Clean separation of concerns
- **Navigation Callbacks**: Reusable navigation system
- **Error Handling**: Graceful fallbacks and user feedback

This creates a Reddit-style threaded conversation experience with smooth
animations, inline replies, and intuitive navigation between posts in a chain.
2026-01-30 07:40:19 -06:00

70 lines
2.1 KiB
Plaintext

# Server Configuration
PORT=8080
ENV=development # development, staging, production
LOG_LEVEL=debug # debug, info, warn, error
# Database Configuration
DATABASE_URL=postgres://user:password@localhost:5432/sojorn?sslmode=disable
DB_MAX_CONNS=25
DB_MIN_CONNS=2
DB_MAX_IDLE_TIME=30m
# Authentication
# During transition, use the Supabase JWT secret to validate existing tokens
JWT_SECRET=your-supabase-jwt-secret-here
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-supabase-anon-key
# Security
CORS_ORIGINS=http://localhost:3000,http://localhost:8080
RATE_LIMIT_RPS=10
# Firebase Cloud Messaging (FCM)
# Path to your Firebase service account JSON file
FIREBASE_CREDENTIALS_FILE=/opt/sojorn/firebase-service-account.json
# VAPID key for web push notifications (get from Firebase Console > Cloud Messaging)
FIREBASE_WEB_VAPID_KEY=BNxS7_your_actual_vapid_key_here
# Cloudflare R2 Storage (S3 Compatible)
R2_ACCOUNT_ID=your-cloudflare-account-id
R2_ACCESS_KEY=your-r2-access-key
R2_SECRET_KEY=your-r2-secret-key
R2_BUCKET_IMAGES=sojorn-media
R2_BUCKET_VIDEOS=sojorn-videos
R2_PUBLIC_URL=https://pub-your-id.r2.dev
# External Services
# SMTP_HOST=smtp.gmail.com
# SMTP_PORT=587
# SMTP_USER=your-email
# SMTP_PASS=your-password
# E2EE Backup & Recovery System
# Firebase Storage for encrypted backups
FIREBASE_PROJECT_ID=your-firebase-project-id
FIREBASE_PRIVATE_KEY_ID=your-private-key-id
FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n
FIREBASE_CLIENT_EMAIL=firebase-adminsdk-xyz@your-project.iam.gserviceaccount.com
FIREBASE_CLIENT_ID=123456789
FIREBASE_AUTH_URI=https://accounts.google.com/o/oauth2/auth
FIREBASE_TOKEN_URI=https://oauth2.googleapis.com/token
# Sync Code Configuration
SYNC_CODE_LENGTH=6
SYNC_CODE_EXPIRY_MINUTES=5
SYNC_CODE_MAX_ATTEMPTS=3
SYNC_CODE_MAX_PER_HOUR=5
# Backup Configuration
BACKUP_MAX_VERSIONS=3
BACKUP_MIN_PASSWORD_STRENGTH=3
ARGON2_ITERATIONS=3
ARGON2_MEMORY_KB=65536
ARGON2_PARALLELISM=4
ARGON2_SALT_LENGTH=32
# Social Recovery Configuration
SOCIAL_RECOVERY_THRESHOLD=3
SOCIAL_RECOVERY_SHARES=5
SOCIAL_RECOVERY_DELAY_HOURS=24