diff --git a/README.md b/README.md index 8656baa..4788727 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# excalidraw-go +# Excalicloud Excalidraw auto-hébergé avec un **gestionnaire de fichiers intégré** : arborescence de dossiers, **vignettes des schémas**, création, renommage, **sélection et déplacement multiples** (glisser-déposer ou dialogue « Déplacer vers… »), duplication, suppression (corbeille), **recherche plein texte** (noms et contenu des schémas), **tags**, **espace personnel et favoris par utilisateur**, **partage en lecture seule par lien signé**, import/export de fichiers `.excalidraw`, sauvegarde automatique côté serveur, **historique des versions** avec comparaison visuelle et restauration, **serveur MCP** pour que Claude lise et crée des schémas (jetons d'API personnels et OAuth). Interface web unique, responsive (l'explorateur devient un tiroir sur mobile). @@ -12,7 +12,7 @@ Excalidraw auto-hébergé avec un **gestionnaire de fichiers intégré** : arbor ## Architecture ``` -Navigateur ──HTTP──▶ conteneur excalidraw-go (:8080, uid 65532, rootfs read-only) +Navigateur ──HTTP──▶ conteneur excalicloud (:8080, uid 65532, rootfs read-only) ├─ / SPA React + Excalidraw (embarquée dans le binaire) ├─ /api/... API fichiers (Go net/http) ├─ /s/ schéma partagé en lecture seule (hors authentification) @@ -371,6 +371,6 @@ frontend/src/ApiAccess.tsx paramètres : adresse MCP, jetons personnels et conn ## Licence / License -**Français.** Le code d'excalidraw-go est publié sous licence MIT : voir [`LICENSE`](LICENSE) (texte qui fait foi, en anglais) et sa traduction informative [`LICENSE.fr.md`](LICENSE.fr.md). Ce projet est indépendant : il n'est ni affilié à Excalidraw ou Excalidraw s.r.o., ni approuvé ou soutenu par eux. « Excalidraw » est une marque de son titulaire, citée uniquement pour indiquer la compatibilité. Le projet intègre et redistribue des composants tiers sous leurs propres licences, notamment Excalidraw (MIT), les icônes Tabler (MIT) et les polices fournies avec Excalidraw (SIL Open Font License 1.1, MIT) : la liste complète et les notices figurent dans [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md). +**Français.** Le code d'Excalicloud est publié sous licence MIT : voir [`LICENSE`](LICENSE) (texte qui fait foi, en anglais) et sa traduction informative [`LICENSE.fr.md`](LICENSE.fr.md). Ce projet est indépendant : il n'est ni affilié à Excalidraw ou Excalidraw s.r.o., ni approuvé ou soutenu par eux. « Excalidraw » est une marque de son titulaire, citée uniquement pour indiquer la compatibilité. Le projet intègre et redistribue des composants tiers sous leurs propres licences, notamment Excalidraw (MIT), les icônes Tabler (MIT) et les polices fournies avec Excalidraw (SIL Open Font License 1.1, MIT) : la liste complète et les notices figurent dans [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md). -**English.** excalidraw-go is released under the MIT License: see [`LICENSE`](LICENSE). This is an independent project, not affiliated with, endorsed by or sponsored by Excalidraw or Excalidraw s.r.o. "Excalidraw" is a trademark of its owner, used only to describe compatibility. The project embeds and redistributes third-party components under their own licenses, including Excalidraw (MIT), Tabler Icons (MIT) and the fonts shipped with Excalidraw (SIL Open Font License 1.1, MIT): see [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md) for the full list and notices. +**English.** Excalicloud is released under the MIT License: see [`LICENSE`](LICENSE). This is an independent project, not affiliated with, endorsed by or sponsored by Excalidraw or Excalidraw s.r.o. "Excalidraw" is a trademark of its owner, used only to describe compatibility. The project embeds and redistributes third-party components under their own licenses, including Excalidraw (MIT), Tabler Icons (MIT) and the fonts shipped with Excalidraw (SIL Open Font License 1.1, MIT): see [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md) for the full list and notices. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 7e1d4fa..22b8ae4 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -6,7 +6,7 @@ ## English -This project (excalidraw-go / Excalicloud) is an independent project. It is **not affiliated with, endorsed by or sponsored by Excalidraw** or Excalidraw s.r.o. "Excalidraw" is a trademark of its owner and is used here only to describe compatibility: this project embeds the open source [`@excalidraw/excalidraw`](https://www.npmjs.com/package/@excalidraw/excalidraw) component. +This project (Excalicloud) is an independent project. It is **not affiliated with, endorsed by or sponsored by Excalidraw** or Excalidraw s.r.o. "Excalidraw" is a trademark of its owner and is used here only to describe compatibility: this project embeds the open source [`@excalidraw/excalidraw`](https://www.npmjs.com/package/@excalidraw/excalidraw) component. The project's own code is released under the MIT License (see [`LICENSE`](LICENSE)). The Docker image and the Go binary also redistribute the third-party components listed below, each under its own license. @@ -119,7 +119,7 @@ The final Docker image is based on `gcr.io/distroless/static-debian12` (Apache-2 ## Français -Ce projet (excalidraw-go / Excalicloud) est un projet indépendant. Il **n'est ni affilié à Excalidraw ou Excalidraw s.r.o., ni approuvé ou soutenu par eux**. « Excalidraw » est une marque de son titulaire, citée ici uniquement pour décrire la compatibilité : le projet intègre le composant open source [`@excalidraw/excalidraw`](https://www.npmjs.com/package/@excalidraw/excalidraw). +Ce projet (Excalicloud) est un projet indépendant. Il **n'est ni affilié à Excalidraw ou Excalidraw s.r.o., ni approuvé ou soutenu par eux**. « Excalidraw » est une marque de son titulaire, citée ici uniquement pour décrire la compatibilité : le projet intègre le composant open source [`@excalidraw/excalidraw`](https://www.npmjs.com/package/@excalidraw/excalidraw). Le code propre au projet est publié sous licence MIT (voir [`LICENSE`](LICENSE), traduction informative dans [`LICENSE.fr.md`](LICENSE.fr.md)). L'image Docker et le binaire Go redistribuent aussi les composants tiers suivants, chacun sous sa propre licence. Les textes de licence reproduits dans la section anglaise ci-dessus sont ceux qui font foi. diff --git a/cmd/server/main.go b/cmd/server/main.go index 0c769fd..54d86ed 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -20,13 +20,13 @@ import ( "syscall" "time" - "github.com/vblogio/excalidraw-go/internal/api" - "github.com/vblogio/excalidraw-go/internal/auth" - "github.com/vblogio/excalidraw-go/internal/mcp" - "github.com/vblogio/excalidraw-go/internal/storage" - "github.com/vblogio/excalidraw-go/internal/tokens" - "github.com/vblogio/excalidraw-go/internal/update" - "github.com/vblogio/excalidraw-go/web" + "github.com/vblogio/excalicloud/internal/api" + "github.com/vblogio/excalicloud/internal/auth" + "github.com/vblogio/excalicloud/internal/mcp" + "github.com/vblogio/excalicloud/internal/storage" + "github.com/vblogio/excalicloud/internal/tokens" + "github.com/vblogio/excalicloud/internal/update" + "github.com/vblogio/excalicloud/web" ) func env(key, def string) string { diff --git a/docker-compose.yml b/docker-compose.yml index 1fe0819..9949153 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: # Vide : version figée dans frontend/package-lock.json. Renseignée (dans .env # ou en ligne de commande), l'image est reconstruite avec cette version. EXCALIDRAW_VERSION: ${EXCALIDRAW_VERSION:-} - image: excalidraw-go:local + image: excalicloud:local restart: unless-stopped # ports: # - "${EXCALIDRAW_PORT:-8080}:8080" diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c77d592..0017cc4 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,11 +1,11 @@ { - "name": "excalidraw-go-frontend", + "name": "excalicloud-frontend", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "excalidraw-go-frontend", + "name": "excalicloud-frontend", "version": "0.1.0", "dependencies": { "@excalidraw/excalidraw": "0.18.1", diff --git a/frontend/package.json b/frontend/package.json index bd02304..9edc7da 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,5 +1,5 @@ { - "name": "excalidraw-go-frontend", + "name": "excalicloud-frontend", "private": true, "version": "0.1.0", "type": "module", diff --git a/frontend/src/Explorer.tsx b/frontend/src/Explorer.tsx index 0ef0582..1ae6490 100644 --- a/frontend/src/Explorer.tsx +++ b/frontend/src/Explorer.tsx @@ -59,7 +59,7 @@ import { Thumb } from "./Thumb"; export const EMPTY_SCENE = JSON.stringify({ type: "excalidraw", version: 2, - source: "excalidraw-go", + source: "excalicloud", elements: [], appState: {}, files: {}, diff --git a/go.mod b/go.mod index 6fd09c1..8020a20 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ -module github.com/vblogio/excalidraw-go +module github.com/vblogio/excalicloud go 1.24.7 diff --git a/internal/api/api.go b/internal/api/api.go index 16e153b..64bd0d9 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -48,8 +48,8 @@ import ( "strings" "time" - "github.com/vblogio/excalidraw-go/internal/storage" - "github.com/vblogio/excalidraw-go/internal/update" + "github.com/vblogio/excalicloud/internal/storage" + "github.com/vblogio/excalicloud/internal/update" ) // Handler regroupe les routes de l'API. diff --git a/internal/api/api_test.go b/internal/api/api_test.go index 637d346..da86466 100644 --- a/internal/api/api_test.go +++ b/internal/api/api_test.go @@ -7,7 +7,7 @@ import ( "strings" "testing" - "github.com/vblogio/excalidraw-go/internal/storage" + "github.com/vblogio/excalicloud/internal/storage" ) const doc = `{"type":"excalidraw","version":2,"elements":[]}` diff --git a/internal/mcp/mcp.go b/internal/mcp/mcp.go index 7fc196b..1ba3e09 100644 --- a/internal/mcp/mcp.go +++ b/internal/mcp/mcp.go @@ -13,7 +13,7 @@ import ( "net/http" "slices" - "github.com/vblogio/excalidraw-go/internal/storage" + "github.com/vblogio/excalicloud/internal/storage" ) // Versions du protocole acceptées, la plus récente d'abord. diff --git a/internal/mcp/mcp_test.go b/internal/mcp/mcp_test.go index adfccdf..81608fd 100644 --- a/internal/mcp/mcp_test.go +++ b/internal/mcp/mcp_test.go @@ -7,7 +7,7 @@ import ( "strings" "testing" - "github.com/vblogio/excalidraw-go/internal/storage" + "github.com/vblogio/excalicloud/internal/storage" ) func newServer(t *testing.T) http.Handler { diff --git a/internal/mcp/tools.go b/internal/mcp/tools.go index 158dfbf..b94aafd 100644 --- a/internal/mcp/tools.go +++ b/internal/mcp/tools.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/vblogio/excalidraw-go/internal/storage" + "github.com/vblogio/excalicloud/internal/storage" ) const instructions = `Excalicloud stocke des schémas Excalidraw (.excalidraw) dans une arborescence de dossiers partagée entre les utilisateurs. diff --git a/internal/storage/settings.go b/internal/storage/settings.go index 31b4e43..2dad337 100644 --- a/internal/storage/settings.go +++ b/internal/storage/settings.go @@ -15,7 +15,7 @@ import ( "strings" "unicode/utf8" - "github.com/vblogio/excalidraw-go/internal/update" + "github.com/vblogio/excalicloud/internal/update" ) // Paramètres de l'interface (titre, logo, canal d'Excalidraw) et rétention de diff --git a/internal/tokens/http.go b/internal/tokens/http.go index 93eaada..805dffb 100644 --- a/internal/tokens/http.go +++ b/internal/tokens/http.go @@ -8,7 +8,7 @@ import ( "net/url" "strings" - "github.com/vblogio/excalidraw-go/internal/auth" + "github.com/vblogio/excalicloud/internal/auth" ) // Server expose les jetons en HTTP : authentification Bearer, gestion des diff --git a/internal/tokens/oauth.go b/internal/tokens/oauth.go index 1c2a1b3..c0aed47 100644 --- a/internal/tokens/oauth.go +++ b/internal/tokens/oauth.go @@ -14,7 +14,7 @@ import ( "sync" "time" - "github.com/vblogio/excalidraw-go/internal/auth" + "github.com/vblogio/excalicloud/internal/auth" ) // Serveur d'autorisation OAuth 2.1 minimal, pour les clients MCP qui ne savent diff --git a/internal/tokens/tokens.go b/internal/tokens/tokens.go index 2fd2748..932b80a 100644 --- a/internal/tokens/tokens.go +++ b/internal/tokens/tokens.go @@ -22,7 +22,7 @@ import ( "time" "unicode/utf8" - "github.com/vblogio/excalidraw-go/internal/auth" + "github.com/vblogio/excalicloud/internal/auth" ) const ( diff --git a/internal/tokens/tokens_test.go b/internal/tokens/tokens_test.go index 4d0ad11..6f1a146 100644 --- a/internal/tokens/tokens_test.go +++ b/internal/tokens/tokens_test.go @@ -12,7 +12,7 @@ import ( "testing" "time" - "github.com/vblogio/excalidraw-go/internal/auth" + "github.com/vblogio/excalicloud/internal/auth" ) // newServer monte le serveur de jetons devant un mux de test : /whoami