create-crm-tmp 1.1.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/package.json +1 -1
  2. package/template/.prettierignore +2 -0
  3. package/template/README.md +1 -1
  4. package/template/components.json +22 -0
  5. package/template/exemple-contacts.csv +54 -0
  6. package/template/next.config.ts +27 -1
  7. package/template/package.json +51 -16
  8. package/template/prisma/schema.prisma +807 -58
  9. package/template/skills-lock.json +25 -0
  10. package/template/src/app/(auth)/invite/[token]/page.tsx +21 -24
  11. package/template/src/app/(auth)/reset-password/complete/page.tsx +12 -21
  12. package/template/src/app/(auth)/reset-password/page.tsx +12 -8
  13. package/template/src/app/(auth)/reset-password/verify/page.tsx +12 -8
  14. package/template/src/app/(auth)/signin/page.tsx +20 -17
  15. package/template/src/app/(dashboard)/agenda/page.tsx +2232 -2189
  16. package/template/src/app/(dashboard)/automatisation/[id]/page.tsx +10 -7
  17. package/template/src/app/(dashboard)/automatisation/_components/workflow-editor.tsx +680 -323
  18. package/template/src/app/(dashboard)/automatisation/new/page.tsx +11 -8
  19. package/template/src/app/(dashboard)/automatisation/page.tsx +473 -180
  20. package/template/src/app/(dashboard)/closing/page.tsx +500 -468
  21. package/template/src/app/(dashboard)/contacts/[id]/page.tsx +5049 -4110
  22. package/template/src/app/(dashboard)/contacts/companies/[id]/page.tsx +1703 -0
  23. package/template/src/app/(dashboard)/contacts/loading.tsx +13 -0
  24. package/template/src/app/(dashboard)/contacts/page.tsx +3776 -2064
  25. package/template/src/app/(dashboard)/dashboard/page.tsx +37 -519
  26. package/template/src/app/(dashboard)/error.tsx +37 -0
  27. package/template/src/app/(dashboard)/layout.tsx +1 -1
  28. package/template/src/app/(dashboard)/loading.tsx +5 -0
  29. package/template/src/app/(dashboard)/settings/loading.tsx +19 -0
  30. package/template/src/app/(dashboard)/settings/page.tsx +2685 -2489
  31. package/template/src/app/(dashboard)/templates/page.tsx +500 -300
  32. package/template/src/app/(dashboard)/users/list/page.tsx +356 -350
  33. package/template/src/app/(dashboard)/users/page.tsx +279 -310
  34. package/template/src/app/(dashboard)/users/permissions/page.tsx +104 -99
  35. package/template/src/app/(dashboard)/users/roles/page.tsx +164 -137
  36. package/template/src/app/api/audit-logs/route.ts +1 -1
  37. package/template/src/app/api/auth/google/callback/route.ts +8 -5
  38. package/template/src/app/api/auth/google/disconnect/route.ts +2 -2
  39. package/template/src/app/api/companies/[id]/activities/route.ts +131 -0
  40. package/template/src/app/api/companies/[id]/route.ts +195 -0
  41. package/template/src/app/api/companies/export/route.ts +206 -0
  42. package/template/src/app/api/companies/route.ts +166 -0
  43. package/template/src/app/api/contact-views/[id]/pin/route.ts +69 -0
  44. package/template/src/app/api/contact-views/[id]/route.ts +197 -0
  45. package/template/src/app/api/contact-views/route.ts +146 -0
  46. package/template/src/app/api/contacts/[id]/files/[fileId]/preview/route.ts +77 -0
  47. package/template/src/app/api/contacts/[id]/files/[fileId]/route.ts +7 -17
  48. package/template/src/app/api/contacts/[id]/files/route.ts +83 -44
  49. package/template/src/app/api/contacts/[id]/interactions/route.ts +37 -0
  50. package/template/src/app/api/contacts/[id]/kyc/route.ts +71 -0
  51. package/template/src/app/api/contacts/[id]/meet/route.ts +38 -29
  52. package/template/src/app/api/contacts/[id]/route.ts +111 -20
  53. package/template/src/app/api/contacts/[id]/send-email/route.ts +6 -0
  54. package/template/src/app/api/contacts/[id]/workflows/run/route.ts +61 -0
  55. package/template/src/app/api/contacts/export/route.ts +13 -18
  56. package/template/src/app/api/contacts/import/route.ts +22 -19
  57. package/template/src/app/api/contacts/import-preview/route.ts +139 -0
  58. package/template/src/app/api/contacts/route.ts +202 -49
  59. package/template/src/app/api/dashboard/stats/route.ts +9 -292
  60. package/template/src/app/api/integrations/google-sheet/sync/route.ts +203 -185
  61. package/template/src/app/api/invite/complete/route.ts +20 -23
  62. package/template/src/app/api/reminders/route.ts +1 -0
  63. package/template/src/app/api/reset-password/complete/route.ts +11 -13
  64. package/template/src/app/api/send/route.ts +9 -43
  65. package/template/src/app/api/settings/closing-reasons/[id]/route.ts +10 -21
  66. package/template/src/app/api/settings/closing-reasons/route.ts +10 -21
  67. package/template/src/app/api/settings/company/route.ts +19 -26
  68. package/template/src/app/api/settings/google-ads/[id]/route.ts +20 -23
  69. package/template/src/app/api/settings/google-ads/route.ts +20 -23
  70. package/template/src/app/api/settings/google-sheet/[id]/route.ts +20 -23
  71. package/template/src/app/api/settings/google-sheet/auto-map/route.ts +23 -32
  72. package/template/src/app/api/settings/google-sheet/preview/route.ts +104 -0
  73. package/template/src/app/api/settings/google-sheet/route.ts +20 -23
  74. package/template/src/app/api/settings/meta-leads/[id]/route.ts +20 -23
  75. package/template/src/app/api/settings/meta-leads/route.ts +20 -23
  76. package/template/src/app/api/settings/statuses/[id]/route.ts +29 -32
  77. package/template/src/app/api/settings/statuses/route.ts +24 -22
  78. package/template/src/app/api/statuses/route.ts +2 -5
  79. package/template/src/app/api/tasks/[id]/attendees/route.ts +14 -7
  80. package/template/src/app/api/tasks/[id]/route.ts +173 -137
  81. package/template/src/app/api/tasks/meet/route.ts +11 -8
  82. package/template/src/app/api/tasks/route.ts +155 -95
  83. package/template/src/app/api/templates/[id]/route.ts +22 -13
  84. package/template/src/app/api/templates/route.ts +22 -5
  85. package/template/src/app/api/users/[id]/resend-invite/route.ts +95 -0
  86. package/template/src/app/api/users/[id]/route.ts +2 -2
  87. package/template/src/app/api/users/commercials/route.ts +38 -0
  88. package/template/src/app/api/users/for-agenda/route.ts +1 -2
  89. package/template/src/app/api/users/route.ts +89 -34
  90. package/template/src/app/api/webhooks/google-ads/route.ts +20 -1
  91. package/template/src/app/api/webhooks/meta-leads/route.ts +18 -1
  92. package/template/src/app/api/workflows/[id]/route.ts +33 -6
  93. package/template/src/app/api/workflows/process/route.ts +510 -146
  94. package/template/src/app/api/workflows/route.ts +46 -4
  95. package/template/src/app/globals.css +243 -101
  96. package/template/src/app/layout.tsx +19 -8
  97. package/template/src/app/page.tsx +37 -7
  98. package/template/src/components/address-autocomplete.tsx +232 -0
  99. package/template/src/components/contacts/filter-bar.tsx +181 -0
  100. package/template/src/components/contacts/filter-builder.tsx +589 -0
  101. package/template/src/components/contacts/save-view-dialog.tsx +160 -0
  102. package/template/src/components/contacts/views-tab-bar.tsx +440 -0
  103. package/template/src/components/dashboard/activity-chart.tsx +31 -39
  104. package/template/src/components/dashboard/dashboard-content.tsx +79 -0
  105. package/template/src/components/dashboard/stat-card.tsx +40 -42
  106. package/template/src/components/dashboard/tasks-pie-chart.tsx +34 -37
  107. package/template/src/components/dashboard/upcoming-tasks-list.tsx +78 -72
  108. package/template/src/components/date-picker.tsx +396 -0
  109. package/template/src/components/editor.tsx +27 -13
  110. package/template/src/components/email-template.tsx +4 -2
  111. package/template/src/components/global-search.tsx +358 -0
  112. package/template/src/components/header.tsx +57 -62
  113. package/template/src/components/invitation-email-template.tsx +4 -2
  114. package/template/src/components/lazy-editor.tsx +11 -0
  115. package/template/src/components/meet-cancellation-email-template.tsx +11 -3
  116. package/template/src/components/meet-confirmation-email-template.tsx +10 -3
  117. package/template/src/components/meet-update-email-template.tsx +10 -3
  118. package/template/src/components/page-header.tsx +19 -15
  119. package/template/src/components/protected-page.tsx +94 -0
  120. package/template/src/components/reset-password-email-template.tsx +4 -2
  121. package/template/src/components/sidebar.tsx +92 -94
  122. package/template/src/components/skeleton.tsx +128 -42
  123. package/template/src/components/ui/accordion.tsx +64 -0
  124. package/template/src/components/ui/alert-dialog.tsx +139 -0
  125. package/template/src/components/ui/button.tsx +60 -0
  126. package/template/src/components/view-as-banner.tsx +1 -1
  127. package/template/src/components/view-as-modal.tsx +21 -16
  128. package/template/src/config/nav-pages.ts +108 -0
  129. package/template/src/contexts/app-toast-context.tsx +174 -0
  130. package/template/src/contexts/sidebar-context.tsx +16 -47
  131. package/template/src/contexts/task-reminder-context.tsx +6 -6
  132. package/template/src/contexts/view-as-context.tsx +11 -16
  133. package/template/src/hooks/use-alert.tsx +65 -0
  134. package/template/src/hooks/use-confirm.tsx +87 -0
  135. package/template/src/hooks/use-contact-views.ts +140 -0
  136. package/template/src/hooks/use-contacts.ts +69 -0
  137. package/template/src/hooks/use-fetch.ts +17 -0
  138. package/template/src/hooks/use-focus-trap.ts +73 -0
  139. package/template/src/hooks/use-statuses.ts +22 -0
  140. package/template/src/lib/address-api.ts +155 -0
  141. package/template/src/lib/cache.ts +73 -0
  142. package/template/src/lib/check-permission.ts +12 -177
  143. package/template/src/lib/contact-interactions.ts +3 -1
  144. package/template/src/lib/contact-view-filters.ts +341 -0
  145. package/template/src/lib/dashboard-stats.ts +224 -0
  146. package/template/src/lib/date-utils.ts +49 -0
  147. package/template/src/lib/get-auth-user.ts +25 -0
  148. package/template/src/lib/google-calendar.ts +54 -12
  149. package/template/src/lib/google-drive.ts +796 -75
  150. package/template/src/lib/google-fetch.ts +63 -0
  151. package/template/src/lib/local-storage.ts +34 -0
  152. package/template/src/lib/permissions.ts +245 -47
  153. package/template/src/lib/prisma.ts +11 -11
  154. package/template/src/lib/roles.ts +12 -15
  155. package/template/src/lib/template-variables.ts +67 -33
  156. package/template/src/lib/utils.ts +26 -11
  157. package/template/src/lib/workflow-executor.ts +445 -228
  158. package/template/src/proxy.ts +34 -73
  159. package/template/src/types/contact-views.ts +351 -0
  160. package/template/src/types/yousign.ts +52 -0
  161. package/template/vercel.json +12 -0
  162. package/template/WORKFLOWS_CRON.md +0 -185
  163. package/template/prisma/migrations/20251126144728_init/migration.sql +0 -78
  164. package/template/prisma/migrations/20251126155204_add_user_roles/migration.sql +0 -5
  165. package/template/prisma/migrations/20251128095126_add_company_info/migration.sql +0 -19
  166. package/template/prisma/migrations/20251128123321_add_smtp_config/migration.sql +0 -22
  167. package/template/prisma/migrations/20251128132303_add_status/migration.sql +0 -23
  168. package/template/prisma/migrations/20251201102207_add_user_active/migration.sql +0 -75
  169. package/template/prisma/migrations/20251201105507_add_email_signature/migration.sql +0 -2
  170. package/template/prisma/migrations/20251201151122_add_tasks/migration.sql +0 -45
  171. package/template/prisma/migrations/20251202111854_add_task_reminder/migration.sql +0 -2
  172. package/template/prisma/migrations/20251202135859_add_google_meet_integration/migration.sql +0 -27
  173. package/template/prisma/migrations/20251203103317_add_meta_lead_integration/migration.sql +0 -20
  174. package/template/prisma/migrations/20251203104002_add_google_ads_integration/migration.sql +0 -18
  175. package/template/prisma/migrations/20251203112122_add_google_sheet_integration/migration.sql +0 -32
  176. package/template/prisma/migrations/20251203153853_allow_multiple_integration_configs/migration.sql +0 -20
  177. package/template/prisma/migrations/20251205141705_update_user_roles/migration.sql +0 -12
  178. package/template/prisma/migrations/20251205150000_add_commercial_and_telepro_assignment/migration.sql +0 -21
  179. package/template/prisma/migrations/20251205160000_add_interaction_logging/migration.sql +0 -11
  180. package/template/prisma/migrations/20251208090314_add_automatic_interaction_types/migration.sql +0 -12
  181. package/template/prisma/migrations/20251208094843_mg/migration.sql +0 -14
  182. package/template/prisma/migrations/20251208100000_add_company_support/migration.sql +0 -14
  183. package/template/prisma/migrations/20251208110000_add_templates/migration.sql +0 -26
  184. package/template/prisma/migrations/20251208141304_add_video_conference_task_type/migration.sql +0 -2
  185. package/template/prisma/migrations/20251209104759_add_internal_note_to_task/migration.sql +0 -2
  186. package/template/prisma/migrations/20251209134803_add_company_field/migration.sql +0 -2
  187. package/template/prisma/migrations/20251209150000_rename_company_to_company_name/migration.sql +0 -3
  188. package/template/prisma/migrations/20251209150016_add_email_tracking/migration.sql +0 -21
  189. package/template/prisma/migrations/20251209155908_add_notify_contact_to_task/migration.sql +0 -2
  190. package/template/prisma/migrations/20251210110019_add_appointment_types/migration.sql +0 -10
  191. package/template/prisma/migrations/20251210113928_add_contact_files/migration.sql +0 -26
  192. package/template/prisma/migrations/20251212132339_add_custom_roles/migration.sql +0 -24
  193. package/template/prisma/migrations/20251215104448_add_file_interaction_types/migration.sql +0 -11
  194. package/template/prisma/migrations/20251215145616_add_closing_reasons/migration.sql +0 -12
  195. package/template/prisma/migrations/20251216140850_add_log_users/migration.sql +0 -25
  196. package/template/prisma/migrations/20251216151000_rename_perdu_to_ferme/migration.sql +0 -8
  197. package/template/prisma/migrations/20251216162318_add_column_mappings_to_google_sheet/migration.sql +0 -2
  198. package/template/prisma/migrations/20251216185127_add_workflows/migration.sql +0 -80
  199. package/template/prisma/migrations/20251216192237_add_scheduled_workflow_actions/migration.sql +0 -32
  200. package/template/prisma/migrations/20251220000000_add_task_interaction_type/migration.sql +0 -4
  201. package/template/prisma/migrations/20251221000000_add_task_type/migration.sql +0 -3
  202. package/template/prisma/migrations/20251221000001_add_event_color/migration.sql +0 -23
  203. package/template/prisma/migrations/20260210114913_add_dashboard_widget/migration.sql +0 -20
  204. package/template/prisma/migrations/20260226093949_fix_cascade_on_user_delete/migration.sql +0 -69
  205. package/template/prisma/migrations/migration_lock.toml +0 -3
  206. package/template/src/app/(dashboard)/users/layout.tsx +0 -30
  207. package/template/src/app/api/dashboard/widgets/[id]/route.ts +0 -47
  208. package/template/src/app/api/dashboard/widgets/route.ts +0 -181
  209. package/template/src/components/dashboard/add-widget-dialog.tsx +0 -161
  210. package/template/src/components/dashboard/color-picker.tsx +0 -65
  211. package/template/src/components/dashboard/contacts-chart.tsx +0 -69
  212. package/template/src/components/dashboard/interactions-by-type-chart.tsx +0 -121
  213. package/template/src/components/dashboard/recent-activity.tsx +0 -157
  214. package/template/src/components/dashboard/status-distribution-chart.tsx +0 -82
  215. package/template/src/components/dashboard/top-contacts-list.tsx +0 -119
  216. package/template/src/components/dashboard/widget-wrapper.tsx +0 -39
  217. package/template/src/contexts/dashboard-theme-context.tsx +0 -58
  218. package/template/src/lib/dashboard-themes.ts +0 -140
  219. package/template/src/lib/default-widgets.ts +0 -14
  220. package/template/src/lib/widget-registry.ts +0 -177
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-crm-tmp",
3
- "version": "1.1.3",
3
+ "version": "2.0.0",
4
4
  "description": "Créer un nouveau projet CRM basé sur le template",
