Files
Momento/memento-note
Antigravity 718f4c6900
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 1m35s
perf: optimize MCP server (O(1) auth, compact JSON, trashedAt fix) + memento-note performance (lazy loading, server-side filtering, XSS fixes, dead code removal, security hardening)
MCP Server:
- Fix validateApiKey: O(1) direct lookup by shortId instead of loading all keys
- Add trashedAt:null filter to ALL note queries (trashed notes leaked in results)
- Compact JSON output (~40% smaller responses)
- Bounded session cache (Map with MAX_SESSIONS=500) to prevent memory leaks
- PostgreSQL connection pooling (connection_limit=10)
- Rewrite all 22 tool descriptions in clear English
- Fix /sse fallback to proper 307 redirect

memento-note Performance:
- loading=lazy on all note images
- Split notebooksRefreshKey from global refreshKey (note CRUD no longer re-fetches notebooks)
- Remove searchKey from trash count deps (no re-fetch on every keystroke)
- Server-side notebookId filter in getAllNotes() (biggest win)
- Skip collaborator fetch for non-shared notes (eliminates N+1 API calls)
- next/dynamic for MarkdownContent + 4 modals (code-split remark/rehype/KaTeX)
- Memoize DOMPurify sanitize with useMemo

Security:
- XSS: DOMPurify sanitize in note-card and note-history-modal
- Auth anti-enumeration: uniform errors in auth.ts
- CRON_SECRET mandatory on cron endpoints
- Rate limiting on login (5 attempts/min per email)
- Centralized API auth helpers (requireAuth/requireAdmin)
- randomize-labels changed GET→POST
- Removed debug endpoints (/api/debug/config, /api/debug/test-chat)

Cleanup:
- Removed dead code: .backup-keep, settings-backup, fix-*.js, debug-theme, fix-labels route
- Removed sensitive console.error in auth.ts
- Ollama fetchWithTimeout (30s/60s AbortController)
- i18n: full Arabic translation, Farsi missing keys
- Masonry drag-and-drop fix (localOrderMap, cross-section block)
- Sidebar notebook tooltip on truncation
2026-05-03 18:41:38 +00:00
..

Keep Notes

Keep Notes est une application avancée de prise de notes hybride, combinant la fluidité d'un outil local moderne avec la puissance de l'Intelligence Artificielle. Conçue pour offrir des performances maximales, elle utilise les dernières avancées de l'écosystème React et Next.js.

🚀 Fonctionnalités

  • Notes & Carnets : Organisez vos idées rapidement avec des dossiers, codes couleurs, et épinglage.
  • Support Markdown & Rendu Riche : Éditez ou affichez vos notes instantanément.
  • Disposition Masonry : Grille CSS ultra-rapide (0 JavaScript) avec drag & drop fluide via @dnd-kit.
  • Intégration de l'Intelligence Artificielle :
    • Memory Echo : Suggestion automatique et connexions entre notes similaires (RAG / Embeddings).
    • Auto-Tagging : Création automatique d'étiquettes pertinentes.
    • Organisation par lots (Batch Organization) : Tri automatique des notes en vrac.
    • Amélioration textuelle : Reformulation, synthèse, ou traduction propulsés par l'IA.
    • Historique des notes : Snapshots de versions avec deux modes :
      • Manuel (par défaut) : Création de snapshots via un bouton "Commit" dans l'éditeur.
      • Automatique (intelligent) : Snapshots automatiques avec détection de changements significatifs (diff 20+ chars) et cooldown de 5 min. Les changements structurels (couleur, épingle, labels) contournent le cooldown.
    • Assistant IA : Chat contextuel avec support de recherche web, insights et historique des conversations.
  • Haute Performance (RSC & Turbopack) : Rendu Server Components natif pour une hydratation sans délai et développement accéléré via Turbopack.

📄 Licence et Droits d'Auteur

Licence Utilisateur Final (Version actuelle - Personnelle & Non-Commerciale)

Ce code source est fourni strictement pour un usage personnel et éducatif.

  • Utilisation non-commerciale uniquement : Il est interdit d'utiliser ce projet (ou tout code dérivé) pour générer des revenus, construire un produit commercial ou l'intégrer dans un service monétisé.
  • Redistribution sous condition : Vous ne pouvez pas redistribuer ou publier cette version sans maintenir cette licence restrictive.

(Inspiré de Creative Commons Attribution-NonCommercial 4.0 International - CC BY-NC 4.0).


🗺️ Roadmap & Version SaaS Commerciale Publique

Une version complète de Keep Notes destinée au grand public est prévue et en cours de planification. Cette version cloud s'appuiera sur de toutes nouvelles optimisations d'infrastructure :

  1. Migration Base de Données :
    • Remplacement de SQLite local par PostgreSQL afin de supporter l'architecture multi-tenant (plusieurs utilisateurs avec sécurité accrue des données).
  2. Système de Monétisation (Features IA) :
    • Mise en place d'un modèle d'abonnement SaaS (Stripe).
    • Intégration d'un système de crédit ("AI Credits") pour réguler l'usage des API d'intelligence artificielle (LLMs, Embeddings) de façon soutenable.
  3. Optimisations Scalabilité :
    • Déploiement distribué.

🛠️ Stack Technique

  • Framework : Next.js 16 (App Router, Server Components, Turbopack)
  • Frontend : React 19, Tailwind CSS, Radix UI primitives
  • Drag & Drop : @dnd-kit/core & sortable
  • Base de Données : Prisma ORM, PostgreSQL (prod) / SQLite (dev)
  • Outillage : Turbopack, TypeScript

💻 Instructions de Développement

Installation

npm install
# ou
yarn install

Initialisation de la Base de données

npx prisma generate
npx prisma db push

Migrations sûres (anti-perte de données)

npm run db:migrate
  • Cette commande passe par scripts/safe-migrate.js.
  • Un backup est créé avant migration (backups/migrations/), puis prisma migrate deploy est exécuté.
  • La migration est interrompue si le backup échoue.

Commande dev avancée (à utiliser explicitement seulement) :

npm run db:migrate:dev

Lancement du serveur (avec Turbopack)

npm run dev

Ouvrez http://localhost:3000 dans votre navigateur.