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

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

**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, 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 (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`) |
| `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.
