sojorn/sojorn_docs/deployment/DEPLOYMENT_STEPS.md
Patrick Britton 38653f5854 Sojorn Backend Finalization & Cleanup - Complete Migration from Supabase
##  Phase 1: Critical Feature Completion (Beacon Voting)
- Add VouchBeacon, ReportBeacon, RemoveBeaconVote methods to PostRepository
- Implement beacon voting HTTP handlers with confidence score calculations
- Register new beacon routes: /beacons/:id/vouch, /beacons/:id/report, /beacons/:id/vouch (DELETE)
- Auto-flag beacons at 5+ reports, confidence scoring (0.5 base + 0.1 per vouch)

##  Phase 2: Feed Logic & Post Distribution Integrity
- Verify unified feed logic supports all content types (Standard, Quips, Beacons)
- Ensure proper distribution: Profile Feed + Main/Home Feed for followers
- Beacon Map integration for location-based content
- Video content filtering for Quips feed

##  Phase 3: The Notification System
- Create comprehensive NotificationService with FCM integration
- Add CreateNotification method to NotificationRepository
- Implement smart deep linking: beacon_map, quip_feed, main_feed
- Trigger notifications for beacon interactions and cross-post comments
- Push notification logic with proper content type detection

##  Phase 4: The Great Supabase Purge
- Delete function_proxy.go and remove /functions/:name route
- Remove SupabaseURL, SupabaseKey from config.go
- Remove SupabaseID field from User model
- Clean all Supabase imports and dependencies
- Sanitize codebase of legacy Supabase references

##  Phase 5: Flutter Frontend Integration
- Implement vouchBeacon(), reportBeacon(), removeBeaconVote() in ApiService
- Replace TODO delay in video_comments_sheet.dart with actual publishComment call
- Fix compilation errors (named parameters, orphaned child properties)
- Complete frontend integration with Go API endpoints

##  Additional Improvements
- Fix compilation errors in threaded_comment_widget.dart (orphaned child property)
- Update video_comments_sheet.dart to use proper named parameters
- Comprehensive error handling and validation
- Production-ready notification system with deep linking

##  Migration Status: 100% Complete
- Backend: Fully migrated from Supabase to custom Go/Gin API
- Frontend: Integrated with new Go endpoints
- Notifications: Complete FCM integration with smart routing
- Database: Clean of all Supabase dependencies
- Features: All functionality preserved and enhanced

Ready for VPS deployment and production testing!
2026-01-30 09:24:31 -06:00

2.7 KiB

Deployment Complete

Edge Functions Deployed

All three edge functions have been successfully deployed:

  1. create-beacon - Fixed JWT authentication, now uses standard Supabase pattern
  2. feed-personal - Now filters beacons based on user's beacon_enabled preference
  3. feed-sojorn - Now filters beacons based on user's beacon_enabled preference

Database Migration Required

The beacon_enabled column needs to be added to the profiles table.

Apply Migration via Supabase Dashboard:

  1. Go to: https://supabase.com/dashboard/project/zwkihedetedlatyvplyz/sql
  2. Click "New Query"
  3. Paste the following SQL:
-- Add beacon opt-in preference to profiles table
-- Users must explicitly opt-in to see beacon posts in their feeds

-- Add beacon_enabled column (default FALSE = opted out)
ALTER TABLE profiles ADD COLUMN IF NOT EXISTS beacon_enabled BOOLEAN NOT NULL DEFAULT FALSE;

-- Add index for faster beacon filtering queries
CREATE INDEX IF NOT EXISTS idx_profiles_beacon_enabled ON profiles(beacon_enabled) WHERE beacon_enabled = TRUE;

-- Add comment to explain the column
COMMENT ON COLUMN profiles.beacon_enabled IS 'Whether user has opted into viewing Beacon Network posts in their feeds. Beacons are always visible on the Beacon map regardless of this setting.';
  1. Click "Run"
  2. Verify success - you should see "Success. No rows returned"

What This Fixes

Before:

  • Beacon creation failed with JWT authentication error
  • All users saw beacon posts in their feeds (no opt-out)

After:

  • Beacon creation works properly with automatic JWT validation
  • Users are opted OUT by default (beacon_enabled = FALSE)
  • Beacons only appear in feeds for users who opt in
  • Beacon map always shows all beacons regardless of preference

Testing

After applying the migration:

  1. Test Beacon Creation:

    • Open Beacon Network tab
    • Tap on map to drop a beacon
    • Fill out the form and submit
    • Should succeed without JWT errors
  2. Test Feed Filtering (Opted Out - Default):

    • Check Following feed - should NOT see beacon posts
    • Check Sojorn feed - should NOT see beacon posts
    • Open Beacon map - SHOULD see all beacons
  3. Test Feed Filtering (Opted In):

    • Manually update your profile: UPDATE profiles SET beacon_enabled = TRUE WHERE id = '<your-user-id>';
    • Check Following feed - SHOULD see beacon posts
    • Check Sojorn feed - SHOULD see beacon posts

Next Steps

To add UI for users to toggle beacon opt-in:

  1. Add a settings screen
  2. Add a switch for "Show Beacon Alerts in Feeds"
  3. Call API service to update profiles.beacon_enabled

Documentation

See detailed architecture documentation: