Story 6-2 — Markdown roundtrip export/import: - lib/editor/markdown-export.ts: tiptapHTMLToMarkdown, markdownToHTML, looksLikeMarkdown - lib/editor/markdown-paste-extension.ts: TipTap extension paste Markdown → blocs - note-editor-toolbar.tsx: export .md + import .md (file picker) - rich-text-editor.tsx: intégration MarkdownPasteExtension - 40 tests unitaires markdown-export.test.ts Story 6-3 — Brainstorm PPTX + Canvas: - lib/brainstorm/export-pptx.ts: génération PPTX 5 slides (pptxgenjs) - app/api/brainstorm/[sessionId]/export-pptx/route.ts: route POST protégée - brainstorm-page.tsx: bouton PPTX, auto-select session, fix emoji, fix router.replace - wave-canvas.tsx: fitTrigger recentrage, légende bas-droite Onboarding activation wizard (Story 6-1): - components/onboarding/: wizard multi-étapes, hints éditeur - app/api/onboarding/: route PATCH onboarding - prisma/migrations: champs onboarding user Locales: 15 langues mises à jour (brainstorm, markdown, onboarding keys) Sprint: 6-1 done, 6-2 review, 6-3 review Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
186 lines
6.0 KiB
JSON
186 lines
6.0 KiB
JSON
{
|
|
"name": "memento",
|
|
"version": "0.2.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "NODE_OPTIONS='--max-old-space-size=4096' next dev --turbopack",
|
|
"dev:all": "concurrently \"npm run dev\" \"npm run socket\"",
|
|
"socket": "npx tsx socket-server.ts",
|
|
"build": "prisma generate && next build",
|
|
"start": "next start",
|
|
"db:generate": "prisma generate",
|
|
"db:migrate": "node scripts/safe-migrate.js",
|
|
"db:migrate:dev": "prisma migrate dev",
|
|
"db:migrate:deploy": "prisma migrate deploy",
|
|
"db:push": "prisma db push",
|
|
"db:studio": "prisma studio",
|
|
"db:reset": "prisma migrate reset",
|
|
"db:switch": "node scripts/switch-db.js",
|
|
"setup:env": "node scripts/setup-env.js",
|
|
"test": "playwright test",
|
|
"test:ui": "playwright test --ui",
|
|
"test:headed": "playwright test --headed",
|
|
"test:unit": "vitest run",
|
|
"test:unit:watch": "vitest watch",
|
|
"test:unit:coverage": "vitest run --coverage",
|
|
"test:migration": "vitest run tests/migration",
|
|
"test:migration:watch": "vitest watch tests/migration",
|
|
"locales:agent-slide-themes": "node scripts/localize-agent-slide-themes-and-translate.mjs",
|
|
"lint": "eslint"
|
|
},
|
|
"dependencies": {
|
|
"@ai-sdk/anthropic": "^3.0.76",
|
|
"@ai-sdk/google": "^3.0.71",
|
|
"@ai-sdk/openai": "^3.0.7",
|
|
"@ai-sdk/react": "^3.0.170",
|
|
"@auth/prisma-adapter": "^2.11.1",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@excalidraw/excalidraw": "^0.18.0",
|
|
"@mozilla/readability": "^0.6.0",
|
|
"@napi-rs/canvas": "^0.1.65",
|
|
"@nivo/bar": "^0.99.0",
|
|
"@nivo/core": "^0.99.0",
|
|
"@nivo/heatmap": "^0.99.0",
|
|
"@nivo/line": "^0.99.0",
|
|
"@nivo/pie": "^0.99.0",
|
|
"@nivo/radar": "^0.99.0",
|
|
"@prisma/client": "^5.22.0",
|
|
"@radix-ui/react-avatar": "^1.1.11",
|
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-popover": "^1.1.15",
|
|
"@radix-ui/react-radio-group": "^1.3.8",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.8",
|
|
"@radix-ui/react-slot": "^1.2.4",
|
|
"@radix-ui/react-switch": "^1.2.6",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@stripe/react-stripe-js": "^6.3.0",
|
|
"@stripe/stripe-js": "^9.5.0",
|
|
"@tanstack/react-query": "^5.100.9",
|
|
"@tiptap/extension-collaboration": "^3.23.6",
|
|
"@tiptap/extension-color": "^3.22.5",
|
|
"@tiptap/extension-drag-handle": "^3.23.6",
|
|
"@tiptap/extension-drag-handle-react": "^3.23.6",
|
|
"@tiptap/extension-highlight": "^3.22.5",
|
|
"@tiptap/extension-image": "^3.22.5",
|
|
"@tiptap/extension-node-range": "^3.23.6",
|
|
"@tiptap/extension-placeholder": "^3.22.5",
|
|
"@tiptap/extension-subscript": "^3.22.5",
|
|
"@tiptap/extension-superscript": "^3.22.5",
|
|
"@tiptap/extension-table": "^3.22.5",
|
|
"@tiptap/extension-table-cell": "^3.22.5",
|
|
"@tiptap/extension-table-header": "^3.22.5",
|
|
"@tiptap/extension-table-row": "^3.22.5",
|
|
"@tiptap/extension-task-item": "^3.22.5",
|
|
"@tiptap/extension-task-list": "^3.22.5",
|
|
"@tiptap/extension-text-align": "^3.22.5",
|
|
"@tiptap/extension-text-style": "^3.22.5",
|
|
"@tiptap/extension-typography": "^3.22.5",
|
|
"@tiptap/pm": "^3.22.5",
|
|
"@tiptap/react": "^3.22.5",
|
|
"@tiptap/starter-kit": "^3.22.5",
|
|
"@tiptap/suggestion": "^3.22.5",
|
|
"@tiptap/y-tiptap": "^3.0.3",
|
|
"@types/d3": "^7.4.3",
|
|
"@types/jsdom": "^28.0.1",
|
|
"@types/turndown": "^5.0.6",
|
|
"ai": "^6.0.23",
|
|
"autoprefixer": "^10.4.23",
|
|
"bcryptjs": "^3.0.3",
|
|
"buffer": "^6.0.3",
|
|
"canvas-confetti": "^1.9.4",
|
|
"cheerio": "^1.1.2",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"d3": "^7.9.0",
|
|
"dagre": "^0.8.5",
|
|
"date-fns": "^4.1.0",
|
|
"diff": "^9.0.0",
|
|
"dotenv": "^17.2.3",
|
|
"elkjs": "^0.11.1",
|
|
"ioredis": "^5.10.1",
|
|
"isomorphic-dompurify": "^3.12.0",
|
|
"jalaali-js": "^1.2.8",
|
|
"jsdom": "^29.0.2",
|
|
"jszip": "^3.10.1",
|
|
"katex": "^0.16.27",
|
|
"lucide-react": "^0.562.0",
|
|
"marked": "^18.0.3",
|
|
"mermaid": "^11.15.0",
|
|
"motion": "^12.38.0",
|
|
"next": "^16.1.6",
|
|
"next-auth": "^5.0.0-beta.30",
|
|
"nodemailer": "^8.0.4",
|
|
"pdf-parse": "^2.4.5",
|
|
"postcss": "^8.5.6",
|
|
"pptxgenjs": "^4.0.1",
|
|
"radix-ui": "^1.4.3",
|
|
"react": "19.2.3",
|
|
"react-dom": "19.2.3",
|
|
"react-force-graph-2d": "^1.29.1",
|
|
"react-icons": "^5.6.0",
|
|
"react-markdown": "^10.1.0",
|
|
"reactflow": "^11.11.4",
|
|
"recharts": "^3.8.1",
|
|
"rehype-katex": "^7.0.1",
|
|
"rehype-raw": "^7.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"remark-math": "^6.0.0",
|
|
"resend": "^6.12.0",
|
|
"rss-parser": "^3.13.0",
|
|
"sharp": "^0.34.0",
|
|
"socket.io": "^4.8.3",
|
|
"socket.io-client": "^4.8.3",
|
|
"sonner": "^2.0.7",
|
|
"stripe": "^22.1.1",
|
|
"tailwind-merge": "^3.4.0",
|
|
"tinyld": "^1.3.4",
|
|
"tiptap-extension-auto-joiner": "^0.1.3",
|
|
"tiptap-extension-global-drag-handle": "^0.1.18",
|
|
"turndown": "^7.2.4",
|
|
"turndown-plugin-gfm": "^1.0.2",
|
|
"vazirmatn": "^33.0.3",
|
|
"y-protocols": "^1.0.7",
|
|
"yjs": "^13.6.30",
|
|
"zod": "^4.3.5"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.57.0",
|
|
"@tailwindcss/postcss": "^4",
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/canvas-confetti": "^1.9.0",
|
|
"@types/dagre": "^0.7.54",
|
|
"@types/diff": "^7.0.2",
|
|
"@types/ioredis": "^4.28.10",
|
|
"@types/jszip": "^3.4.0",
|
|
"@types/node": "^20",
|
|
"@types/nodemailer": "^7.0.4",
|
|
"@types/pdf-parse": "^1.1.5",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"concurrently": "^9.2.1",
|
|
"eslint": "^9.39.4",
|
|
"eslint-config-next": "^16.2.6",
|
|
"prisma": "^5.22.0",
|
|
"tailwindcss": "^4.0.0",
|
|
"tsx": "^4.21.0",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "5.9.3",
|
|
"vitest": "^4.0.18"
|
|
},
|
|
"overrides": {
|
|
"serialize-javascript": "^7.0.5",
|
|
"nodemailer": "^8.0.4",
|
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
"@radix-ui/react-slot": "^1.2.4",
|
|
"lodash-es": "^4.17.21",
|
|
"nanoid": "^3.3.8"
|
|
}
|
|
}
|