sojorn/sojorn_docs/legacy/LEGACY_README.md
Patrick Britton b9351b76ae Reframe Sojorn as Friends-First Social Network
## Remove All 'Calm' References & Reframe Platform Identity

###  Documentation Updates
- **Deleted**: CALM_UX_GUIDE.md (outdated philosophy document)
- **Updated**: All documentation to remove 'calm' terminology
- **Reframed**: Platform as 'friends-first' instead of 'calm'

###  Design System Changes
- Replace 'calm & elegant' with 'warm & welcoming'
- Update theme descriptions to focus on friendliness
- Change 'calm velocity' to 'authentic engagement'
- Update UI microcopy for friendly tone

###  Content Updates
- Philosophy documents reframe for social connection focus
- Design guides emphasize warmth over calmness
- API documentation updated for new terminology
- User-facing text changed to friendly language

###  Key Terminology Changes
- 'Calm design'  'Warm, welcoming design'
- 'Calm velocity'  'Authentic engagement'
- 'Calm UI'  'Friendly UI'
- 'Structural calm'  'Structural friendliness'
- 'Calm platform'  'Friends-first platform'

###  Platform Focus Shift
- From: Text-based calm platform
- To: Friends-first social network prioritizing genuine connections
- Emphasis on social connection over mindfulness
- Focus on warmth and friendliness in design

###  Files Modified
- 15+ documentation files updated
- Flutter app UI text updated
- Design system rebranded
- Philosophy documents reframed
- API documentation updated

The platform is now positioned as a warm, welcoming social network that prioritizes genuine human connections over calm minimalism.
2026-01-30 09:49:36 -06:00

3.1 KiB

sojorn

sojorn is a friends-first, consent-first social platform built to foster genuine connections and reduce hostility by design. The project pairs a Flutter client with a Go backend that enforces tone gating, mutual-consent conversations, and trust-aware ranking.

Product Principles

  • Friendliness 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:

    supabase start
    supabase db reset
    
  3. Run the Flutter app:

    ./run_dev.ps1
    

    Or run the web build:

    ./run_web.ps1
    
  4. Deploy Edge Functions when needed:

    ./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.