# Migration Plan: Supabase to Golang VPS ## 1. Project Overview - **Source**: Supabase (Edge Functions, PostgreSQL with RLS, Auth, Storage) - **Target**: Golang (Gin/Echo), Self-hosted PostgreSQL, Nginx, Systemd - **App**: Sojorn (Social Media platform with Beacons/Location features) ## 2. Infrastructure Setup (VPS) - OS: Ubuntu 22.04 LTS - DB: PostgreSQL 15+ with PostGIS, pg_trgm, uuid-ossp - Proxy: Nginx (SSL via Certbot) - Process Manager: Systemd ## 3. Database Migration - [ ] Export schema from Supabase. - [ ] Convert RLS policies to application logic (Go middleware/services). - [ ] Migrate Auth users to a local `users` table (integrating with `profiles`). - [ ] Set up Go migration tool (`golang-migrate`). - [ ] Data migration strategy: Dump and restore, or script-based sync. ## 4. Auth System - [ ] Implement JWT validation (compatible with Supabase or new secret). - [ ] Login/Signup handlers porting. - [ ] Middleware for `auth.uid()` equivalent. ## 5. API Mapping (Functions to Handlers) | Supabase Function | Go Endpoint | Status | |-------------------|-------------|--------| | `signup` | `POST /api/v1/auth/signup` | Pending | | `profile` | `GET /api/v1/profiles/:id` | Pending | | `feed-sojorn` | `GET /api/v1/feed` | Pending | | `publish-post` | `POST /api/v1/posts` | Pending | | `create-beacon` | `POST /api/v1/beacons` | Pending | | `search` | `GET /api/v1/search` | Pending | | ... and more ... | | | ## 6. Implementation Phases ### Phase 1: Preparation - [x] Initial Audit - [ ] VPS Configuration - [ ] Repository Setup (Go scaffolding) ### Phase 2: Core Engine - [ ] Database connection & migrations - [ ] Auth & Middleware - [ ] Shared models & utils ### Phase 3: Feature Porting - [ ] User & Profile management - [ ] Posting & Feed logic - [ ] Beacon (GIS) system - [ ] Notifications (FCM integration) - [ ] E2EE Chat (Session Manager) ### Phase 4: Finalization - [ ] Unit & Integration Tests - [ ] Deployment Scripts - [ ] Cutover Plan ## 7. To-Be-Decided (TBD) - [ ] Request volume and growth expectations. - [ ] VPS specifications. - [ ] Monitoring preferences (Prometheus/Grafana). - [ ] Storage strategy (Local vs S3/R2).