## 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.
3.1 KiB
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-imagewith R2 signing support
Shared logic lives in supabase/functions/_shared/ (tone detection, ranking, validation, R2 signing, etc.).
Getting Started (Local)
-
Create a local
.envwith at least:SUPABASE_URLSUPABASE_ANON_KEYAPI_BASE_URL
-
Start Supabase and apply migrations:
supabase start supabase db reset -
Run the Flutter app:
./run_dev.ps1Or run the web build:
./run_web.ps1 -
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.mddocs/SETUP.mddocs/DEPLOYMENT.mddocs/EDGE_FUNCTIONS.mddocs/ARCHITECTURE.mddocs/DESIGN_SYSTEM.mddocs/IMAGE_UPLOAD_IMPLEMENTATION.md
Notes
- The root
.envfile is used byrun_dev.ps1andrun_web.ps1to pass--dart-definevalues into Flutter. - The Supabase functions list is reflected in
deploy_all_functions.ps1. Update it when adding new functions.
License
To be determined.