Yassine Mhirsi commited on
Commit
60e34bb
·
1 Parent(s): b625f31
Files changed (3) hide show
  1. package-lock.json +68 -33
  2. package.json +1 -0
  3. src/index.js +21 -22
package-lock.json CHANGED
@@ -14,6 +14,7 @@
14
  "@testing-library/user-event": "^13.5.0",
15
  "lucide-react": "^0.561.0",
16
  "postgres": "^3.4.7",
 
17
  "react": "^19.1.0",
18
  "react-dom": "^19.1.0",
19
  "react-markdown": "^9.0.1",
@@ -77,7 +78,6 @@
77
  "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
78
  "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
79
  "license": "MIT",
80
- "peer": true,
81
  "dependencies": {
82
  "@babel/code-frame": "^7.27.1",
83
  "@babel/generator": "^7.28.5",
@@ -727,7 +727,6 @@
727
  "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz",
728
  "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==",
729
  "license": "MIT",
730
- "peer": true,
731
  "dependencies": {
732
  "@babel/helper-plugin-utils": "^7.27.1"
733
  },
@@ -1611,7 +1610,6 @@
1611
  "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz",
1612
  "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
1613
  "license": "MIT",
1614
- "peer": true,
1615
  "dependencies": {
1616
  "@babel/helper-annotate-as-pure": "^7.27.1",
1617
  "@babel/helper-module-imports": "^7.27.1",
@@ -2988,6 +2986,15 @@
2988
  }
2989
  }
2990
  },
 
 
 
 
 
 
 
 
 