5
5
  "bin": {
6
6
  "create-crm-tmp": "./bin/create-crm-tmp.js"
@@ -2,6 +2,8 @@
2
2
  node_modules
3
3
  .pnp
4
4
  .pnp.js
5
+ .agents
6
+ generated
5
7
 
6
8
  # Production
7
9
  build
@@ -1,4 +1,4 @@
1
- # 📊 CRM Template
1
+ # 📊 Gold Blessing
2
2
 
3
3
  Un CRM moderne, orienté **prospection & suivi commercial**, construit avec
4
4
  **Next.js 16**,
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": true,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/app/globals.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "iconLibrary": "lucide",
14
+ "aliases": {
15
+ "components": "@/components",
16
+ "utils": "@/lib/utils",
17
+ "ui": "@/components/ui",
18
+ "lib": "@/lib",
19
+ "hooks": "@/hooks"
20
+ },
21
+ "registries": {}
22
+ }
@@ -9,3 +9,57 @@ M,Michel,Petit,0678901234,,michel.petit@example.com,34 Rue du Commerce,Toulouse,
9
9
  MME,Isabelle,Roux,0689012345,0690123456,isabelle.roux@example.com,67 Avenue Jean Jaurès,Toulouse,31001,Recommandation
10
10
  M,David,Simon,0690123456,,david.simon@example.com,23 Place du Capitole,Bordeaux,33000,Google Ads
