Sfoglia il codice sorgente

Update README with multi-workspace support

Documents workspaces feature: what is isolated per workspace, what is shared
globally, how to manage workspaces, and the technical architecture overview.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Benjamin Harris 3 settimane fa
parent
commit
f0537e4d32
1 ha cambiato i file con 41 aggiunte e 0 eliminazioni
  1. 41 0
      README.md

+ 41 - 0
README.md

@@ -27,6 +27,7 @@ A self-hosted, local-first social media management platform. Aggregate feeds fro
 - **Token Expiry Warnings** — Dashboard banner when Meta tokens are within 7 days of expiry; auto-refresh via daily BullMQ job
 - **Token Expiry Warnings** — Dashboard banner when Meta tokens are within 7 days of expiry; auto-refresh via daily BullMQ job
 - **Token Encryption** — OAuth tokens and API keys stored AES-256-GCM encrypted at rest
 - **Token Encryption** — OAuth tokens and API keys stored AES-256-GCM encrypted at rest
 - **Structured Logging** — Pino JSON logging across all services with consistent fields
 - **Structured Logging** — Pino JSON logging across all services with consistent fields
+- **Multi-Workspace Support** — Create isolated workspaces for separate brands, clients, or projects; each workspace has its own connected platforms, profiles, drafts, posts, analytics, and competitor data; switch workspaces from the NavBar without logging out
 - **Multi-language UI** — English and Turkish built-in; adding a new language is a single file
 - **Multi-language UI** — English and Turkish built-in; adding a new language is a single file
 - **Microservices** — Each platform is an independent service, easy to add or remove
 - **Microservices** — Each platform is an independent service, easy to add or remove
 - **Fully local** — No SaaS, no subscriptions. Runs entirely on your machine via Docker
 - **Fully local** — No SaaS, no subscriptions. Runs entirely on your machine via Docker
@@ -385,6 +386,46 @@ The key is stored AES-256-GCM encrypted in MongoDB. Once configured, the **Find
 
 
 ---
 ---
 
 
+## Workspaces
+
+Workspaces let you run multiple independent social media presences from the same SocialManager instance — separate brands, agencies managing client accounts, or personal vs. business use.
+
+### What is isolated per workspace
+
+Each workspace has its own:
+
+- Connected platform accounts (Meta pages, Instagram accounts, Pinterest boards, TikTok)
+- Account profile and workspace business profile
+- Drafts, scheduled posts, and post history
+- Analytics, post metrics, and engagement data
+- Competitor tracking, hashtag groups, and hashtag stats
+- Media library files
+- Content calendars and bulk draft batches
+
+### What is shared across all workspaces
+
+Global credentials set in **Global Settings** (`/global-settings`) are shared:
+
+- AI provider API keys (OpenAI, Groq, Gemini, Ollama)
+- Meta App ID + Secret (Facebook Developer App)
+- Pinterest App Client ID + Secret
+- TikTok Client Key + Secret
+- Google Places API key
+
+### Managing workspaces
+
+1. Click the workspace indicator in the **NavBar** (top-left, shows the current workspace name)
+2. Select a workspace to switch to it — all stores immediately re-fetch with the new workspace context
+3. Click **Manage** to open **Settings → Workspaces** where you can create, rename, or delete workspaces
+
+> **Note:** The `default` workspace cannot be deleted. Deleting a workspace permanently removes all its scoped data.
+
+### How it works technically
+
+Every API request carries an `X-Workspace-Id` header set by the Pinia `useWorkspaceStore`. The gateway reads this header and scopes all database reads/writes to that workspace. Platform service calls pass the header through so feed fetches and posts are also workspace-aware.
+
+---
+
 ## Adding a New Language
 ## Adding a New Language
 
 
 1. Create `ui/src/locales/xx.ts` (copy `en.ts` and translate)
 1. Create `ui/src/locales/xx.ts` (copy `en.ts` and translate)