Files
Momento/README.fr.md
Antigravity 96e7902f01
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m22s
CI / Deploy production (on server) (push) Has been skipped
feat: publication IA (magazine/brief/essay) + fixes critique
Publication IA:
- 4 templates (magazine, brief, essay, simple) avec CSS riche
- Rewrite IA (article/exercises/tutorial/reference/mixed)
- Modération avec timeout 12s + fallback safe
- Quotas publish_enhance par tier (basic=2, pro=15, business=100)
- Détection contenu stale (hash)
- Migration DB publishedContent/publishedTemplate/publishedSourceHash

Fixes:
- cheerio v1.2: Element -> AnyNode (domhandler), decodeEntities cast
- _isShared ajouté au type Note (champ virtuel serveur)
- callout colors PDF export: extraction fonction pure testable
- admin/published: guard note.userId null
- Cmd+S fonctionne en mode dialog (pas seulement fullPage)

i18n:
- 23 clés publish* traduites dans les 15 locales
- Extension Web Clipper: 13 locales mise à jour

Tests:
- callout-colors.test.ts (6 tests)
- note-visible-in-view.test.ts (5 tests)
- entitlements.test.ts + byok-entitlements.test.ts: mock usageLog + unstubAllEnvs
- 199/199 tests passent

Tracker: user-stories.md sync avec sprint-status.yaml
2026-06-28 07:32:57 +00:00

239 lines
7.5 KiB
Markdown

