sojorn/sojorn_docs/BACKEND_MIGRATION_RUNBOOK.md
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

2.2 KiB

Sojorn Migration Runbook: Supabase to Golang VPS

This document outlines the step-by-step process for cutover from Supabase to the self-hosted Golang engine.

Phase 1: Infrastructure Setup

  1. Provision VPS: Ubuntu 22.04 LTS recommended (2 vCPU, 4GB RAM minimum).
  2. Install Dependencies:
    sudo apt update && sudo apt install -y postgresql postgis nginx certbot python3-certbot-nginx
    
  3. Configure Database:
    • Create sojorn database.
    • Enable extensions: uuid-ossp, pg_trgm, postgis.

Phase 2: Data Migration

  1. Export from Supabase:
    • Use pg_dump to export schema and data from your Supabase project.
    • Alternatively, use the Supabase CSV export for specific tables if the schema changes significantly.
  2. Import to VPS:
    psql -h localhost -U youruser -d sojorn -f supabase_dump.sql
    
  3. Run Go Migrations:
    • The Go backend uses golang-migrate. Ensure the version table is synced if you are not starting from scratch.
    make migrate-up
    

Phase 3: Deployment

  1. Clone & Build:
    git clone <your-repo> /opt/sojorn
    cd /opt/sojorn/go-backend
    go build -o bin/api ./cmd/api/main.go
    
  2. Configure Nginx:
    • Set up reverse proxy to port 8080.
    • Configure SSL with Certbot.
  3. Start Systemd Service:
    sudo ./scripts/deploy.sh
    

Phase 4: Cutover (Zero Downtime Strategy)

  1. Parallel Run: Keep both Supabase and Go VPS running.
  2. DNS Update: Point your API subdomain (e.g., api.gosojorn.com) to the new VPS IP.
  3. TTL Check: Ensure DNS TTL is low (e.g., 300s) before starting.
  4. Monitor: Watch logs for 4xx/5xx errors.
    journalctl -u sojorn-api -f
    

Phase 5: Decommission Supabase

  1. Once traffic has fully shifted and no errors are reported, you can disable Supabase Edge Functions.
  2. Keep the Supabase project active for a week as a backup database if needed.

Rollback Plan

  1. If critical issues occur on the VPS, point the DNS back to the Supabase Edge Functions URL.
  2. Restore any data written to the VPS back to Supabase if necessary (Dual-write during transition is recommended if possible).