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

60 lines
2.2 KiB
Markdown

# 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**:
```bash
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**:
```bash
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.
```bash
make migrate-up
```
## Phase 3: Deployment
1. **Clone & Build**:
```bash
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**:
```bash
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.
```bash
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).