# 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)**

---

## Fonctionnalites

**Notes et organisation**
- Notes texte, checklists et Markdown (avec LaTeX/KaTeX)
- Notebooks avec labels contextuels
- Grille masonry responsive avec drag-and-drop
- Upload d'images, partage de notes, archive et corbeille
- 10 themes pastel + mode sombre

**IA et automatisation**
- Recherche semantique par embeddings
- Generation automatique de tags et suggestions de titre
- Agents IA configurables avec instructions personnalisees
- 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

**Integrations**
- Serveur MCP avec **37 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)

```bash
git clone https://github.com/yourusername/Momento.git
cd Momento

cp .env.docker.example .env.docker

# Modifier ces deux valeurs obligatoires :
# NEXTAUTH_URL="http://VOTRE_IP_SERVEUR:3000"
# NEXTAUTH_SECRET="generer avec : openssl rand -base64 32"

docker compose up -d
```

Ouvrir `http://localhost:3000` - le premier utilisateur inscrit devient admin.

### Developpement local

```bash
git clone https://github.com/yourusername/Momento.git
cd Momento/memento-note

cp .env.example .env
# Editer .env avec DATABASE_URL, NEXTAUTH_SECRET, etc.

npm install --legacy-peer-deps
npx prisma migrate dev
npm run dev
```

---

## Providers IA

Memento supporte trois 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` |
| **Custom** | OpenRouter, Groq, Together, Mistral... | Definir `CUSTOM_OPENAI_API_KEY` + `CUSTOM_OPENAI_BASE_URL` |

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"]
    }
  }
}
```

**37 outils disponibles** - CRUD notes, notebooks, labels, operations IA (generation de tags, suggestions de titre, memory echo, batch organize), rappels et gestion des cles API.

Pour N8N ou clients HTTP, utiliser le mode HTTP Streamable : `http://localhost:3001/mcp`

---

## 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, Custom) |
| 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

```
Momento/
├── docker-compose.yml        # Orchestration multi-conteneurs
├── .env.docker.example       # Template environnement Docker
├── 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 (37 outils)
│   ├── index.js              # Mode stdio
│   ├── index-sse.js          # Mode HTTP Streamable
│   ├── tools.js              # Definitions des outils
│   └── 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`) |
| `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/Momento/issues)
- **Idees de fonctionnalites** : [Lancer une discussion](https://github.com/yourusername/Momento/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.