11
11
  MME,Claire,Laurent,0612345679,,claire.laurent@example.com,45 Rue Sainte-Catherine,Bordeaux,33001,Facebook
12
+ M,Antoine,Girard,0613456780,0624567891,antoine.girard@example.com,12 Rue de Rivoli,Paris,75004,LinkedIn
13
+ MME,Céline,Blanc,0624567891,,celine.blanc@example.com,89 Avenue Montaigne,Paris,75016,Google Ads
14
+ M,Nicolas,Moreau,0635678902,0646789013,nicolas.moreau@example.com,34 Rue de la Soif,Nantes,44000,Facebook
15
+ MME,Amélie,Fournier,0646789013,,amelie.fournier@example.com,56 Place Royale,Nantes,44001,Recommandation
16
+ M,Julien,Garcia,0657890124,0668901235,julien.garcia@example.com,78 Boulevard de la Liberté,Lille,59000,LinkedIn
17
+ MME,Camille,Robert,0668901235,,camille.robert@example.com,23 Rue de la République,Lille,59001,Google Ads
18
+ M,Maxime,Richard,0679012346,0680123457,maxime.richard@example.com,45 Avenue Jean Médecin,Nice,06000,Facebook
19
+ MME,Émilie,Durand,0680123457,,emilie.durand@example.com,12 Promenade des Anglais,Nice,06001,Recommandation
20
+ M,Alexandre,Petit,0691234568,0612345670,alexandre.petit@example.com,67 Rue de la République,Strasbourg,67000,LinkedIn
21
+ MME,Manon,Bernard,0612345670,,manon.bernard@example.com,34 Place Kléber,Strasbourg,67001,Google Ads
22
+ M,Romain,Thomas,0623456781,0634567892,romain.thomas@example.com,89 Rue de la Paix,Montpellier,34000,Facebook
23
+ MME,Laura,Robert,0634567892,,laura.robert@example.com,23 Avenue du Général Leclerc,Montpellier,34001,Recommandation
24
+ M,Hugo,Martin,0645678903,0656789014,hugo.martin@example.com,56 Boulevard de la République,Rennes,35000,LinkedIn
25
+ MME,Léa,Dubois,0656789014,,lea.dubois@example.com,12 Place de la Mairie,Rennes,35001,Google Ads
26
+ M,Lucas,Simon,0667890125,0678901236,lucas.simon@example.com,78 Rue de la Gare,Reims,51100,Facebook
27
+ MME,Chloé,Laurent,0678901236,,chloe.laurent@example.com,45 Avenue de Laon,Reims,51101,Recommandation
28
+ M,Enzo,Garcia,0689012347,0690123458,enzo.garcia@example.com,23 Rue de Vesle,Reims,51102,LinkedIn
29
+ MME,Emma,Moreau,0690123458,,emma.moreau@example.com,67 Place Drouet d'Erlon,Reims,51103,Google Ads
30
+ M,Louis,Petit,0611234569,0622345670,louis.petit@example.com,34 Rue de la République,Amiens,80000,Facebook
31
+ MME,Inès,Bernard,0622345670,,ines.bernard@example.com,89 Boulevard de la République,Amiens,80001,Recommandation
32
+ M,Noah,Richard,0633456781,0644567892,noah.richard@example.com,12 Place de l'Hôtel de Ville,Amiens,80002,LinkedIn
33
+ MME,Sarah,Fournier,0644567892,,sarah.fournier@example.com,56 Rue des Trois Cailloux,Amiens,80003,Google Ads
34
+ M,Gabriel,Girard,0655678903,0666789014,gabriel.girard@example.com,78 Avenue des Facultés,Amiens,80004,Facebook
35
+ MME,Zoé,Blanc,0666789014,,zoe.blanc@example.com,23 Rue de la République,Caen,14000,Recommandation
36
+ M,Raphaël,Robert,0677890125,0688901236,raphael.robert@example.com,45 Place de la République,Caen,14001,LinkedIn
37
+ MME,Louise,Thomas,0688901236,,louise.thomas@example.com,12 Rue de Bayeux,Caen,14002,Google Ads
38
+ M,Arthur,Durand,0699012347,0610123458,arthur.durand@example.com,67 Boulevard du Maréchal Leclerc,Caen,14003,Facebook
39
+ MME,Jade,Martin,0610123458,,jade.martin@example.com,34 Rue de la Gare,Caen,14004,Recommandation
40
+ M,Maël,Petit,0611123459,0622234560,mael.petit@example.com,89 Avenue de Courseulles,Caen,14005,LinkedIn
41
+ MME,Anna,Simon,0622234560,,anna.simon@example.com,23 Rue de Falaise,Caen,14006,Google Ads
42
+ M,Paul,Garcia,0633345671,0644456782,paul.garcia@example.com,56 Place Saint-Pierre,Caen,14007,Facebook
43
+ MME,Léna,Moreau,0644456782,,lena.moreau@example.com,12 Rue de Vaucelles,Caen,14008,Recommandation
44
+ M,Tom,Bernard,0655567893,0666678904,tom.bernard@example.com,78 Boulevard Yves Guillou,Caen,14009,LinkedIn
45
+ MME,Mia,Laurent,0666678904,,mia.laurent@example.com,45 Rue de la Poterne,Caen,14010,Google Ads
46
+ M,Ethan,Richard,0677789015,0688890126,ethan.richard@example.com,23 Avenue de Bagatelle,Caen,14011,Facebook
47
+ MME,Lina,Fournier,0688890126,,lina.fournier@example.com,67 Rue de la Délivrande,Caen,14012,Recommandation
48
+ M,Nathan,Girard,0699901237,0610012348,nathan.girard@example.com,34 Place Fontette,Caen,14013,LinkedIn
49
+ MME,Alice,Blanc,0610012348,,alice.blanc@example.com,89 Rue de Geôle,Caen,14014,Google Ads
50
+ M,Théo,Robert,0611112349,0622223450,theo.robert@example.com,12 Boulevard des Alliés,Caen,14015,Facebook
51
+ MME,Julia,Thomas,0622223450,,julia.thomas@example.com,56 Rue de la République,Angers,49000,Recommandation
52
+ M,Liam,Durand,0633334561,0644445672,liam.durand@example.com,78 Place du Ralliement,Angers,49001,LinkedIn
53
+ MME,Rose,Martin,0644445672,,rose.martin@example.com,45 Rue Lenepveu,Angers,49002,Google Ads
54
+ M,Oscar,Petit,0655556783,0666667894,oscar.petit@example.com,23 Boulevard Foch,Angers,49003,Facebook
55
+ MME,Maya,Simon,0666667894,,maya.simon@example.com,67 Rue Plantagenêt,Angers,49004,Recommandation
56
+ M,Adam,Garcia,0677778905,0688889016,adam.garcia@example.com,34 Place du Pilori,Angers,49005,LinkedIn
57
+ MME,Eva,Moreau,0688889016,,eva.moreau@example.com,89 Rue Saint-Aubin,Angers,49006,Google Ads
58
+ M,Léo,Bernard,0699990127,0610001238,leo.bernard@example.com,12 Avenue de Lattre de Tassigny,Angers,49007,Facebook
59
+ MME,Luna,Laurent,0610001238,,luna.laurent@example.com,56 Rue Toussaint,Angers,49008,Recommandation
60
+ M,Marius,Richard,0611101239,0622202340,marius.richard@example.com,78 Boulevard Ayrault,Angers,49009,LinkedIn
61
+ MME,Nina,Fournier,0622202340,,nina.fournier@example.com,23 Place de la Laïcité,Angers,49010,Google Ads
62
+ M,Gaspard,Girard,0633303451,0644404562,gaspard.girard@example.com,45 Rue de la Roë,Angers,49011,Facebook
63
+ MME,Lilou,Blanc,0644404562,,lilou.blanc@example.com,67 Rue Saint-Martin,Angers,49012,Recommandation
64
+ M,Victor,Robert,0655505673,0666606784,victor.robert@example.com,34 Place du Général de Gaulle,Angers,49013,LinkedIn
65
+ MME,Agathe,Thomas,0666606784,,agathe.thomas@example.com,89 Rue Beaurepaire,Angers,49014,Google Ads
@@ -1,8 +1,34 @@
1
1
  import type { NextConfig } from 'next';
