diff --git a/package.json b/package.json
index 0aa5c9a..bff7224 100644
--- a/package.json
+++ b/package.json
@@ -24,8 +24,6 @@
"eslint": "^9.18.0",
"eslint-config-prettier": "^10.0.1",
"eslint-plugin-svelte": "^3.0.0",
- "flowbite": "^3.1.2",
- "flowbite-svelte": "^0.48.6",
"globals": "^16.0.0",
"prettier": "^3.5.3",
"prettier-plugin-svelte": "^3.3.3",
@@ -44,16 +42,11 @@
]
},
"dependencies": {
- "@fortawesome/free-brands-svg-icons": "^6.7.2",
- "@fortawesome/free-solid-svg-icons": "^6.7.2",
"@lucide/svelte": "^0.511.0",
"@prisma/client": "6.5.0",
"axios": "^1.8.4",
"date-fns": "^4.1.0",
- "flowbite-svelte-blocks": "^1.1.4",
- "flowbite-svelte-icons": "^2.1.1",
"marked": "^15.0.8",
- "svelte-fa": "^4.0.3",
"svelte-highlight": "^7.8.3",
"svelte-meta-tags": "^4.3.0",
"uuid": "^11.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bb91ac3..f32d9b6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,12 +8,6 @@ importers:
.:
dependencies:
- '@fortawesome/free-brands-svg-icons':
- specifier: ^6.7.2
- version: 6.7.2
- '@fortawesome/free-solid-svg-icons':
- specifier: ^6.7.2
- version: 6.7.2
'@lucide/svelte':
specifier: ^0.511.0
version: 0.511.0(svelte@5.27.0)
@@ -26,18 +20,9 @@ importers:
date-fns:
specifier: ^4.1.0
version: 4.1.0
- flowbite-svelte-blocks:
- specifier: ^1.1.4
- version: 1.1.4(rollup@4.39.0)(svelte@5.27.0)
- flowbite-svelte-icons:
- specifier: ^2.1.1
- version: 2.1.1(svelte@5.27.0)(tailwind-merge@3.2.0)
marked:
specifier: ^15.0.8
version: 15.0.8
- svelte-fa:
- specifier: ^4.0.3
- version: 4.0.3(svelte@5.27.0)
svelte-highlight:
specifier: ^7.8.3
version: 7.8.3
@@ -81,12 +66,6 @@ importers:
eslint-plugin-svelte:
specifier: ^3.0.0
version: 3.5.1(eslint@9.24.0(jiti@2.4.2))(svelte@5.27.0)
- flowbite:
- specifier: ^3.1.2
- version: 3.1.2(rollup@4.39.0)
- flowbite-svelte:
- specifier: ^0.48.6
- version: 0.48.6(rollup@4.39.0)(svelte@5.27.0)
globals:
specifier: ^16.0.0
version: 16.0.0
@@ -328,27 +307,6 @@ packages:
resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@floating-ui/core@1.6.9':
- resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
-
- '@floating-ui/dom@1.6.13':
- resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
-
- '@floating-ui/utils@0.2.9':
- resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
-
- '@fortawesome/fontawesome-common-types@6.7.2':
- resolution: {integrity: sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==}
- engines: {node: '>=6'}
-
- '@fortawesome/free-brands-svg-icons@6.7.2':
- resolution: {integrity: sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==}
- engines: {node: '>=6'}
-
- '@fortawesome/free-solid-svg-icons@6.7.2':
- resolution: {integrity: sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==}
- engines: {node: '>=6'}
-
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -395,9 +353,6 @@ packages:
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
- '@popperjs/core@2.11.8':
- resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
-
'@prisma/client@6.5.0':
resolution: {integrity: sha512-M6w1Ql/BeiGoZmhMdAZUXHu5sz5HubyVcKukbLs3l0ELcQb8hTUJxtGEChhv4SVJ0QJlwtLnwOLgIRQhpsm9dw==}
engines: {node: '>=18.18'}
@@ -446,15 +401,6 @@ packages:
rollup:
optional: true
- '@rollup/plugin-node-resolve@15.3.1':
- resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- rollup: ^2.78.0||^3.0.0||^4.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
-
'@rollup/plugin-node-resolve@16.0.1':
resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==}
engines: {node: '>=14.0.0'}
@@ -714,9 +660,6 @@ packages:
'@types/resolve@1.20.2':
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
- '@yr/monotone-cubic-spline@1.0.3':
- resolution: {integrity: sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==}
-
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -734,9 +677,6 @@ packages:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
- apexcharts@3.54.1:
- resolution: {integrity: sha512-E4et0h/J1U3r3EwS/WlqJCQIbepKbp6wGUmaAwJOMjHUP4Ci0gxanLa7FR3okx6p9coi4st6J853/Cb1NP0vpA==}
-
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
@@ -977,32 +917,6 @@ packages:
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
- flowbite-datepicker@1.3.2:
- resolution: {integrity: sha512-6Nfm0MCVX3mpaR7YSCjmEO2GO8CDt6CX8ZpQnGdeu03WUCWtEPQ/uy0PUiNtIJjJZWnX0Cm3H55MOhbD1g+E/g==}
-
- flowbite-svelte-blocks@1.1.4:
- resolution: {integrity: sha512-+5CuefgXKmAGvnI3AqG5wKTQme2zum/DRrVeYtZ1rM6+t91e1aWDKvM358ij7irdjNLQ619ezjHqqJYKQPWZWg==}
- engines: {node: '>=16.0.0', npm: '>=7.0.0'}
- peerDependencies:
- svelte: ^4.0.0 || ^5.0.0
-
- flowbite-svelte-icons@2.1.1:
- resolution: {integrity: sha512-VNNMcekjbM1bQEGgbdGsdYR9mRdTj/L0A5ba0P1tiFv5QB9GvbvJMABJoiD80eqpZUkfR2QVOmiZfgCwHicT/Q==}
- peerDependencies:
- svelte: ^5.0.0
- tailwind-merge: ^3.0.0
-
- flowbite-svelte@0.48.6:
- resolution: {integrity: sha512-/PmeR3ipHHvda8vVY9MZlymaRoJsk8VddEeoLzIygfYwJV68ey8gHuQPC1dq9J6NDCTE5+xOPtBiYUtVjCfvZw==}
- peerDependencies:
- svelte: ^3.55.1 || ^4.0.0 || ^5.0.0
-
- flowbite@2.5.2:
- resolution: {integrity: sha512-kwFD3n8/YW4EG8GlY3Od9IoKND97kitO+/ejISHSqpn3vw2i5K/+ZI8Jm2V+KC4fGdnfi0XZ+TzYqQb4Q1LshA==}
-
- flowbite@3.1.2:
- resolution: {integrity: sha512-MkwSgbbybCYgMC+go6Da5idEKUFfMqc/AmSjm/2ZbdmvoKf5frLPq/eIhXc9P+rC8t9boZtUXzHDgt5whZ6A/Q==}
-
follow-redirects@1.15.9:
resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
engines: {node: '>=4.0'}
@@ -1245,10 +1159,6 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
- mini-svg-data-uri@1.4.4:
- resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
- hasBin: true
-
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -1511,11 +1421,6 @@ packages:
svelte:
optional: true
- svelte-fa@4.0.3:
- resolution: {integrity: sha512-saZ8yACM0k9Aexey+2NXU1W0MBosU5lBsRgqFCJKM+Taw7d0HyimPaPAjmvY/Xkyi3UwEYL/Sdu1IZJv/p0Flw==}
- peerDependencies:
- svelte: ^4.0.0 || ^5.0.0
-
svelte-highlight@7.8.3:
resolution: {integrity: sha512-i4CE/6yda1fCh0ovUVATk1S1feu1y3+CV+l1brgtMPPRO9VTGq+hPpUjVEJWQkE7hPAgwgVpHccoa5M2gpKxYQ==}
@@ -1528,43 +1433,6 @@ packages:
resolution: {integrity: sha512-Uai13Ydt1ZE+bUHme6b9U38PCYVNCqBRoBMkUKbFbKiD7kHWjdUUrklYAQZJxyKK81qII4mrBwe/YmvEMSlC9w==}
engines: {node: '>=18'}
- svg.draggable.js@2.2.2:
- resolution: {integrity: sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==}
- engines: {node: '>= 0.8.0'}
-
- svg.easing.js@2.0.0:
- resolution: {integrity: sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==}
- engines: {node: '>= 0.8.0'}
-
- svg.filter.js@2.0.2:
- resolution: {integrity: sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==}
- engines: {node: '>= 0.8.0'}
-
- svg.js@2.7.1:
- resolution: {integrity: sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==}
-
- svg.pathmorphing.js@0.1.3:
- resolution: {integrity: sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==}
- engines: {node: '>= 0.8.0'}
-
- svg.resize.js@1.4.3:
- resolution: {integrity: sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==}
- engines: {node: '>= 0.8.0'}
-
- svg.select.js@2.1.2:
- resolution: {integrity: sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==}
- engines: {node: '>= 0.8.0'}
-
- svg.select.js@3.0.1:
- resolution: {integrity: sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==}
- engines: {node: '>= 0.8.0'}
-
- tailwind-merge@2.6.0:
- resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
-
- tailwind-merge@3.2.0:
- resolution: {integrity: sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==}
-
tailwindcss@4.1.4:
resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==}
@@ -1804,27 +1672,6 @@ snapshots:
'@eslint/core': 0.13.0
levn: 0.4.1
- '@floating-ui/core@1.6.9':
- dependencies:
- '@floating-ui/utils': 0.2.9
-
- '@floating-ui/dom@1.6.13':
- dependencies:
- '@floating-ui/core': 1.6.9
- '@floating-ui/utils': 0.2.9
-
- '@floating-ui/utils@0.2.9': {}
-
- '@fortawesome/fontawesome-common-types@6.7.2': {}
-
- '@fortawesome/free-brands-svg-icons@6.7.2':
- dependencies:
- '@fortawesome/fontawesome-common-types': 6.7.2
-
- '@fortawesome/free-solid-svg-icons@6.7.2':
- dependencies:
- '@fortawesome/fontawesome-common-types': 6.7.2
-
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.6':
@@ -1861,8 +1708,6 @@ snapshots:
'@polka/url@1.0.0-next.29': {}
- '@popperjs/core@2.11.8': {}
-
'@prisma/client@6.5.0(prisma@6.5.0(typescript@5.8.3))(typescript@5.8.3)':
optionalDependencies:
prisma: 6.5.0(typescript@5.8.3)
@@ -1914,16 +1759,6 @@ snapshots:
optionalDependencies:
rollup: 4.39.0
- '@rollup/plugin-node-resolve@15.3.1(rollup@4.39.0)':
- dependencies:
- '@rollup/pluginutils': 5.1.4(rollup@4.39.0)
- '@types/resolve': 1.20.2
- deepmerge: 4.3.1
- is-module: 1.0.0
- resolve: 1.22.10
- optionalDependencies:
- rollup: 4.39.0
-
'@rollup/plugin-node-resolve@16.0.1(rollup@4.39.0)':
dependencies:
'@rollup/pluginutils': 5.1.4(rollup@4.39.0)
@@ -2134,8 +1969,6 @@ snapshots:
'@types/resolve@1.20.2': {}
- '@yr/monotone-cubic-spline@1.0.3': {}
-
acorn-jsx@5.3.2(acorn@8.14.1):
dependencies:
acorn: 8.14.1
@@ -2153,16 +1986,6 @@ snapshots:
dependencies:
color-convert: 2.0.1
- apexcharts@3.54.1:
- dependencies:
- '@yr/monotone-cubic-spline': 1.0.3
- svg.draggable.js: 2.2.2
- svg.easing.js: 2.0.0
- svg.filter.js: 2.0.2
- svg.pathmorphing.js: 0.1.3
- svg.resize.js: 1.4.3
- svg.select.js: 3.0.1
-
argparse@2.0.1: {}
aria-query@5.3.2: {}
@@ -2431,53 +2254,6 @@ snapshots:
flatted@3.3.3: {}
- flowbite-datepicker@1.3.2(rollup@4.39.0):
- dependencies:
- '@rollup/plugin-node-resolve': 15.3.1(rollup@4.39.0)
- flowbite: 2.5.2(rollup@4.39.0)
- transitivePeerDependencies:
- - rollup
-
- flowbite-svelte-blocks@1.1.4(rollup@4.39.0)(svelte@5.27.0):
- dependencies:
- flowbite: 2.5.2(rollup@4.39.0)
- svelte: 5.27.0
- tailwind-merge: 2.6.0
- transitivePeerDependencies:
- - rollup
-
- flowbite-svelte-icons@2.1.1(svelte@5.27.0)(tailwind-merge@3.2.0):
- dependencies:
- svelte: 5.27.0
- tailwind-merge: 3.2.0
-
- flowbite-svelte@0.48.6(rollup@4.39.0)(svelte@5.27.0):
- dependencies:
- '@floating-ui/dom': 1.6.13
- apexcharts: 3.54.1
- flowbite: 3.1.2(rollup@4.39.0)
- svelte: 5.27.0
- tailwind-merge: 3.2.0
- transitivePeerDependencies:
- - rollup
-
- flowbite@2.5.2(rollup@4.39.0):
- dependencies:
- '@popperjs/core': 2.11.8
- flowbite-datepicker: 1.3.2(rollup@4.39.0)
- mini-svg-data-uri: 1.4.4
- transitivePeerDependencies:
- - rollup
-
- flowbite@3.1.2(rollup@4.39.0):
- dependencies:
- '@popperjs/core': 2.11.8
- flowbite-datepicker: 1.3.2(rollup@4.39.0)
- mini-svg-data-uri: 1.4.4
- postcss: 8.5.3
- transitivePeerDependencies:
- - rollup
-
follow-redirects@1.15.9: {}
form-data@4.0.2:
@@ -2667,8 +2443,6 @@ snapshots:
dependencies:
mime-db: 1.52.0
- mini-svg-data-uri@1.4.4: {}
-
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
@@ -2869,10 +2643,6 @@ snapshots:
optionalDependencies:
svelte: 5.27.0
- svelte-fa@4.0.3(svelte@5.27.0):
- dependencies:
- svelte: 5.27.0
-
svelte-highlight@7.8.3:
dependencies:
highlight.js: 11.11.1
@@ -2899,41 +2669,6 @@ snapshots:
magic-string: 0.30.17
zimmerframe: 1.1.2
- svg.draggable.js@2.2.2:
- dependencies:
- svg.js: 2.7.1
-
- svg.easing.js@2.0.0:
- dependencies:
- svg.js: 2.7.1
-
- svg.filter.js@2.0.2:
- dependencies:
- svg.js: 2.7.1
-
- svg.js@2.7.1: {}
-
- svg.pathmorphing.js@0.1.3:
- dependencies:
- svg.js: 2.7.1
-
- svg.resize.js@1.4.3:
- dependencies:
- svg.js: 2.7.1
- svg.select.js: 2.1.2
-
- svg.select.js@2.1.2:
- dependencies:
- svg.js: 2.7.1
-
- svg.select.js@3.0.1:
- dependencies:
- svg.js: 2.7.1
-
- tailwind-merge@2.6.0: {}
-
- tailwind-merge@3.2.0: {}
-
tailwindcss@4.1.4: {}
tapable@2.2.1: {}
diff --git a/src/app.css b/src/app.css
index e9f78c8..a596c08 100644
--- a/src/app.css
+++ b/src/app.css
@@ -1,24 +1,3 @@
@import 'tailwindcss';
@plugin '@tailwindcss/typography';
-@plugin 'flowbite/plugin';
-
-@custom-variant dark (&:where(.dark, .dark *));
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-:root {
- --color-primary-50: #fff5f2;
- --color-primary-100: #fff1ee;
- --color-primary-200: #ffe4de;
- --color-primary-300: #ffd5cc;
- --color-primary-400: #ffbcad;
- --color-primary-500: #fe795d;
- --color-primary-600: #ef562f;
- --color-primary-700: #eb4f27;
- --color-primary-800: #cc4522;
- --color-primary-900: #a5371b;
-}
-
-@source "../node_modules/flowbite-svelte/dist";
\ No newline at end of file
diff --git a/src/lib/components/LeadCard.svelte b/src/lib/components/LeadCard.svelte
deleted file mode 100644
index fa2839a..0000000
--- a/src/lib/components/LeadCard.svelte
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
selectLeadList(item.id)}>{item.title}
-
deleteLead(item.id)}>
-
-
-
-
-
- {item.country} - source {item.source} - status {item.status}
-
-
-
- {#each item.tags as tag}
- {tag}
- {/each}
-
-
-
- Created {FormateTime(item.created_at)} by
-
- {item.first_name} {item.last_name}
-
-
-
\ No newline at end of file
diff --git a/src/lib/components/TaskModal.svelte b/src/lib/components/TaskModal.svelte
deleted file mode 100644
index c9f0f9c..0000000
--- a/src/lib/components/TaskModal.svelte
+++ /dev/null
@@ -1,319 +0,0 @@
-
-
- dispatch('close')} onkeydown={(e) => (e.key === 'Enter' || e.key === ' ') && dispatch('close')} aria-label="Close modal" tabindex="0">
-
- {#if loading}
-
-
- Loading...
-
- {:else if error}
-
{error}
- {:else}
-
-
{details.description}
-
- Due:
-
- {details.dueDate ? new Date(details.dueDate).toLocaleDateString() : '—'}
-
-
- Assigned to:
-
- Unassigned
- {#each users as user}
- {user.name} ({user.email})
- {/each}
-
- {details.assignee?.name || 'Unassigned'}
-
-
Activity & Comments
-
-
-
dispatch('close')}>Close
- {/if}
-
-
-
diff --git a/src/lib/newsletter.js b/src/lib/newsletter.js
index dbf04f0..38e47c0 100644
--- a/src/lib/newsletter.js
+++ b/src/lib/newsletter.js
@@ -6,7 +6,7 @@
* @param {string} baseUrl - Base URL of the application
* @returns {string} Unsubscribe URL
*/
-export function generateUnsubscribeLink(token, baseUrl = 'https://bottlecrm.com') {
+export function generateUnsubscribeLink(token, baseUrl = 'https://bottlecrm.io') {
return `${baseUrl}/unsubscribe?token=${token}`;
}
@@ -54,14 +54,14 @@ export function generateWelcomeEmail(email, unsubscribeLink) {
You're receiving this email because you subscribed to BottleCRM newsletter.
Unsubscribe |
- Visit Website
+ Visit Website
BottleCRM by MicroPyramid
@@ -81,14 +81,14 @@ export function generateWelcomeEmail(email, unsubscribeLink) {
• Industry Insights: Stay ahead with the latest CRM trends and strategies
• Exclusive Content: Guides and resources available only to subscribers
- Try BottleCRM Free: https://bottlecrm.com/demo
+ Try BottleCRM Free: https://bottlecrm.io/demo
You're receiving this email because you subscribed to BottleCRM newsletter.
To unsubscribe, visit: ${unsubscribeLink}
BottleCRM by MicroPyramid
The free, open-source CRM for startups
- https://bottlecrm.com
+ https://bottlecrm.io
`
};
}
@@ -100,7 +100,7 @@ export function generateWelcomeEmail(email, unsubscribeLink) {
* @returns {object} Newsletter template with subject and body
*/
export function generateNewsletterTemplate(content, unsubscribeLink) {
- const { subject, headline, articles = [], ctaText = 'Learn More', ctaLink = 'https://bottlecrm.com' } = content;
+ const { subject, headline, articles = [], ctaText = 'Learn More', ctaLink = 'https://bottlecrm.io' } = content;
const articlesHtml = articles.map(article => `
@@ -137,7 +137,7 @@ export function generateNewsletterTemplate(content, unsubscribeLink) {
You're receiving this email because you subscribed to BottleCRM newsletter.
Unsubscribe |
- Visit Website
+ Visit Website
BottleCRM by MicroPyramid
diff --git a/src/routes/(admin)/admin/blogs/[id]/+page.svelte b/src/routes/(admin)/admin/blogs/[id]/+page.svelte
index 871306e..3cbdfda 100644
--- a/src/routes/(admin)/admin/blogs/[id]/+page.svelte
+++ b/src/routes/(admin)/admin/blogs/[id]/+page.svelte
@@ -5,94 +5,160 @@
import Highlight from "svelte-highlight";
import python from "svelte-highlight/languages/python";
import "svelte-highlight/styles/github-dark.css"
- import Fa from "svelte-fa";
- import {
- faTwitter,
- faFacebook,
- faLinkedin,
- } from "@fortawesome/free-brands-svg-icons";
+ import { Edit, Facebook, Twitter, Linkedin, Share2 } from "@lucide/svelte";
/** @type {{ data: import('./$types').PageData }} */
let { data } = $props();
- // console.log(data.category)
-
-
-
+
+
+
-
-
-
-
-
{data.blog.category}
-
{data.blog.title}
-
+
+
+
+
+
+
+ {data.blog.title}
+
+
-
-
-
- {#each data.blog.contentBlocks as block}
-
- {#if block.type == "MARKDOWN"}
+
+
+
+
+
+ {#each data.blog.contentBlocks as block}
+
+ {#if block.type == "MARKDOWN"}
+
+ {@html marked(block.content)}
+
+ {/if}
-
{@html marked(block.content)}
- {/if}
+ {#if block.type == "CODE"}
+
+
+
+ {/if}
+
+ {/each}
+
- {#if block.type == "CODE"}
-
- {/if}
+
+
+
+
+
+
+ Share this post
- {/each}
+
+
+
+
+
-
-
Share this Blog post
-
-
Facebook
-
X
-
Linkedin
+
+
+
+
+
Blog Details
+
+
+ Category:
+ {data.blog.category}
+
+
+ Status:
+ Published
-
+
-
+
+
-
+
diff --git a/src/routes/(site)/+layout.svelte b/src/routes/(site)/+layout.svelte
index 649f415..d11e14a 100644
--- a/src/routes/(site)/+layout.svelte
+++ b/src/routes/(site)/+layout.svelte
@@ -75,7 +75,7 @@
-
+
diff --git a/src/routes/(site)/+page.svelte b/src/routes/(site)/+page.svelte
index 91fcc12..e8010ee 100644
--- a/src/routes/(site)/+page.svelte
+++ b/src/routes/(site)/+page.svelte
@@ -1,7 +1,7 @@
- BottleCRM | Free Open-Source CRM Software for Startups & Small Businesses - No Subscription Fees
-
-
-
+ BottleCRM: Free Open Source CRM for Startups & Small Business
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -312,37 +162,179 @@
- {#each features as feature, index}
- {#if mounted}
-
-
- {#if feature.comingSoon}
-
-
- Coming Soon
-
-
- {/if}
-
-
-
-
-
-
{feature.title}
-
{feature.description}
-
-
- {#each feature.benefits as benefit}
-
-
- {benefit}
-
- {/each}
-
-
- {/if}
- {/each}
+
+
+
+
+
+
+
Smart Contact Management System
+
Centralize customer data with our intuitive contact management system. Track customer interactions, manage qualified leads, and build stronger customer relationships. Perfect for startups, small businesses, and growing enterprises looking for efficient CRM software.
+
+
+
+
+ 360° Customer View
+
+
+
+ Lead Scoring
+
+
+
+ Contact Segmentation
+
+
+
+
+
+
+
+
+ Coming Soon
+
+
+
+
+
+
+
+
Visual Sales Pipeline Management
+
Streamline your sales process with our drag-and-drop sales pipeline. Track deals from lead qualification to closing, forecast revenue accurately, and implement powerful sales automation workflows to boost your conversion rates.
+
+
+
+
+ Deal Tracking
+
+
+
+ Sales Forecasting
+
+
+
+ Automation Workflows
+
+
+
+
+
+
+
+
+
+
+
Advanced Task & Project Management
+
Never miss a follow-up with integrated task management and project tracking. Set reminders, assign tasks to team members, track project milestones, and ensure maximum productivity across your sales and marketing teams.
+
+
+
+
+ Task Automation
+
+
+
+ Team Collaboration
+
+
+
+ Deadline Tracking
+
+
+
+
+
+
+
+
+ Coming Soon
+
+
+
+
+
+
+
+
Real-time Analytics & Reporting
+
Make data-driven decisions with comprehensive CRM analytics and business intelligence. Track sales performance, monitor marketing campaign effectiveness, and generate detailed reports to optimize your customer acquisition strategies.
+
+
+
+
+ Custom Dashboards
+
+
+
+ Performance Metrics
+
+
+
+ ROI Tracking
+
+
+
+
+
+
+
+
+ Coming Soon
+
+
+
+
+
+
+
+
Automated Invoice & Billing Management
+
Streamline your billing process with integrated invoicing software. Create professional invoices, track payments, manage recurring billing, and integrate with popular payment gateways. Perfect for service-based businesses and SaaS startups.
+
+
+
+
+ Payment Tracking
+
+
+
+ Recurring Billing
+
+
+
+ Payment Integration
+
+
+
+
+
+
+
+
+ Coming Soon
+
+
+
+
+
+
+
+
Mobile CRM & Cloud Access
+
Access your CRM data anywhere with our responsive, mobile-optimized interface. Work offline, sync data automatically, and manage your business on-the-go. Perfect for sales teams, remote workers, and field service management.
+
+
+
+
+ Offline Access
+
+
+
+ Real-time Sync
+
+
+
+ Cross-platform Support
+
+
+
@@ -373,33 +365,65 @@
- {#each competitors as competitor, index}
-
-
-
- {competitor.name}
- {#if index === 0}Recommended {/if}
-
-
- {competitor.price}
-
- {#if competitor.openSource}
-
- {:else}
-
- {/if}
-
-
- {#if competitor.selfHosted}
-
- {:else}
-
- {/if}
-
- {competitor.customizable}
- {competitor.userLimit}
-
- {/each}
+
+
+
+ BottleCRM
+ Recommended
+
+
+ Free
+
+
+
+
+
+
+ Yes
+ Unlimited
+
+
+
+ Enterprise CRM Solutions
+
+ $25-300+/user/month
+
+
+
+
+
+
+ Yes
+ Per seat pricing
+
+
+
+ Popular Cloud CRMs
+
+ $50-3200+/month
+
+
+
+
+
+
+ Limited
+ Contact-based pricing
+
+
+
+ Traditional CRM Platforms
+
+ $15-99+/user/month
+
+
+
+
+
+
+ Limited
+ Per seat pricing
+
@@ -418,57 +442,6 @@
-
-
-
@@ -482,26 +455,119 @@
- {#each faqs as faq, index}
-
-
toggleFaq(index)}
- class="w-full px-6 py-5 text-left focus:outline-none focus:bg-gray-100 hover:bg-gray-100 transition-colors duration-200"
- aria-expanded={activeFaq === index}
- >
-
-
{faq.question}
-
-
-
-
- {#if activeFaq === index}
-
- {/if}
-
- {/each}
+
+
toggleFaq(0)}
+ class="w-full px-6 py-5 text-left focus:outline-none focus:bg-gray-100 hover:bg-gray-100 transition-colors duration-200"
+ aria-expanded={activeFaq === 0}
+ >
+
+
Is BottleCRM really free to use?
+
+
+
+
+ {#if activeFaq === 0}
+
+
Yes! BottleCRM is 100% free and open-source. You can download, install, customize, and use it without any subscription fees or hidden costs. We also offer optional paid support services for hosting and customization.
+
+ {/if}
+
+
+
+
toggleFaq(1)}
+ class="w-full px-6 py-5 text-left focus:outline-none focus:bg-gray-100 hover:bg-gray-100 transition-colors duration-200"
+ aria-expanded={activeFaq === 1}
+ >
+
+
How does BottleCRM compare to traditional CRM platforms?
+
+
+
+
+ {#if activeFaq === 1}
+
+
BottleCRM offers many of the same core features as enterprise CRM platforms but without the high monthly costs. While some commercial CRMs might have more advanced features, BottleCRM provides everything most startups and small businesses need to manage customer relationships effectively.
+
+ {/if}
+
+
+
+
toggleFaq(2)}
+ class="w-full px-6 py-5 text-left focus:outline-none focus:bg-gray-100 hover:bg-gray-100 transition-colors duration-200"
+ aria-expanded={activeFaq === 2}
+ >
+
+
Can I self-host BottleCRM on my own servers?
+
+
+
+
+ {#if activeFaq === 2}
+
+
Absolutely! BottleCRM is designed to be self-hosted. You have complete control over your data and can deploy it on your own servers, cloud infrastructure, or local environment. This ensures data privacy and eliminates vendor lock-in.
+
+ {/if}
+
+
+
+
toggleFaq(3)}
+ class="w-full px-6 py-5 text-left focus:outline-none focus:bg-gray-100 hover:bg-gray-100 transition-colors duration-200"
+ aria-expanded={activeFaq === 3}
+ >
+
+
What technology stack does BottleCRM use?
+
+
+
+
+ {#if activeFaq === 3}
+
+
BottleCRM is built with modern web technologies: SvelteKit 2.21.x for the frontend, Prisma for database management, TailwindCSS for styling, and includes integration capabilities with various third-party services.
+
+ {/if}
+
+
+
+
toggleFaq(4)}
+ class="w-full px-6 py-5 text-left focus:outline-none focus:bg-gray-100 hover:bg-gray-100 transition-colors duration-200"
+ aria-expanded={activeFaq === 4}
+ >
+
+
Do you provide support for BottleCRM implementation?
+
+
+
+
+ {#if activeFaq === 4}
+
+
Yes! While the software is free, we offer paid professional services including hosting setup, custom development, data migration, training, and ongoing technical support to help you get the most out of BottleCRM.
+
+ {/if}
+
+
+
+
toggleFaq(5)}
+ class="w-full px-6 py-5 text-left focus:outline-none focus:bg-gray-100 hover:bg-gray-100 transition-colors duration-200"
+ aria-expanded={activeFaq === 5}
+ >
+
+
Is BottleCRM suitable for my industry?
+
+
+
+
+ {#if activeFaq === 5}
+
+
BottleCRM is industry-agnostic and works well for most businesses including SaaS startups, consulting firms, e-commerce businesses, real estate agencies, and service-based companies. Its customizable nature allows adaptation to various industry-specific needs.
+
+ {/if}
+
diff --git a/src/routes/(site)/contact/+page.svelte b/src/routes/(site)/contact/+page.svelte
index ca1557a..78e6079 100644
--- a/src/routes/(site)/contact/+page.svelte
+++ b/src/routes/(site)/contact/+page.svelte
@@ -68,24 +68,52 @@
- Contact BottleCRM | Get Professional CRM Setup, Hosting & Custom Development Services
-
-
-
+ Contact BottleCRM | Free CRM & Professional Services
+
+
+
+
-
-
-
-
-
+
+
+ `}
diff --git a/src/routes/(site)/customization/+page.svelte b/src/routes/(site)/customization/+page.svelte
index 4013dd8..8e885bf 100644
--- a/src/routes/(site)/customization/+page.svelte
+++ b/src/routes/(site)/customization/+page.svelte
@@ -43,34 +43,73 @@
- BottleCRM Customization | Custom CRM Development & Professional Services
-
-
-
+ BottleCRM Customization: Free Open Source CRM & Custom Development
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/(site)/faq/+page.svelte b/src/routes/(site)/faq/+page.svelte
index 73671e3..b2b9374 100644
--- a/src/routes/(site)/faq/+page.svelte
+++ b/src/routes/(site)/faq/+page.svelte
@@ -31,39 +31,68 @@
- BottleCRM FAQ | Frequently Asked Questions About Free Open-Source CRM Software
-
-
-
+ BottleCRM FAQ | Free Open Source CRM for Startups & SMBs
+
+
+
+
+
-
-
-
-
-
+
+ `}
diff --git a/src/routes/(site)/features/+page.svelte b/src/routes/(site)/features/+page.svelte
index 93a6bc1..c0d5444 100644
--- a/src/routes/(site)/features/+page.svelte
+++ b/src/routes/(site)/features/+page.svelte
@@ -43,15 +43,78 @@
- BottleCRM Features | Complete Free CRM Software Feature List - Contact Management, Sales Pipeline & More
-
-
+ BottleCRM Features: Free & Open Source CRM Software
+
+
-
-
+
+
-
+
+
+
+
@@ -1208,7 +1271,7 @@
Full source code access
-
+
Custom integrations
diff --git a/src/routes/(site)/features/account-management/+page.svelte b/src/routes/(site)/features/account-management/+page.svelte
index 53cb5f8..efce663 100644
--- a/src/routes/(site)/features/account-management/+page.svelte
+++ b/src/routes/(site)/features/account-management/+page.svelte
@@ -46,15 +46,39 @@
- Account Management | BottleCRM - Free Contact & Customer Account Management Software
-
-
+ Free Account Management CRM | Unlimited Contacts & Customer Database
+
+
-
-
+
+
-
+
+
+
+
@@ -327,27 +351,27 @@
-
+
Personal & professional details
-
+
Multiple contact methods
-
+
Communication preferences
-
+
Custom field support
-
+
Photo & document storage
-
+
Social media integration
diff --git a/src/routes/(site)/features/contact-management/+page.svelte b/src/routes/(site)/features/contact-management/+page.svelte
index 7b84246..28e092d 100644
--- a/src/routes/(site)/features/contact-management/+page.svelte
+++ b/src/routes/(site)/features/contact-management/+page.svelte
@@ -58,29 +58,48 @@
- Free Contact Management Software | BottleCRM - Unlimited Contacts, Zero Cost
-
-
-
+ Free Contact Management Software | Unlimited CRM - BottleCRM
+
+
+
+
-
-
-
-
-
+
+ `}
diff --git a/src/routes/(site)/features/lead-management/+page.svelte b/src/routes/(site)/features/lead-management/+page.svelte
index 959ecd5..7659cc9 100644
--- a/src/routes/(site)/features/lead-management/+page.svelte
+++ b/src/routes/(site)/features/lead-management/+page.svelte
@@ -50,18 +50,50 @@
onMount(() => {
mounted = true;
});
+
+ // JSON-LD schema for SoftwareApplication
+ const schema = {
+ "@context": "https://schema.org",
+ "@type": "SoftwareApplication",
+ "name": "BottleCRM Lead Management",
+ "url": "https://bottlecrm.io/features/lead-management",
+ "applicationCategory": "CRM Application",
+ "operatingSystem": "All",
+ "offers": {
+ "@type": "Offer",
+ "price": "0",
+ "priceCurrency": "USD",
+ "availability": "https://schema.org/InStock"
+ },
+ "description": "Free, open-source CRM lead management software for startups and small businesses. Capture, score, nurture, and convert leads with automated workflows.",
+ "publisher": {
+ "@type": "Organization",
+ "name": "BottleCRM"
+ }
+ };
- Lead Management Software | Free CRM Lead Generation & Nurturing - BottleCRM
-
-
-
+ Free CRM Lead Management Software | BottleCRM
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/(site)/features/sales-pipeline/+page.svelte b/src/routes/(site)/features/sales-pipeline/+page.svelte
index 45fca05..0e2c4bc 100644
--- a/src/routes/(site)/features/sales-pipeline/+page.svelte
+++ b/src/routes/(site)/features/sales-pipeline/+page.svelte
@@ -61,18 +61,49 @@
maximumFractionDigits: 0
}).format(value);
}
+
+ // JSON-LD schema for SaaS CRM SoftwareApplication
+ const schema = {
+ "@context": "https://schema.org",
+ "@type": "SoftwareApplication",
+ "name": "BottleCRM",
+ "image": "https://bottlecrm.io/logo.png",
+ "url": "https://bottlecrm.io/features/sales-pipeline",
+ "applicationCategory": "BusinessApplication",
+ "operatingSystem": "All",
+ "offers": {
+ "@type": "Offer",
+ "price": "0",
+ "priceCurrency": "USD"
+ },
+ "description": "Free open-source CRM with visual sales pipeline management, deal tracking, sales forecasting, and workflow automation.",
+ "publisher": {
+ "@type": "Organization",
+ "name": "BottleCRM"
+ }
+ };
- Sales Pipeline Management | BottleCRM - Visual Deal Tracking & Sales Forecasting
-
-
-
+ Free Sales Pipeline CRM | Visual Deal Tracking & Forecasting
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+ {@html ``}
diff --git a/src/routes/(site)/migration/+page.svelte b/src/routes/(site)/migration/+page.svelte
index 64ddd7c..ed295ac 100644
--- a/src/routes/(site)/migration/+page.svelte
+++ b/src/routes/(site)/migration/+page.svelte
@@ -50,27 +50,43 @@
- Migrate to BottleCRM | Free CRM Migration Tools & Professional Migration Services
-
-
-
+ Migrate to BottleCRM – Free CRM Migration Tools & Service
+
+
+
+
-
-
-
-
-
+
+ `}
diff --git a/src/routes/(site)/pricing/+page.svelte b/src/routes/(site)/pricing/+page.svelte
index a587450..839d2fa 100644
--- a/src/routes/(site)/pricing/+page.svelte
+++ b/src/routes/(site)/pricing/+page.svelte
@@ -45,28 +45,42 @@
- BottleCRM Pricing | 100% Free CRM Software with Optional Professional Support
-
-
-
+ BottleCRM Pricing – Free Open Source CRM & Affordable Support
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/(site)/privacy-policy/+page.svelte b/src/routes/(site)/privacy-policy/+page.svelte
index 784b029..1b27c06 100644
--- a/src/routes/(site)/privacy-policy/+page.svelte
+++ b/src/routes/(site)/privacy-policy/+page.svelte
@@ -16,18 +16,50 @@
} from '@lucide/svelte';
let lastUpdated = "June 2025";
+ const schema = {
+ "@context": "https://schema.org",
+ "@type": "WebPage",
+ "name": "Privacy Policy | BottleCRM",
+ "description": "Read the privacy policy for BottleCRM, the free and open-source CRM. Learn how your data is protected, your privacy rights, and how self-hosting ensures full control.",
+ "url": "https://bottlecrm.io/privacy-policy",
+ "dateModified": "2025-06-01",
+ "publisher": {
+ "@type": "Organization",
+ "name": "BottleCRM",
+ "url": "https://bottlecrm.io",
+ "logo": {
+ "@type": "ImageObject",
+ "url": "https://bottlecrm.io/logo.png"
+ }
+ }
+ };
- Privacy Policy | BottleCRM - Protecting Your Data & Privacy Rights
-
-
-
+ Privacy Policy | BottleCRM - Free Open Source CRM for Data Privacy
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -145,7 +177,7 @@
-
Website Analytics (bottlecrm.com only)
+
Website Analytics (bottlecrm.io only)
@@ -228,7 +260,7 @@
Website Security
- Our website (bottlecrm.com) is protected with industry-standard security measures including SSL encryption,
+ Our website (bottlecrm.io) is protected with industry-standard security measures including SSL encryption,
regular security audits, and secure hosting infrastructure.
@@ -315,7 +347,7 @@
- privacy@bottlecrm.com
+ privacy@bottlecrm.io
diff --git a/src/routes/(site)/terms-of-service/+page.svelte b/src/routes/(site)/terms-of-service/+page.svelte
index 104603c..e368576 100644
--- a/src/routes/(site)/terms-of-service/+page.svelte
+++ b/src/routes/(site)/terms-of-service/+page.svelte
@@ -24,37 +24,51 @@
- Terms of Service | BottleCRM - Free Open Source CRM Software
-
-
-
+ Terms of Service | Free Open Source CRM - BottleCRM
+
+
+
+
+
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
+
+ `}