2991
  "node_modules/@reduxjs/toolkit": {
2992
  "version": "2.11.1",
2993
  "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.1.tgz",
@@ -3389,7 +3396,6 @@
3389
  "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz",
3390
  "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
3391
  "license": "MIT",
3392
- "peer": true,
3393
  "dependencies": {
3394
  "@babel/code-frame": "^7.10.4",
3395
  "@babel/runtime": "^7.12.5",
@@ -3867,7 +3873,6 @@
3867
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
3868
  "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
3869
  "license": "MIT",
3870
- "peer": true,
3871
  "dependencies": {
3872
  "csstype": "^3.2.2"
3873
  }
@@ -3878,7 +3883,6 @@
3878
  "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
3879
  "devOptional": true,
3880
  "license": "MIT",
3881
- "peer": true,
3882
  "peerDependencies": {
3883
  "@types/react": "^19.2.0"
3884
  }
@@ -4005,7 +4009,6 @@
4005
  "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
4006
  "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
4007
  "license": "MIT",
4008
- "peer": true,
4009
  "dependencies": {
4010
  "@eslint-community/regexpp": "^4.4.0",
4011
  "@typescript-eslint/scope-manager": "5.62.0",
@@ -4059,7 +4062,6 @@
4059
  "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
4060
  "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
4061
  "license": "BSD-2-Clause",
4062
- "peer": true,
4063
  "dependencies": {
4064
  "@typescript-eslint/scope-manager": "5.62.0",
4065
  "@typescript-eslint/types": "5.62.0",
@@ -4429,7 +4431,6 @@
4429
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
4430
  "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
4431
  "license": "MIT",
4432
- "peer": true,
4433
  "bin": {
4434
  "acorn": "bin/acorn"
4435
  },
@@ -4528,7 +4529,6 @@
4528
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
4529
  "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
4530
  "license": "MIT",
4531
- "peer": true,
4532
  "dependencies": {
4533
  "fast-deep-equal": "^3.1.1",
4534
  "fast-json-stable-stringify": "^2.0.0",
@@ -5446,7 +5446,6 @@
5446
  }
5447
  ],
5448
  "license": "MIT",
5449
- "peer": true,
5450
  "dependencies": {
5451
  "baseline-browser-mapping": "^2.9.0",
5452
  "caniuse-lite": "^1.0.30001759",
@@ -7533,7 +7532,6 @@
7533
  "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
7534
  "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
7535
  "license": "MIT",
7536
- "peer": true,
7537
  "dependencies": {
7538
  "@eslint-community/eslint-utils": "^4.2.0",
7539
  "@eslint-community/regexpp": "^4.6.1",
@@ -8376,6 +8374,12 @@
8376
  "bser": "2.1.1"
8377
  }
8378
  },
 
 
 
 
 
 
8379
  "node_modules/file-entry-cache": {
8380
  "version": "6.0.1",
8381
  "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -10405,7 +10409,6 @@
10405
  "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
10406
  "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
10407
  "license": "MIT",
10408
- "peer": true,
10409
  "dependencies": {
10410
  "@jest/core": "^27.5.1",
10411
  "import-local": "^3.0.2",
@@ -11291,7 +11294,6 @@
11291
  "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
11292
  "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
11293
  "license": "MIT",
11294
- "peer": true,
11295
  "bin": {
11296
  "jiti": "bin/jiti.js"
11297
  }
@@ -13277,7 +13279,6 @@
13277
  }
13278
  ],
13279
  "license": "MIT",
13280
- "peer": true,
13281
  "dependencies": {
13282
  "nanoid": "^3.3.11",
13283
  "picocolors": "^1.1.1",
@@ -14412,7 +14413,6 @@
14412
  "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
14413
  "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
14414
  "license": "MIT",
14415
- "peer": true,
14416
  "dependencies": {
14417
  "cssesc": "^3.0.0",
14418
  "util-deprecate": "^1.0.2"
@@ -14529,6 +14529,35 @@
14529
  "url": "https://github.com/sponsors/porsager"
14530
  }
14531
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14532
  "node_modules/prelude-ls": {
14533
  "version": "1.2.1",
14534
  "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -14783,7 +14812,6 @@
14783
  "resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz",
14784
  "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==",
14785
  "license": "MIT",
14786
- "peer": true,
14787
  "engines": {
14788
  "node": ">=0.10.0"
14789
  }
@@ -14915,7 +14943,6 @@
14915
  "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz",
14916
  "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==",
14917
  "license": "MIT",
14918
- "peer": true,
14919
  "dependencies": {
14920
  "scheduler": "^0.27.0"
14921
  },
@@ -14933,8 +14960,7 @@
14933
  "version": "17.0.2",
14934
  "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
14935
  "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
14936
- "license": "MIT",
14937
- "peer": true
14938
  },
14939
  "node_modules/react-markdown": {
14940
  "version": "9.1.0",
@@ -14968,7 +14994,6 @@
14968
  "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
14969
  "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==",
14970
  "license": "MIT",
14971
- "peer": true,
14972
  "dependencies": {
14973
  "@types/use-sync-external-store": "^0.0.6",
14974
  "use-sync-external-store": "^1.4.0"
@@ -14992,7 +15017,6 @@
14992
  "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
14993
  "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==",
14994
  "license": "MIT",
14995
- "peer": true,
14996
  "engines": {
14997
  "node": ">=0.10.0"
14998
  }
@@ -15231,8 +15255,7 @@
15231
  "version": "5.0.1",
15232
  "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
15233
  "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
15234
- "license": "MIT",
15235
- "peer": true
15236
  },
15237
  "node_modules/redux-thunk": {
15238
  "version": "3.1.0",
@@ -15591,7 +15614,6 @@
15591
  "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
15592
  "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
15593
  "license": "MIT",
15594
- "peer": true,
15595
  "bin": {
15596
  "rollup": "dist/bin/rollup"
15597
  },
@@ -15834,7 +15856,6 @@
15834
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
15835
  "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
15836
  "license": "MIT",
15837
- "peer": true,
15838
  "dependencies": {
15839
  "fast-deep-equal": "^3.1.3",
15840
  "fast-uri": "^3.0.1",
@@ -17129,6 +17150,23 @@
17129
  }
17130
  }
17131
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17132
  "node_modules/tapable": {
17133
  "version": "2.3.0",
17134
  "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
@@ -17352,7 +17390,6 @@
17352
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
17353
  "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
17354
  "license": "MIT",
17355
- "peer": true,
17356
  "engines": {
17357
  "node": ">=12"
17358
  },
@@ -17645,9 +17682,9 @@
17645
  }
17646
  },
17647
  "node_modules/typescript": {
17648
- "version": "5.9.3",
17649
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
17650
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
17651
  "license": "Apache-2.0",
17652
  "peer": true,
17653
  "bin": {
@@ -17655,7 +17692,7 @@
17655
  "tsserver": "bin/tsserver"
17656
  },
17657
  "engines": {
17658
- "node": ">=14.17"
17659
  }
17660
  },
17661
  "node_modules/unbox-primitive": {
@@ -18128,7 +18165,6 @@
18128
  "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz",
18129
  "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==",
18130
  "license": "MIT",
18131
- "peer": true,
18132
  "dependencies": {
18133
  "@types/eslint-scope": "^3.7.7",
18134
  "@types/estree": "^1.0.8",
@@ -18612,7 +18648,6 @@
18612
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
18613
  "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
18614
  "license": "MIT",
18615
- "peer": true,
18616
  "dependencies": {
18617
  "fast-deep-equal": "^3.1.3",
18618
  "fast-uri": "^3.0.1",
 
14
  "@testing-library/user-event": "^13.5.0",
15
  "lucide-react": "^0.561.0",
16
  "postgres": "^3.4.7",
17
+ "posthog-js": "^1.310.1",
18
  "react": "^19.1.0",
19
  "react-dom": "^19.1.0",
20
  "react-markdown": "^9.0.1",
 
78
  "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
79
  "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
80
  "license": "MIT",
 
81
  "dependencies": {
82
  "@babel/code-frame": "^7.27.1",
83
  "@babel/generator": "^7.28.5",
 
727
  "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz",
728
  "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==",
729
  "license": "MIT",
 
730
  "dependencies": {
731
  "@babel/helper-plugin-utils": "^7.27.1"
732
  },
 
1610
  "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz",
1611
  "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
1612
  "license": "MIT",
 
1613
  "dependencies": {
1614
  "@babel/helper-annotate-as-pure": "^7.27.1",
1615
  "@babel/helper-module-imports": "^7.27.1",
 
2986
  }
2987
  }
2988
  },
2989
+ "node_modules/@posthog/core": {
2990
+ "version": "1.9.0",
2991
+ "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.9.0.tgz",
2992
+ "integrity": "sha512-j7KSWxJTUtNyKynLt/p0hfip/3I46dWU2dk+pt7dKRoz2l5CYueHuHK4EO7Wlgno5yo1HO4sc4s30MXMTICHJw==",
2993
+ "license": "MIT",
2994
+ "dependencies": {
2995
+ "cross-spawn": "^7.0.6"
2996
+ }
2997
+ },
2998
  "node_modules/@reduxjs/toolkit": {
2999
  "version": "2.11.1",
3000
  "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.1.tgz",
 
3396
  "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz",
3397
  "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
3398
  "license": "MIT",
 
3399
  "dependencies": {
3400
  "@babel/code-frame": "^7.10.4",
3401
  "@babel/runtime": "^7.12.5",
 
3873
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
3874
  "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
3875
  "license": "MIT",
 
3876
  "dependencies": {
3877
  "csstype": "^3.2.2"
3878
  }
 
3883
  "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
3884
  "devOptional": true,
3885
  "license": "MIT",
 
3886
  "peerDependencies": {
3887
  "@types/react": "^19.2.0"
3888
  }
 
4009
  "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
4010
  "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
4011
  "license": "MIT",
 
4012
  "dependencies": {
4013
  "@eslint-community/regexpp": "^4.4.0",
4014
  "@typescript-eslint/scope-manager": "5.62.0",
 
4062
  "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
4063
  "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
4064
  "license": "BSD-2-Clause",
 
4065
  "dependencies": {
4066
  "@typescript-eslint/scope-manager": "5.62.0",
4067
  "@typescript-eslint/types": "5.62.0",
 
4431
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
4432
  "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
4433
  "license": "MIT",
 
4434
  "bin": {
4435
  "acorn": "bin/acorn"
4436
  },
 
4529
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
4530
  "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
4531
  "license": "MIT",
 
4532
  "dependencies": {
4533
  "fast-deep-equal": "^3.1.1",
4534
  "fast-json-stable-stringify": "^2.0.0",
 
5446
  }
5447
  ],
5448
  "license": "MIT",
 
5449
  "dependencies": {
5450
  "baseline-browser-mapping": "^2.9.0",
5451
  "caniuse-lite": "^1.0.30001759",
 
7532
  "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
7533
  "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
7534
  "license": "MIT",
 
7535
  "dependencies": {
7536
  "@eslint-community/eslint-utils": "^4.2.0",
7537
  "@eslint-community/regexpp": "^4.6.1",
 
8374
  "bser": "2.1.1"
8375
  }
8376
  },
8377
+ "node_modules/fflate": {
8378
+ "version": "0.4.8",
8379
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
8380
+ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==",
8381
+ "license": "MIT"
8382
+ },
8383
  "node_modules/file-entry-cache": {
8384
  "version": "6.0.1",
8385
  "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
 
10409
  "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
10410
  "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
10411
  "license": "MIT",
 
10412
  "dependencies": {
10413
  "@jest/core": "^27.5.1",
10414
  "import-local": "^3.0.2",
 
11294
  "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
11295
  "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
11296
  "license": "MIT",
 
11297
  "bin": {
11298
  "jiti": "bin/jiti.js"
11299
  }
 
13279
  }
13280
  ],
13281
  "license": "MIT",
 
13282
  "dependencies": {
13283
  "nanoid": "^3.3.11",
13284
  "picocolors": "^1.1.1",
 
14413
  "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
14414
  "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
14415
  "license": "MIT",
 
14416
  "dependencies": {
14417
  "cssesc": "^3.0.0",
14418
  "util-deprecate": "^1.0.2"
 
14529
  "url": "https://github.com/sponsors/porsager"
14530
  }
14531
  },
14532
+ "node_modules/posthog-js": {
14533
+ "version": "1.310.1",
14534
+ "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.310.1.tgz",
14535
+ "integrity": "sha512-UkR6zzlWNtqHDXHJl2Yk062DOmZyVKTPL5mX4j4V+u3RiYbMHJe47+PpMMUsvK1R2e1r/m9uSlHaJMJRzyUjGg==",
14536
+ "license": "SEE LICENSE IN LICENSE",
14537
+ "dependencies": {
14538
+ "@posthog/core": "1.9.0",
14539
+ "core-js": "^3.38.1",
14540
+ "fflate": "^0.4.8",
14541
+ "preact": "^10.19.3",
14542
+ "web-vitals": "^4.2.4"
14543
+ }
14544
+ },
14545
+ "node_modules/posthog-js/node_modules/web-vitals": {
14546
+ "version": "4.2.4",
14547
+ "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz",
14548
+ "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==",
14549
+ "license": "Apache-2.0"
14550
+ },
14551
+ "node_modules/preact": {
14552
+ "version": "10.28.1",
14553
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.1.tgz",
14554
+ "integrity": "sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw==",
14555
+ "license": "MIT",
14556
+ "funding": {
14557
+ "type": "opencollective",
14558
+ "url": "https://opencollective.com/preact"
14559
+ }
14560
+ },
14561
  "node_modules/prelude-ls": {
14562
  "version": "1.2.1",
14563
  "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
 
14812
  "resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz",
14813
  "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==",
14814
  "license": "MIT",
 
14815
  "engines": {
14816
  "node": ">=0.10.0"
14817
  }
 
14943
  "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz",
14944
  "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==",
14945
  "license": "MIT",
 
14946
  "dependencies": {
14947
  "scheduler": "^0.27.0"
14948
  },
 
14960
  "version": "17.0.2",
14961
  "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
14962
  "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
14963
+ "license": "MIT"
 
14964
  },
14965
  "node_modules/react-markdown": {
14966
  "version": "9.1.0",
 
14994
  "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
14995
  "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==",
14996
  "license": "MIT",
 
14997
  "dependencies": {
14998
  "@types/use-sync-external-store": "^0.0.6",
14999
  "use-sync-external-store": "^1.4.0"
 
15017
  "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
15018
  "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==",
15019
  "license": "MIT",
 
15020
  "engines": {
15021
  "node": ">=0.10.0"
15022
  }
 
15255
  "version": "5.0.1",
15256
  "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
15257
  "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
15258
+ "license": "MIT"
 
15259
  },
15260
  "node_modules/redux-thunk": {
15261
  "version": "3.1.0",
 
15614
  "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
15615
  "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
15616
  "license": "MIT",
 
15617
  "bin": {
15618
  "rollup": "dist/bin/rollup"
15619
  },
 
15856
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
15857
  "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
15858
  "license": "MIT",
 
15859
  "dependencies": {
15860
  "fast-deep-equal": "^3.1.3",
15861
  "fast-uri": "^3.0.1",
 
17150
  }
17151
  }
17152
  },
17153
+ "node_modules/tailwindcss/node_modules/yaml": {
17154
+ "version": "2.8.2",
17155
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
17156
+ "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
17157
+ "license": "ISC",
17158
+ "optional": true,
17159
+ "peer": true,
17160
+ "bin": {
17161
+ "yaml": "bin.mjs"
17162
+ },
17163
+ "engines": {
17164
+ "node": ">= 14.6"
17165
+ },
17166
+ "funding": {
17167
+ "url": "https://github.com/sponsors/eemeli"
17168
+ }
17169
+ },
17170
  "node_modules/tapable": {
17171
  "version": "2.3.0",
17172
  "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
 
17390
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
17391
  "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
17392
  "license": "MIT",
 
17393
  "engines": {
17394
  "node": ">=12"
17395
  },
 
17682
  }
17683
  },
17684
  "node_modules/typescript": {
17685
+ "version": "4.9.5",
17686
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
17687
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
17688
  "license": "Apache-2.0",
17689
  "peer": true,
17690
  "bin": {
 
17692
  "tsserver": "bin/tsserver"
17693
  },
17694
  "engines": {
17695
+ "node": ">=4.2.0"
17696
  }
17697
  },
17698
  "node_modules/unbox-primitive": {
 
18165
  "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz",
18166
  "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==",
18167
  "license": "MIT",
 
18168
  "dependencies": {
18169
  "@types/eslint-scope": "^3.7.7",
18170
  "@types/estree": "^1.0.8",
 
18648
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
18649
  "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
18650
  "license": "MIT",
 
18651
  "dependencies": {
18652
  "fast-deep-equal": "^3.1.3",
18653
  "fast-uri": "^3.0.1",
package.json CHANGED
@@ -9,6 +9,7 @@
9
  "@testing-library/user-event": "^13.5.0",
10
  "lucide-react": "^0.561.0",
11
  "postgres": "^3.4.7",
 
12
  "react": "^19.1.0",
13
  "react-dom": "^19.1.0",
14
  "react-markdown": "^9.0.1",
 
9
  "@testing-library/user-event": "^13.5.0",
10
  "lucide-react": "^0.561.0",
11
  "postgres": "^3.4.7",
12
+ "posthog-js": "^1.310.1",
13
  "react": "^19.1.0",
14
  "react-dom": "^19.1.0",
15
  "react-markdown": "^9.0.1",
src/index.js CHANGED
@@ -1,28 +1,27 @@
1
- import React from 'react';
2
- import ReactDOM from 'react-dom/client';
3
- import './index.css';
4
- import App from './app/App.tsx';
5
- import ErrorBoundary from './app/components/common/ErrorBoundary.tsx';
6
- import reportWebVitals from './reportWebVitals';
 
7
 
8
- // Initialize theme from localStorage before rendering to prevent flash
9
- const storedTheme = localStorage.getItem('app-theme') || 'dark';
10
- if (storedTheme === 'dark') {
11
- document.documentElement.classList.add('dark');
12
- } else {
13
- document.documentElement.classList.remove('dark');
14
- }
15
 
16
- const root = ReactDOM.createRoot(document.getElementById('root'));
17
  root.render(
18
  <React.StrictMode>
19
- <ErrorBoundary>
20
- <App />
21
- </ErrorBoundary>
 
 
 
 
 
 
 
 
22
  </React.StrictMode>
23
- );
24
 
25
- // If you want to start measuring performance in your app, pass a function
26
- // to log results (for example: reportWebVitals(console.log))
27
- // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
28
- reportWebVitals();
 
1
+ import React from 'react'
2
+ import ReactDOM from 'react-dom/client'
3
+ import './index.css'
4
+ import App from './app/App.tsx'
5
+ import ErrorBoundary from './app/components/common/ErrorBoundary.tsx'
6
+ import reportWebVitals from './reportWebVitals'
7
+ import { PostHogProvider } from 'posthog-js/react'
8
 
9
+ const root = ReactDOM.createRoot(document.getElementById('root'))
 
 
 
 
 
 
10
 
 
11
  root.render(
12
  <React.StrictMode>
13
+ <PostHogProvider
14
+ apiKey={process.env.REACT_APP_POSTHOG_KEY}
15
+ options={{
16
+ api_host: process.env.REACT_APP_POSTHOG_HOST || 'https://us.i.posthog.com',
17
+ autocapture: true,
18
+ }}
19
+ >
20
+ <ErrorBoundary>
21
+ <App />
22
+ </ErrorBoundary>
23
+ </PostHogProvider>
24
  </React.StrictMode>
25
+ )
26
 
27
+ reportWebVitals()