2
2
 
3
3
  const nextConfig: NextConfig = {
4
- /* config options here */
5
4
  reactCompiler: true,
5
+ experimental: {
6
+ optimizePackageImports: ['lucide-react', 'recharts'],
7
+ },
8
+ serverExternalPackages: ['nodemailer'],
9
+ images: {
10
+ formats: ['image/avif', 'image/webp'],
11
+ },
12
+ async headers() {
13
+ return [
14
+ {
15
+ source: '/(.*)',
16
+ headers: [
17
+ { key: 'X-Frame-Options', value: 'DENY' },
18
+ { key: 'X-Content-Type-Options', value: 'nosniff' },
19
+ { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
20
+ {
21
+ key: 'Strict-Transport-Security',
22
+ value: 'max-age=63072000; includeSubDomains; preload',
23
+ },
24
+ {
25
+ key: 'Permissions-Policy',
26
+ value: 'camera=(), microphone=()',
27
+ },
28
+ ],
29
+ },
30
+ ];
31
+ },
6
32
  };
7
33
 
8
34
  export default nextConfig;
@@ -12,43 +12,83 @@
12
12
  "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,css,md}\""
13
13
  },
14
14
  "dependencies": {
15
- "@lexical/html": "^0.38.2",
16
- "@lexical/list": "^0.38.2",
15
+ "@hookform/resolvers": "^5.2.2",
16
+ "@lexical/html": "0.38.2",
17
+ "@lexical/list": "0.38.2",
17
18
  "@lexical/markdown": "^0.38.2",
18
19
  "@lexical/react": "^0.38.2",
19
20
  "@lexical/rich-text": "^0.38.2",
20
- "@lexical/selection": "^0.38.2",
21
- "@lexical/utils": "^0.38.2",
21
+ "@lexical/selection": "0.38.2",
22
+ "@lexical/utils": "0.38.2",
22
23
  "@lexkit/editor": "^0.0.38",
23
24
  "@prisma/adapter-pg": "^7.4.1",
24
25
  "@prisma/client": "^7.4.1",
26
+ "@radix-ui/react-accordion": "^1.2.12",
27
+ "@radix-ui/react-alert-dialog": "^1.1.15",
28
+ "@radix-ui/react-slot": "^1.2.4",
25
29
  "@react-email/render": "^2.0.4",
30
+ "axios": "^1.13.5",
26
31
  "bcryptjs": "^3.0.3",
27
32
  "better-auth": "^1.4.19",
33
+ "class-variance-authority": "^0.7.1",
28
34
  "clsx": "^2.1.1",
29
- "dotenv": "^17.3.1",
35
+ "dotenv": "^17.2.3",
36
+ "form-data": "^4.0.5",
37
+ "iron-session": "^8.0.4",
38
+ "isomorphic-dompurify": "^3.0.0",
30
39
  "lexical": "^0.38.2",
40
+ "lru-cache": "^11.2.6",
31
41
  "lucide-react": "^0.555.0",
32
42
  "next": "16.1.6",
33
43
  "nodemailer": "^7.0.13",
34
- "papaparse": "^5.5.3",
44
+ "pdf-lib": "^1.17.1",
35
45
  "pg": "^8.19.0",
36
46
  "react": "19.2.4",
37
47
  "react-dom": "19.2.4",
38
- "react-grid-layout": "^2.2.2",
48
+ "react-hook-form": "^7.71.2",
39
49
  "recharts": "^2.15.4",
50
+ "swr": "^2.4.1",
40
51
  "tailwind-merge": "^3.5.0",
41
- "xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
52
+ "xlsx": "^0.18.5",
53
+ "zod": "^4.3.6"
54
+ },
55
+ "overrides": {
56
+ "@lexkit/editor": {
57
+ "@lexical/code": "0.38.2",
58
+ "@lexical/link": "0.38.2",
59
+ "@lexical/table": "0.38.2",
60
+ "@lexical/clipboard": "0.38.2",
61
+ "@lexical/extension": "0.38.2",
62
+ "@lexical/html": "0.38.2",
63
+ "@lexical/list": "0.38.2",
64
+ "@lexical/selection": "0.38.2",
65
+ "@lexical/utils": "0.38.2",
66
+ "lexical": "0.38.2"
67
+ },
68
+ "@types/react": "19.2.14",
69
+ "@types/react-dom": "19.2.3"
70
+ },
71
+ "pnpm": {
72
+ "overrides": {
73
+ "@lexical/code": "0.38.2",
74
+ "@lexical/link": "0.38.2",
75
+ "@lexical/table": "0.38.2",
76
+ "@lexical/clipboard": "0.38.2",
77
+ "@lexical/extension": "0.38.2",
78
+ "@lexical/html": "0.38.2",
79
+ "@lexical/list": "0.38.2",
80
+ "@lexical/selection": "0.38.2",
81
+ "@lexical/utils": "0.38.2",
82
+ "lexical": "0.38.2"
83
+ }
42
84
  },
43
85
  "devDependencies": {
44
86
  "@tailwindcss/postcss": "^4.2.1",
45
87
  "@types/node": "^20.19.34",
46
88
  "@types/nodemailer": "^7.0.11",
47
- "@types/papaparse": "^5.5.2",
48
89
  "@types/pg": "^8.16.0",
49
90
  "@types/react": "19.2.14",
50
91
  "@types/react-dom": "19.2.3",
51
- "@types/react-grid-layout": "^2.1.0",
52
92
  "babel-plugin-react-compiler": "1.0.0",
53
93
  "eslint": "^9.39.3",
54
94
  "eslint-config-next": "16.1.6",
@@ -57,12 +97,7 @@
57
97
  "prisma": "^7.4.1",
58
98
  "tailwindcss": "^4.2.1",
59
99
  "tsx": "^4.21.0",
100
+ "tw-animate-css": "^1.4.0",
60
101
  "typescript": "^5.9.3"
61
- },
62
- "pnpm": {
63
- "overrides": {
64
- "@types/react": "19.2.14",
65
- "@types/react-dom": "19.2.3"
66
- }
67
102
  }
68
103
  }