# Memento
Une application de prise de notes intelligente et powered by IA. Comme Google Keep, mais avec des notebooks, la recherche semantique, des agents IA et un serveur MCP integre.
**[Read in English](README.md)** | **[Guide complet](GUIDE.md)** | **[Guide utilisateur (captures)](docs/guide-utilisateur/README.md)**
---
## Fonctionnalites
**Notes et organisation**
- Notes texte riche (style Notion), checklists, Markdown et texte brut
- Notebooks avec labels contextuels
- Grille masonry responsive et vue onglets (style OneNote)
- Upload d'images, partage de notes, archive et corbeille
- 10 themes pastel + mode sombre
- Historique des notes avec restauration de versions
- Reorganisation des cartes par drag-and-drop
**IA et automatisation**
- Recherche semantique par embeddings
- Generation automatique de tags et suggestions de titre
- Agents IA configurables avec instructions personnalisees et planification
- Conversations chat IA persistees
- Memory Echo - decouverte de connexions entre notes
- Organisation automatique par batch et labels intelligents
- Resumes de notebooks generes par IA
- Workflows visuels
- Notifications in-app pour les resultats des agents
**Integrations**
- Serveur MCP avec **22 outils** - connecter Claude Desktop, N8N, ou tout client MCP
- API REST pour integrations personnalisees
- Support de flux RSS
- Tableau blanc Canvas/Lab (Excalidraw)
**Plateforme**
- 15 langues (FR, EN, AR, DE, ES, FA, HI, IT, JA, KO, NL, PL, PT, RU, ZH)
- Progressive Web App (PWA)
- Systeme de rappels avec recurrence
- Export/import de donnees (JSON)
- Panneau admin pour providers IA, SMTP et parametres
---
## Demarrage rapide
### Docker (recommande)
Le script de deploiement interactif s'occupe de tout - configuration, build et demarrage :
```bash
git clone https://github.com/yourusername/Memento.git
cd Memento
# macOS / Linux
./scripts/deploy-docker.sh
# Windows PowerShell
.\scripts\deploy-docker.ps1
```
Le script demande votre `ADMIN_EMAIL` (le premier utilisateur inscrit avec cet email obtient le role ADMIN), le provider IA et d'autres parametres. Les secrets sont generes automatiquement.
Ou manuellement :
```bash
cp .env.docker.example .env.docker
# Editer .env.docker : definir NEXTAUTH_URL, NEXTAUTH_SECRET et ADMIN_EMAIL
docker compose up -d
```
### Developpement local
```bash
git clone https://github.com/yourusername/Memento.git
cd Memento
# macOS / Linux
./scripts/deploy-local.sh
# Windows PowerShell
.\scripts\deploy-local.ps1
```
Ou manuellement :
```bash
cd Memento/memento-note
cp .env.example .env
# Editer .env avec DATABASE_URL, NEXTAUTH_SECRET, ADMIN_EMAIL, etc.
npm install --legacy-peer-deps
npx prisma migrate dev
npm run dev
```
---
## Providers IA
Memento supporte 8 providers IA, configurables independamment pour les tags, embeddings et chat :
| Provider | Type | Configuration |
|----------|------|---------------|
| **Ollama** | Local, gratuit | `docker compose --profile ollama up -d` |
| **OpenAI** | Cloud, payant | Definir `OPENAI_API_KEY` |
| **DeepSeek** | Cloud, payant | Definir `DEEPSEEK_API_KEY` |
| **OpenRouter** | Cloud, payant | Definir `OPENROUTER_API_KEY` |
| **Mistral AI** | Cloud, payant | Definir `MISTRAL_API_KEY` |
| **Z.AI** | Cloud, payant | Definir `ZAI_API_KEY` |
| **LM Studio** | Local, gratuit | Definir `LMSTUDIO_BASE_URL` |
| **Custom** | Toute API compatible OpenAI | Definir base URL + cle API |
Exemple avec Ollama :
```bash
# .env.docker
AI_PROVIDER_TAGS=ollama
AI_PROVIDER_EMBEDDING=ollama
OLLAMA_BASE_URL="http://ollama:11434"
AI_MODEL_TAGS="granite4:latest"
AI_MODEL_EMBEDDING="embeddinggemma:latest"
```
Tous les parametres IA sont aussi configurables depuis le panneau admin `/admin/settings`.
---
## Serveur MCP
Connecter des agents IA a vos notes via le Model Context Protocol.
```json
// claude_desktop_config.json
{
"mcpServers": {
"memento": {
"command": "docker",
"args": ["exec", "-i", "memento-mcp", "node", "index.js"]
}
}
}
```
**22 outils disponibles** - CRUD notes, notebooks, labels, rappels, recherche, export/import. Chaque cle API est scopee a un utilisateur : seules ses notes sont accessibles.
Pour N8N ou clients HTTP, utiliser le mode HTTP Streamable : `http://localhost:3001/mcp` avec le header `x-api-key`.
---
## Stack technique
| Couche | Technologie |
|--------|-------------|
| Framework | Next.js 16, React 19, TypeScript 5 |
| Style | Tailwind CSS 4, shadcn/ui |
| Base de donnees | PostgreSQL 16, Prisma ORM 5 |
| Auth | NextAuth.js v5 |
| IA | Vercel AI SDK (OpenAI, Ollama, DeepSeek, OpenRouter, Mistral, Z.AI, LM Studio) |
| MCP | @modelcontextprotocol/sdk |
| Email | Nodemailer (SMTP) / Resend |
---
## Documentation
Pour le guide complet d'installation, deploiement et configuration, voir **[GUIDE.md](GUIDE.md)**.
---
## Structure du projet
```
Memento/
├── docker-compose.yml # Orchestration multi-conteneurs
├── .env.docker.example # Template environnement Docker
├── scripts/ # Scripts de deploiement
│ ├── deploy-docker.sh # Deploiement Docker (macOS/Linux)
│ ├── deploy-local.sh # Deploiement local (macOS/Linux)
│ ├── deploy-docker.ps1 # Deploiement Docker (Windows)
│ └── deploy-local.ps1 # Deploiement local (Windows)
├── memento-note/ # Application Next.js
│ ├── app/ # App Router (pages, actions, API)
│ ├── components/ # Composants React
│ ├── lib/ # Logique metier (IA, DB, mail, i18n)
│ ├── prisma/ # Schema + migrations
│ ├── locales/ # 15 fichiers i18n
│ └── Dockerfile # Build multi-stage
├── mcp-server/ # Serveur MCP (22 outils)
│ ├── index.js # Mode stdio
│ ├── index-sse.js # Mode HTTP Streamable
│ ├── tools.js # Definitions des outils
│ ├── auth.js # Authentification par cle API
│ └── Dockerfile # Build conteneur
└── n8n-memento-workflow.json # Workflow N8N preconfigure
```
---
## Variables d'environnement
Voir [.env.docker.example](.env.docker.example) pour la liste complete. Variables cles :
| Variable | Requis | Description |
|----------|--------|-------------|
| `NEXTAUTH_URL` | Oui | URL publique de l'app |
| `NEXTAUTH_SECRET` | Oui | Secret JWT (`openssl rand -base64 32`) |
| `ADMIN_EMAIL` | Oui | Email qui obtient automatiquement le role ADMIN a l'inscription |
| `POSTGRES_PASSWORD` | Rec. | Mot de passe PostgreSQL (defaut : `memento`) |
| `AI_PROVIDER_TAGS` | Non | Provider IA pour tags : `ollama`, `openai`, `custom` |
| `OPENAI_API_KEY` | Si OpenAI | Cle API OpenAI |
---
## Contribuer
Les contributions sont bienvenues !
- **Rapports de bugs** : [Ouvrir une issue](https://github.com/yourusername/Memento/issues)
- **Idees de fonctionnalites** : [Lancer une discussion](https://github.com/yourusername/Memento/discussions)
- **Pull requests** : Fork, creer une branche, et soumettre une PR
---
## Soutenir
Si Memento vous est utile, pensez a soutenir son developpement :
- **[Ko-fi](https://ko-fi.com/yourusername)** - Soutien ponctuel ou mensuel
- **[GitHub Sponsors](https://github.com/sponsors/yourusername)** - Parrainage recurrent
- **Star le repo** - C'est gratuit et ca aide la visibilite
---
## Licence
Apache License 2.0 avec Commons Clause Restriction.
Usage personnel, educatif et non-commercial libre. Usage commercial soumis a autorisation ecrite de l'auteur. Voir [LICENSE](LICENSE) pour les details.