Documentation de référence SomCraft — DMS Markdown-native avec AI, MCP server, et Studio. À consulter pour toute question sur l'architecture, les APIs, les concepts, ou l'exploitation d'une instance SomCraft. TRIGGERS : somcraft, dms, document management, workspace somcraft, studio somcraft, mcp somcraft, api somcraft
SomCraft est un Document Management System (DMS) Markdown-first développé par Somtech Solutions. Ce skill documente son architecture, ses concepts, ses APIs, et les patterns d'exploitation.
Pour la doc spécifique à une instance client déployée, voir le skill somcraft-{client} dans le projet courant (s'il existe).
Ce que fait SomCraft :
Stack technique :
Structure monorepo :
somcraft/
├── apps/
│ └── web/ # Next.js app principale
│ ├── app/ # Routes App Router
│ ├── lib/ # AI client, export, MCP server
│ └── middleware.ts
├── packages/
│ ├── core/ # Types, Supabase client, constants
│ ├── editor/ # Composant MarkdownEditor + AI Chat + Studio
│ ├── files/ # FileManager + hooks + store Zustand
│ ├── db/ # CLI migrations
│ └── sync/ # Sync engine filesystem ↔ Supabase
└── supabase/
└── migrations/ # Schema PostgreSQL
Pour le détail, voir references/concepts.md.
sc_document_versions).Pour le détail, voir references/architecture.md.
Tables principales :
sc_workspaces — id, name, slug, storage_bucket, api_key, created_bysc_documents — id, workspace_id, parent_id, type (file|folder), filename, path, storage_key, status, tags, metadatasc_document_versions — id, document_id, version_number, storage_key, checksum, created_atsc_workspace_members — workspace_id, user_id, role (viewer|editor|admin)sc_recent_activity — activity log (viewed|edited|uploaded)RLS : Toutes les tables sc_* ont des policies basées sur auth.uid() et la membership dans sc_workspace_members.
Pour le détail, voir references/api-reference.md.
Endpoints principaux (tous sous /api/sc/) :
GET/POST /api/sc/workspaces — Liste/créer workspacesGET/POST /api/sc/documents?workspace_id=X — Liste/créer documentsGET/PUT /api/sc/documents/{id} — Lire/modifier un documentGET /api/sc/documents/{id}/content — Contenu Markdown brutGET /api/sc/documents/{id}/export?format=pdf — Export PDF/DOCXPOST /api/sc/ai/chat — Chat avec le document comme contextePOST /api/sc/ai/transform — Transformation ponctuelle (résumé, traduction, etc.)POST /api/sc/studio/generate — Pipeline Studio (SSE streaming)Format de réponse : { "data": ... } ou { "data": ..., "next_cursor": ... } pour les listes.
Auth : Bearer token (Supabase JWT) dans le header Authorization, ou cookies Supabase pour les sessions navigateur.
Pour le détail, voir references/api-reference.md.
Endpoint : POST /api/mcp/mcp avec Authorization: Bearer {api_key} et Accept: application/json, text/event-stream.
9 tools disponibles :
list_workspaces — Lister les workspaces accessibleslist_documents — Lister documents dans un workspace (filtrable par parent, status)read_document — Lire contenu + métadonnéeswrite_document — Créer/mettre à jour un .md (crée les dossiers parents si besoin)search_documents — Recherche full-textcreate_folder — Créer un dossier (récursif)move_document — Déplacer un fichier/dossierexport_document — Export vers PDF/DOCX, retourne URL signéegenerate_document — Pipeline Studio pour génération structuréePour le détail, voir references/security.md.
sc_*sc_workspaces.api_key (format sk_live_<64-hex>)Pour le détail, voir references/troubleshooting.md.
Problèmes communs :
SELECT * FROM pg_policies WHERE tablename LIKE 'sc_%') et que le user est bien membreANTHROPIC_API_KEY, vérifier les logs du pipelinesc_workspaces.api_key et qu'elle est passée en Bearer.mcp.jsonsc_workspaces + créer bucket storage + INSERT membre adminUPDATE sc_workspaces SET api_key = 'sk_live_...' WHERE id = ...SELECT * FROM sc_documents WHERE workspace_id = ? ORDER BY created_at DESCUPDATE sc_documents SET status = 'active' WHERE id = ? AND status = 'trashed'Pour des opérations spécifiques à un client déployé, utiliser le skill somcraft-{client} du projet courant.