sojorn/sojorn_docs/legacy/LEGACY_README.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

96 lines
3.1 KiB
Markdown

# sojorn
sojorn is a calm, consent-first social platform built to slow attention and reduce hostility by design. The project pairs a Flutter client with a Supabase backend and Edge Functions that enforce tone gating, mutual-consent conversations, and trust-aware ranking.
## Product Principles
- Calm is structural, not performative.
- Hostility is contained; clean content remains visible.
- Exposure is opt-in, filtering is private, and blocking is absolute.
- Conversation requires mutual consent (mutual follow).
- Attention is non-possessive: feeds rotate and trends fade.
- Transparency is a feature: reach rules are explainable.
## Tech Stack
- **Client:** Flutter (mobile + web) in `sojorn_app/`
- **Backend:** Supabase (Postgres, Auth, RLS, Edge Functions) in `supabase/`
- **Media:** Cloudflare R2 signing for uploads/downloads
- **Tooling:** PowerShell helpers for dev and deployment
## What Lives Here
```
sojorn/
docs/ Architecture, setup, and deployment guides
sojorn_app/ Flutter app (mobile + web)
supabase/ Database + Edge Functions
troubleshooting/ Notes and fixes for common issues
.env Local secrets for dev scripts
run_dev.ps1 Run Flutter app with .env defines (device)
run_web.ps1 Run Flutter app in Chrome with .env defines
deploy_all_functions.ps1 Deploy all Edge Functions to Supabase
import requests.py Standalone API test script
test_r2_credentials.js Quick R2 credential check
```
## Backend Capabilities (Edge Functions)
- **Publishing:** `publish-post`, `publish-comment`, `manage-post`
- **Feeds:** `feed-personal`, `feed-sojorn`, `trending`
- **Moderation & Trust:** `tone-check`, `report`, `calculate-harmony`
- **Social Graph:** `follow`, `block`, `save`, `appreciate`
- **Profiles & Auth:** `signup`, `profile`, `profile-posts`, `delete-account`, `deactivate-account`
- **Notifications & Beacons:** `notifications`, `create-beacon`
- **Media:** `upload-image` with R2 signing support
Shared logic lives in `supabase/functions/_shared/` (tone detection, ranking, validation, R2 signing, etc.).
## Getting Started (Local)
1. **Create a local `.env`** with at least:
- `SUPABASE_URL`
- `SUPABASE_ANON_KEY`
- `API_BASE_URL`
2. **Start Supabase and apply migrations:**
```bash
supabase start
supabase db reset
```
3. **Run the Flutter app:**
```bash
./run_dev.ps1
```
Or run the web build:
```bash
./run_web.ps1
```
4. **Deploy Edge Functions when needed:**
```bash
./deploy_all_functions.ps1
```
For detailed setup, seeding, and troubleshooting, see the docs listed below.
## Key Docs
- `docs/QUICK_START.md`
- `docs/SETUP.md`
- `docs/DEPLOYMENT.md`
- `docs/EDGE_FUNCTIONS.md`
- `docs/ARCHITECTURE.md`
- `docs/DESIGN_SYSTEM.md`
- `docs/IMAGE_UPLOAD_IMPLEMENTATION.md`
## Notes
- The root `.env` file is used by `run_dev.ps1` and `run_web.ps1` to pass `--dart-define` values into Flutter.
- The Supabase functions list is reflected in `deploy_all_functions.ps1`. Update it when adding new functions.
## License
To be determined.