Files
Momento/README.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.1 KiB
Markdown

# Memento
A smart, AI-powered note-taking app. Like Google Keep, but with notebooks, semantic search, AI agents, and a built-in MCP server.
**[Lire en francais / Read in French](README.fr.md)** | **[Full documentation](GUIDE.en.md)**
---
## Features
**Notes & Organization**
- Rich text (Notion-like), checklist, Markdown, and plain text notes
- Notebooks with contextual labels
- Responsive masonry grid and tabs (OneNote-style) view
- Image upload, note sharing, archive, and trash
- 10 pastel color themes + dark mode
- Note history with version restore
- Drag-and-drop card reordering
**AI & Automation**
- Semantic search powered by embeddings
- Auto-generated tags and title suggestions
- Configurable AI agents with custom instructions and scheduling
- Persistent AI chat conversations
- Memory Echo - discover hidden connections between notes
- Batch auto-organization and smart labels
- AI-generated notebook summaries
- Visual workflow builder
- In-app notifications for agent results
**Integrations**
- MCP Server with **22 tools** - connect Claude Desktop, N8N, or any MCP client
- REST API for custom integrations
- RSS feed support
- Canvas/Lab whiteboard (Excalidraw)
**Platform**
- 15 languages (EN, FR, AR, DE, ES, FA, HI, IT, JA, KO, NL, PL, PT, RU, ZH)
- Progressive Web App (PWA)
- Reminder system with recurrence
- Data export/import (JSON)
- Admin panel for AI providers, SMTP, and settings
---
## Quick Start
### Docker (recommended)
The interactive deploy script handles everything - environment config, container build, and startup:
```bash
git clone https://github.com/yourusername/Memento.git
cd Memento
# macOS / Linux
./scripts/deploy-docker.sh
# Windows PowerShell
.\scripts\deploy-docker.ps1
```
The script will ask for your `ADMIN_EMAIL` (the first user registered with this email gets ADMIN role), AI provider, and other settings. It auto-generates secrets.
Or manually:
```bash
cp .env.docker.example .env.docker
# Edit .env.docker: set NEXTAUTH_URL, NEXTAUTH_SECRET, and ADMIN_EMAIL
docker compose up -d
```
### Local Development
```bash
git clone https://github.com/yourusername/Memento.git
cd Memento
# macOS / Linux
./scripts/deploy-local.sh
# Windows PowerShell
.\scripts\deploy-local.ps1
```
Or manually:
```bash
cd Memento/memento-note
cp .env.example .env
# Edit .env with your DATABASE_URL, NEXTAUTH_SECRET, ADMIN_EMAIL, etc.
npm install --legacy-peer-deps
npx prisma migrate dev
npm run dev
```
---
## AI Providers
Memento supports 8 AI providers, configurable independently for tags, embeddings, and chat:
| Provider | Type | Setup |
|----------|------|-------|
| **Ollama** | Local, free | `docker compose --profile ollama up -d` |
| **OpenAI** | Cloud, paid | Set `OPENAI_API_KEY` |
| **DeepSeek** | Cloud, paid | Set `DEEPSEEK_API_KEY` |
| **OpenRouter** | Cloud, paid | Set `OPENROUTER_API_KEY` |
| **Mistral AI** | Cloud, paid | Set `MISTRAL_API_KEY` |
| **Z.AI** | Cloud, paid | Set `ZAI_API_KEY` |
| **LM Studio** | Local, free | Set `LMSTUDIO_BASE_URL` |
| **Custom** | Any OpenAI-compatible API | Set base URL + API key |
Example for 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"
```
All AI settings can also be configured from the admin panel at `/admin/settings`.
---
## MCP Server
Connect AI agents to your notes via the Model Context Protocol.
```json
// claude_desktop_config.json
{
"mcpServers": {
"memento": {
"command": "docker",
"args": ["exec", "-i", "memento-mcp", "node", "index.js"]
}
}
}
```
**22 tools available** - notes CRUD, notebooks, labels, reminders, search, export/import. Each API key is scoped to a user so only their notes are accessible.
For N8N or HTTP clients, use Streamable HTTP mode: `http://localhost:3001/mcp` with `x-api-key` header auth.
---
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Framework | Next.js 16, React 19, TypeScript 5 |
| Styling | Tailwind CSS 4, shadcn/ui |
| Database | PostgreSQL 16, Prisma ORM 5 |
| Auth | NextAuth.js v5 |
| AI | Vercel AI SDK (OpenAI, Ollama, DeepSeek, OpenRouter, Mistral, Z.AI, LM Studio) |
| MCP | @modelcontextprotocol/sdk |
| Email | Nodemailer (SMTP) / Resend |
---
## Documentation
For the complete installation, deployment, and configuration guide, see **[GUIDE.en.md](GUIDE.en.md)**.
---
## Project Structure
```
Memento/
├── docker-compose.yml # Multi-container orchestration
├── .env.docker.example # Docker environment template
├── scripts/ # Deployment scripts
│ ├── deploy-docker.sh # Docker deploy (macOS/Linux)
│ ├── deploy-local.sh # Local deploy (macOS/Linux)
│ ├── deploy-docker.ps1 # Docker deploy (Windows)
│ └── deploy-local.ps1 # Local deploy (Windows)
├── memento-note/ # Next.js application
│ ├── app/ # App Router (pages, actions, API)
│ ├── components/ # React UI components
│ ├── lib/ # Business logic (AI, DB, mail, i18n)
│ ├── prisma/ # Schema + migrations
│ ├── locales/ # 15 i18n JSON files
│ └── Dockerfile # Multi-stage build
├── mcp-server/ # MCP server (22 tools)
│ ├── index.js # stdio mode
│ ├── index-sse.js # HTTP Streamable mode
│ ├── tools.js # Tool definitions
│ ├── auth.js # API key authentication
│ └── Dockerfile # Container build
└── n8n-memento-workflow.json # Pre-configured N8N workflow
```
---
## Environment Variables
See [.env.docker.example](.env.docker.example) for the complete list. Key variables:
| Variable | Required | Description |
|----------|----------|-------------|
| `NEXTAUTH_URL` | Yes | Public URL of the app |
| `NEXTAUTH_SECRET` | Yes | JWT secret (`openssl rand -base64 32`) |
| `ADMIN_EMAIL` | Yes | Email that automatically gets ADMIN role on registration |
| `POSTGRES_PASSWORD` | Rec. | PostgreSQL password (default: `memento`) |
| `AI_PROVIDER_TAGS` | No | AI provider for tags: `ollama`, `openai`, `custom` |
| `OPENAI_API_KEY` | If OpenAI | Your OpenAI API key |
---
## Contributing
Contributions are welcome!
- **Bug reports**: [Open an issue](https://github.com/yourusername/Memento/issues)
- **Feature ideas**: [Start a discussion](https://github.com/yourusername/Memento/discussions)
- **Pull requests**: Fork, create a branch, and submit a PR
---
## Support
If you find Memento useful, consider supporting its development:
- **[Ko-fi](https://ko-fi.com/yourusername)** - One-time or monthly support
- **[GitHub Sponsors](https://github.com/sponsors/yourusername)** - Recurring sponsorship
- **Star the repo** - It's free and helps visibility
---
## License
Apache License 2.0 with Commons Clause Restriction.
Free for personal, educational, and non-commercial use. Commercial use requires written permission from the author. See [LICENSE](LICENSE) for details.