@grove-dev/astro 0.2.10 → 0.2.13

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 (235) hide show
  1. package/dist/lib/display.d.ts +11 -17
  2. package/dist/lib/display.d.ts.map +1 -1
  3. package/dist/lib/display.js +43 -43
  4. package/dist/lib/display.js.map +1 -1
  5. package/dist/lib/format.d.ts +6 -7
  6. package/dist/lib/format.d.ts.map +1 -1
  7. package/dist/lib/format.js +11 -12
  8. package/dist/lib/format.js.map +1 -1
  9. package/dist/lib/lenses.d.ts +35 -73
  10. package/dist/lib/lenses.d.ts.map +1 -1
  11. package/dist/lib/lenses.js +144 -126
  12. package/dist/lib/lenses.js.map +1 -1
  13. package/dist/lib/repo.d.ts +11 -22
  14. package/dist/lib/repo.d.ts.map +1 -1
  15. package/dist/lib/repo.js +12 -25
  16. package/dist/lib/repo.js.map +1 -1
  17. package/dist/lib/scores.d.ts +15 -16
  18. package/dist/lib/scores.d.ts.map +1 -1
  19. package/dist/lib/scores.js +4 -11
  20. package/dist/lib/scores.js.map +1 -1
  21. package/dist/lib/search.d.ts +47 -129
  22. package/dist/lib/search.d.ts.map +1 -1
  23. package/dist/lib/search.js +195 -180
  24. package/dist/lib/search.js.map +1 -1
  25. package/dist/lib/taxonomy-counts.d.ts +7 -21
  26. package/dist/lib/taxonomy-counts.d.ts.map +1 -1
  27. package/dist/lib/taxonomy-counts.js +12 -31
  28. package/dist/lib/taxonomy-counts.js.map +1 -1
  29. package/package.json +4 -4
  30. package/src/components/AppsIndexRow.astro +55 -184
  31. package/src/components/AppsPagination.astro +45 -108
  32. package/src/components/CategoryGrid.astro +43 -31
  33. package/src/components/ContributorsGrid.astro +3 -3
  34. package/src/components/CurationGrid.astro +41 -0
  35. package/src/components/ExploreByStack.astro +6 -0
  36. package/src/components/FilterGroupMenu.astro +49 -0
  37. package/src/components/FilterOptions.astro +44 -0
  38. package/src/components/Hero.astro +198 -147
  39. package/src/components/Icon.astro +10 -3
  40. package/src/components/ItemCard.astro +266 -248
  41. package/src/components/RecordSection.astro +68 -33
  42. package/src/components/RefinePanel.astro +115 -141
  43. package/src/components/StackGrid.astro +32 -24
  44. package/src/components/WhyThisExists.astro +32 -32
  45. package/src/layouts/BaseLayout.astro +104 -49
  46. package/src/layouts/Container.astro +5 -44
  47. package/src/layouts/Footer.astro +31 -20
  48. package/src/layouts/Header.astro +40 -19
  49. package/src/layouts/SectionHeader.astro +27 -43
  50. package/src/layouts/Seo.astro +38 -56
  51. package/src/layouts/ThemeToggle.astro +35 -48
  52. package/src/lib/display.ts +46 -53
  53. package/src/lib/format.ts +11 -12
  54. package/src/lib/lenses.ts +151 -172
  55. package/src/lib/repo.ts +16 -28
  56. package/src/lib/scores.ts +15 -19
  57. package/src/lib/search.ts +222 -290
  58. package/src/lib/taxonomy-counts.ts +12 -46
  59. package/src/styles.css +207 -1
  60. package/templates/default/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  61. package/templates/default/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  62. package/templates/default/.github/ISSUE_TEMPLATE/record_submission.md +48 -0
  63. package/templates/default/.github/pull_request_template.md +27 -0
  64. package/templates/default/.github/workflows/build.yml +55 -0
  65. package/templates/default/.github/workflows/cleanup-stale-records.yml +48 -0
  66. package/templates/default/.github/workflows/daily-refresh.yml +53 -0
  67. package/templates/default/.github/workflows/sync-contributors.yml +53 -0
  68. package/templates/default/.github/workflows/sync-github-metadata.yml +58 -0
  69. package/templates/default/.github/workflows/validate-data.yml +35 -0
  70. package/templates/default/data/records/coolify.yml +46 -0
  71. package/templates/default/data/records/gitea.yml +46 -0
  72. package/templates/default/data/records/hoppscotch.yml +47 -0
  73. package/templates/default/data/records/inventree.yml +47 -0
  74. package/templates/default/data/records/label-studio.yml +46 -0
  75. package/templates/default/data/records/logseq.yml +48 -0
  76. package/templates/default/data/records/private-gpt.yml +47 -0
  77. package/templates/default/data/records/wakapi.yml +44 -0
  78. package/templates/default/data/taxonomy/categories.yml +47 -0
  79. package/templates/default/data/taxonomy/distribution-channels.yml +43 -0
  80. package/templates/default/data/taxonomy/platforms.yml +27 -0
  81. package/templates/default/data/taxonomy/stacks.yml +41 -0
  82. package/templates/default/grove.config.ts +1 -1
  83. package/templates/default/package.json +5 -4
  84. package/templates/default/public/icons/stacks/bun.svg +1 -0
  85. package/templates/default/public/icons/stacks/clojure.svg +1 -0
  86. package/templates/default/public/icons/stacks/clojurescript.svg +1 -0
  87. package/templates/default/public/icons/stacks/deno.svg +1 -0
  88. package/templates/default/public/icons/stacks/django.svg +1 -0
  89. package/templates/default/public/icons/stacks/docker.svg +1 -0
  90. package/templates/default/public/icons/stacks/go.svg +1 -0
  91. package/templates/default/public/icons/stacks/llm.svg +1 -0
  92. package/templates/default/public/icons/stacks/node.js.svg +1 -0
  93. package/templates/default/public/icons/stacks/sveltekit.svg +1 -0
  94. package/templates/default/public/icons/stacks/vue.svg +1 -0
  95. package/templates/default/public/llms-full.txt +197 -5
  96. package/templates/default/public/llms.txt +107 -6
  97. package/templates/default/public/sitemap.xml +63 -0
  98. package/templates/default/scripts/build-llms.mjs +123 -0
  99. package/templates/default/scripts/build-records-json.mjs +27 -0
  100. package/templates/default/scripts/build-sitemap.mjs +20 -0
  101. package/templates/default/scripts/cleanup-stale-records.mjs +20 -0
  102. package/templates/default/scripts/enrich-github-metadata.mjs +99 -0
  103. package/templates/default/scripts/fetch-icons.mjs +137 -0
  104. package/templates/default/scripts/migrate-legacy-to-schema-v1.mjs +86 -0
  105. package/templates/default/scripts/parse-legacy-readme.mjs +59 -0
  106. package/templates/default/scripts/refresh-records-activity.mjs +24 -0
  107. package/templates/default/scripts/repair-license-format.mjs +72 -0
  108. package/templates/default/scripts/report-cleanup-candidates.mjs +21 -0
  109. package/templates/default/scripts/seed-from-github.mjs +62 -0
  110. package/templates/default/scripts/sync-contributors.mjs +145 -0
  111. package/templates/default/scripts/sync-github-metadata.mjs +28 -0
  112. package/templates/default/scripts/validate-records.mjs +27 -0
  113. package/templates/default/src/data/records.ts +134 -51
  114. package/templates/default/src/pages/404.astro +64 -0
  115. package/templates/default/src/pages/{projects/[slug].astro → [slug]/[itemSlug].astro} +236 -66
  116. package/templates/default/src/pages/[slug]/index.astro +476 -0
  117. package/templates/default/src/pages/about.astro +165 -82
  118. package/templates/default/src/pages/apps/[itemSlug].astro +301 -0
  119. package/templates/default/src/pages/apps/index.astro +146 -0
  120. package/templates/default/src/pages/contributors.astro +184 -0
  121. package/templates/default/src/pages/index.astro +119 -162
  122. package/templates/default/src/pages/submit.astro +276 -114
  123. package/templates/default/wrangler.jsonc +28 -0
  124. package/LICENSE +0 -21
  125. package/templates/default/.astro/content.d.ts +0 -155
  126. package/templates/default/.astro/settings.json +0 -5
  127. package/templates/default/.astro/types.d.ts +0 -1
  128. package/templates/default/data/generated/apps.json +0 -1
  129. package/templates/default/data/generated/records.full.json +0 -8
  130. package/templates/default/data/generated/records.index.json +0 -7
  131. package/templates/default/data/generated/records.json +0 -8
  132. package/templates/default/data/generated/repo-stats.json +0 -1
  133. package/templates/default/data/generated/site-config.json +0 -31
  134. package/templates/default/dist/_astro/BaseLayout.Dz_HR-68.css +0 -1
  135. package/templates/default/dist/about/index.html +0 -165
  136. package/templates/default/dist/icons/platforms/android.svg +0 -1
  137. package/templates/default/dist/icons/platforms/apple-dark.svg +0 -1
  138. package/templates/default/dist/icons/platforms/apple-light.svg +0 -1
  139. package/templates/default/dist/icons/platforms/chrome.svg +0 -1
  140. package/templates/default/dist/icons/platforms/chromeos.svg +0 -5
  141. package/templates/default/dist/icons/platforms/desktop.svg +0 -4
  142. package/templates/default/dist/icons/platforms/embedded.svg +0 -5
  143. package/templates/default/dist/icons/platforms/ios.svg +0 -1
  144. package/templates/default/dist/icons/platforms/linux.svg +0 -1
  145. package/templates/default/dist/icons/platforms/macos.svg +0 -1
  146. package/templates/default/dist/icons/platforms/ubuntu.svg +0 -1
  147. package/templates/default/dist/icons/platforms/web.svg +0 -5
  148. package/templates/default/dist/icons/platforms/windows.svg +0 -6
  149. package/templates/default/dist/icons/stacks/android.svg +0 -1
  150. package/templates/default/dist/icons/stacks/apple-dark.svg +0 -1
  151. package/templates/default/dist/icons/stacks/apple-light.svg +0 -1
  152. package/templates/default/dist/icons/stacks/capacitor.svg +0 -14
  153. package/templates/default/dist/icons/stacks/dart.svg +0 -1
  154. package/templates/default/dist/icons/stacks/firebase.svg +0 -1
  155. package/templates/default/dist/icons/stacks/flutter.svg +0 -1
  156. package/templates/default/dist/icons/stacks/graphql.svg +0 -1
  157. package/templates/default/dist/icons/stacks/ionic.svg +0 -4
  158. package/templates/default/dist/icons/stacks/java.svg +0 -1
  159. package/templates/default/dist/icons/stacks/javascript.svg +0 -1
  160. package/templates/default/dist/icons/stacks/kotlin.svg +0 -1
  161. package/templates/default/dist/icons/stacks/mongodb.svg +0 -1
  162. package/templates/default/dist/icons/stacks/nodejs.svg +0 -1
  163. package/templates/default/dist/icons/stacks/python.svg +0 -1
  164. package/templates/default/dist/icons/stacks/react-native.svg +0 -1
  165. package/templates/default/dist/icons/stacks/react.svg +0 -1
  166. package/templates/default/dist/icons/stacks/rust.svg +0 -1
  167. package/templates/default/dist/icons/stacks/solidity.svg +0 -1
  168. package/templates/default/dist/icons/stacks/swift.svg +0 -1
  169. package/templates/default/dist/icons/stacks/tensorflow.svg +0 -1
  170. package/templates/default/dist/icons/stacks/typescript.svg +0 -1
  171. package/templates/default/dist/index.html +0 -55
  172. package/templates/default/dist/llms-full.txt +0 -14
  173. package/templates/default/dist/llms.txt +0 -11
  174. package/templates/default/dist/og-image.svg +0 -48
  175. package/templates/default/dist/projects/index.html +0 -61
  176. package/templates/default/dist/robots.txt +0 -53
  177. package/templates/default/dist/sitemap.xml +0 -21
  178. package/templates/default/dist/submit/index.html +0 -69
  179. package/templates/default/node_modules/.bin/astro +0 -21
  180. package/templates/default/node_modules/.bin/astro-check +0 -21
  181. package/templates/default/node_modules/.bin/grove +0 -21
  182. package/templates/default/node_modules/.bin/jiti +0 -21
  183. package/templates/default/node_modules/.bin/prettier +0 -21
  184. package/templates/default/node_modules/.bin/rollup +0 -21
  185. package/templates/default/node_modules/.bin/tsc +0 -21
  186. package/templates/default/node_modules/.bin/tsserver +0 -21
  187. package/templates/default/node_modules/.bin/tsx +0 -21
  188. package/templates/default/node_modules/.bin/vite +0 -21
  189. package/templates/default/node_modules/.bin/yaml +0 -21
  190. package/templates/default/node_modules/.vite/deps/_metadata.json +0 -79
  191. package/templates/default/node_modules/.vite/deps/astro-KRVZHBC5.js +0 -433
  192. package/templates/default/node_modules/.vite/deps/astro-KRVZHBC5.js.map +0 -7
  193. package/templates/default/node_modules/.vite/deps/astro___aria-query.js +0 -5
  194. package/templates/default/node_modules/.vite/deps/astro___aria-query.js.map +0 -7
  195. package/templates/default/node_modules/.vite/deps/astro___axobject-query.js +0 -5
  196. package/templates/default/node_modules/.vite/deps/astro___axobject-query.js.map +0 -7
  197. package/templates/default/node_modules/.vite/deps/astro___html-escaper.js +0 -9
  198. package/templates/default/node_modules/.vite/deps/astro___html-escaper.js.map +0 -7
  199. package/templates/default/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -241
  200. package/templates/default/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -7
  201. package/templates/default/node_modules/.vite/deps/audit-GYHQ3ITH.js +0 -1592
  202. package/templates/default/node_modules/.vite/deps/audit-GYHQ3ITH.js.map +0 -7
  203. package/templates/default/node_modules/.vite/deps/chunk-5WRI5ZAA.js +0 -30
  204. package/templates/default/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +0 -7
  205. package/templates/default/node_modules/.vite/deps/chunk-7P4KIK53.js +0 -186
  206. package/templates/default/node_modules/.vite/deps/chunk-7P4KIK53.js.map +0 -7
  207. package/templates/default/node_modules/.vite/deps/chunk-BQGHFQJH.js +0 -48
  208. package/templates/default/node_modules/.vite/deps/chunk-BQGHFQJH.js.map +0 -7
  209. package/templates/default/node_modules/.vite/deps/chunk-CJCDKWP2.js +0 -6779
  210. package/templates/default/node_modules/.vite/deps/chunk-CJCDKWP2.js.map +0 -7
  211. package/templates/default/node_modules/.vite/deps/chunk-FHJ3XBDE.js +0 -33
  212. package/templates/default/node_modules/.vite/deps/chunk-FHJ3XBDE.js.map +0 -7
  213. package/templates/default/node_modules/.vite/deps/chunk-FQEMNIUQ.js +0 -88
  214. package/templates/default/node_modules/.vite/deps/chunk-FQEMNIUQ.js.map +0 -7
  215. package/templates/default/node_modules/.vite/deps/chunk-HBSVDAQD.js +0 -72
  216. package/templates/default/node_modules/.vite/deps/chunk-HBSVDAQD.js.map +0 -7
  217. package/templates/default/node_modules/.vite/deps/chunk-HDOQ2U3U.js +0 -3757
  218. package/templates/default/node_modules/.vite/deps/chunk-HDOQ2U3U.js.map +0 -7
  219. package/templates/default/node_modules/.vite/deps/chunk-XEBKRCNE.js +0 -54
  220. package/templates/default/node_modules/.vite/deps/chunk-XEBKRCNE.js.map +0 -7
  221. package/templates/default/node_modules/.vite/deps/package.json +0 -3
  222. package/templates/default/node_modules/.vite/deps/settings-C5H4VHXU.js +0 -213
  223. package/templates/default/node_modules/.vite/deps/settings-C5H4VHXU.js.map +0 -7
  224. package/templates/default/node_modules/.vite/deps/toolbar-H5DB6HVP.js +0 -525
  225. package/templates/default/node_modules/.vite/deps/toolbar-H5DB6HVP.js.map +0 -7
  226. package/templates/default/node_modules/.vite/deps/ui-library-JGHU6JE2.js +0 -1020
  227. package/templates/default/node_modules/.vite/deps/ui-library-JGHU6JE2.js.map +0 -7
  228. package/templates/default/node_modules/.vite/deps/xray-EFCQOW4E.js +0 -147
  229. package/templates/default/node_modules/.vite/deps/xray-EFCQOW4E.js.map +0 -7
  230. package/templates/default/src/components/layout/BaseLayout.astro +0 -47
  231. package/templates/default/src/components/layout/Container.astro +0 -18
  232. package/templates/default/src/components/layout/Footer.astro +0 -27
  233. package/templates/default/src/components/layout/Header.astro +0 -43
  234. package/templates/default/src/lib/markdown.ts +0 -171
  235. package/templates/default/src/pages/projects/index.astro +0 -193
@@ -0,0 +1,58 @@
1
+ name: Sync GitHub metadata
2
+
3
+ on:
4
+ schedule:
5
+ # Weekly — Sunday 03:00 UTC. Off-hours so PR validation has the
6
+ # freshest metadata by Monday morning.
7
+ - cron: "0 3 * * 0"
8
+ workflow_dispatch:
9
+ # Run on push to data/records/** so curators see fresh stars/forks
10
+ # without waiting for the weekly cron.
11
+ push:
12
+ branches: [main]
13
+ paths:
14
+ - "data/records/**"
15
+
16
+ jobs:
17
+ sync:
18
+ name: grove sync github
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 20
21
+ permissions:
22
+ contents: write
23
+ pull-requests: write
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - uses: pnpm/action-setup@v4
28
+ with:
29
+ version: 10
30
+
31
+ - uses: actions/setup-node@v4
32
+ with:
33
+ node-version: 20
34
+ cache: pnpm
35
+
36
+ - name: Install dependencies
37
+ run: pnpm install --frozen-lockfile
38
+
39
+ - name: Sync GitHub metadata
40
+ env:
41
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42
+ # `grove sync github` walks every record, fetches stars/forks/
43
+ # activity from the GitHub API, and writes a `github` block
44
+ # back into each record's YAML. Falls back to HTML scraping
45
+ # when the API rate-limits.
46
+ run: pnpm exec grove sync github
47
+
48
+ - name: Open PR if records changed
49
+ uses: peter-evans/create-pull-request@v6
50
+ with:
51
+ commit-message: "chore(data): sync GitHub metadata"
52
+ title: "Weekly GitHub metadata sync"
53
+ body: |
54
+ Automated weekly sync of stars, forks, activity, and topics
55
+ for every record. Generated by the `sync-github-metadata`
56
+ workflow.
57
+ branch: chore/sync-github-metadata
58
+ delete-branch: true
@@ -0,0 +1,35 @@
1
+ name: Validate data
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ validate:
11
+ name: grove validate
12
+ runs-on: ubuntu-latest
13
+ timeout-minutes: 5
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - uses: pnpm/action-setup@v4
18
+ with:
19
+ version: 10
20
+
21
+ - uses: actions/setup-node@v4
22
+ with:
23
+ node-version: 20
24
+ cache: pnpm
25
+
26
+ - name: Install dependencies
27
+ run: pnpm install --frozen-lockfile
28
+
29
+ - name: Validate records
30
+ # `grove validate` checks every records/*.yml against the
31
+ # blueprint schema, plus decisions.yml, taxonomy, and the
32
+ # health block. --strict fails on warnings, used on the
33
+ # main branch but not on PRs (where external contributors
34
+ # may have minor warnings we'd rather flag than block).
35
+ run: pnpm exec grove validate
@@ -0,0 +1,46 @@
1
+ kind: project
2
+ name: Coolify
3
+ slug: coolify
4
+ description: Open-source, self-hostable Heroku / Netlify / Vercel alternative — deploy apps and databases from a single dashboard.
5
+ category: DevOps
6
+ tags:
7
+ - self-host
8
+ - paas
9
+ - deployment
10
+ - svelte
11
+ stack: SvelteKit
12
+ stacks:
13
+ - SvelteKit
14
+ - Node.js
15
+ - Docker
16
+ platforms:
17
+ - linux
18
+ - self-host
19
+ projectType: real-app
20
+ difficulty: intermediate
21
+ codebaseSize: large
22
+ repoUrl: https://github.com/coollabsio/coolify
23
+ links:
24
+ github: https://github.com/coollabsio/coolify
25
+ website: https://coolify.io
26
+ bestFor:
27
+ - Self-hosted PaaS
28
+ - VPS deployments
29
+ - Docker-based stacks
30
+ whyListed:
31
+ - One-click app + DB deploys
32
+ - Active dev
33
+ - Clear upgrade path from manual Docker
34
+ caveats: []
35
+ distribution:
36
+ channels: []
37
+ source:
38
+ type: manual
39
+ curation:
40
+ reviewed: true
41
+ reviewedBy: grove-bot
42
+ reviewedAt: "2026-06-13"
43
+ labels:
44
+ - hot
45
+ lenses: []
46
+ visibility: keep
@@ -0,0 +1,46 @@
1
+ kind: project
2
+ name: Gitea
3
+ slug: gitea
4
+ description: Lightweight, self-hosted Git service — painless, single-binary, low-resource alternative to GitHub.
5
+ category: DevOps
6
+ tags:
7
+ - git
8
+ - forge
9
+ - self-host
10
+ - go
11
+ stack: Go
12
+ stacks:
13
+ - Go
14
+ - Vue
15
+ platforms:
16
+ - linux
17
+ - self-host
18
+ - docker
19
+ projectType: real-app
20
+ difficulty: intermediate
21
+ codebaseSize: large
22
+ repoUrl: https://github.com/go-gitea/gitea
23
+ links:
24
+ github: https://github.com/go-gitea/gitea
25
+ website: https://about.gitea.com
26
+ bestFor:
27
+ - Self-hosted Git hosting
28
+ - Lightweight CI/CD integration
29
+ - Internal team forges
30
+ whyListed:
31
+ - Single binary, easy install
32
+ - Mature, stable releases
33
+ - Active community
34
+ caveats: []
35
+ distribution:
36
+ channels: []
37
+ source:
38
+ type: manual
39
+ curation:
40
+ reviewed: true
41
+ reviewedBy: grove-bot
42
+ reviewedAt: "2026-06-13"
43
+ labels:
44
+ - mature
45
+ lenses: []
46
+ visibility: keep
@@ -0,0 +1,47 @@
1
+ kind: project
2
+ name: Hoppscotch
3
+ slug: hoppscotch
4
+ description: Open-source API development ecosystem — design, test, and debug APIs faster from a single interface.
5
+ category: Web
6
+ tags:
7
+ - api
8
+ - testing
9
+ - developer-tools
10
+ - vue
11
+ stack: Vue
12
+ stacks:
13
+ - Vue
14
+ - TypeScript
15
+ - GraphQL
16
+ platforms:
17
+ - web
18
+ - desktop
19
+ - self-host
20
+ projectType: real-app
21
+ difficulty: beginner
22
+ codebaseSize: large
23
+ repoUrl: https://github.com/hoppscotch/hoppscotch
24
+ links:
25
+ github: https://github.com/hoppscotch/hoppscotch
26
+ website: https://hoppscotch.io
27
+ bestFor:
28
+ - API exploration
29
+ - REST/GraphQL/WebSocket testing
30
+ - Self-hosted team workflows
31
+ whyListed:
32
+ - Lightweight, fast UI
33
+ - PWA + desktop builds
34
+ - Open-source Postman/Insomnia alternative
35
+ caveats: []
36
+ distribution:
37
+ channels: []
38
+ source:
39
+ type: manual
40
+ curation:
41
+ reviewed: true
42
+ reviewedBy: grove-bot
43
+ reviewedAt: "2026-06-13"
44
+ labels:
45
+ - hot
46
+ lenses: []
47
+ visibility: keep
@@ -0,0 +1,47 @@
1
+ kind: project
2
+ name: InvenTree
3
+ slug: inventree
4
+ description: Open-source inventory management system with parts, stock, and purchase orders.
5
+ category: Mobile
6
+ tags:
7
+ - inventory
8
+ - stock
9
+ - mobile
10
+ - dart
11
+ - flutter
12
+ stack: Flutter
13
+ stacks:
14
+ - Flutter
15
+ - Dart
16
+ platforms:
17
+ - ios
18
+ - android
19
+ - web
20
+ projectType: real-app
21
+ difficulty: intermediate
22
+ codebaseSize: large
23
+ repoUrl: https://github.com/inventree/InvenTree
24
+ links:
25
+ github: https://github.com/inventree/InvenTree
26
+ website: https://inventree.org
27
+ bestFor:
28
+ - Inventory tracking
29
+ - Manufacturing
30
+ - Hardware projects
31
+ whyListed:
32
+ - Production-grade mobile + web stack
33
+ - Strong community
34
+ - Cleanly factored Dart codebase
35
+ caveats: []
36
+ distribution:
37
+ channels: []
38
+ source:
39
+ type: manual
40
+ curation:
41
+ reviewed: true
42
+ reviewedBy: grove-bot
43
+ reviewedAt: "2026-06-13"
44
+ labels:
45
+ - mature
46
+ lenses: []
47
+ visibility: keep
@@ -0,0 +1,46 @@
1
+ kind: project
2
+ name: Label Studio
3
+ slug: label-studio
4
+ description: Open-source data labeling platform — annotate images, text, audio, video, and time series for ML training.
5
+ category: AI/ML
6
+ tags:
7
+ - labeling
8
+ - ml-ops
9
+ - annotation
10
+ - python
11
+ stack: Python
12
+ stacks:
13
+ - Python
14
+ - Django
15
+ - React
16
+ platforms:
17
+ - web
18
+ - self-host
19
+ projectType: real-app
20
+ difficulty: intermediate
21
+ codebaseSize: large
22
+ repoUrl: https://github.com/HumanSignal/label-studio
23
+ links:
24
+ github: https://github.com/HumanSignal/label-studio
25
+ website: https://labelstud.io
26
+ bestFor:
27
+ - ML dataset labeling
28
+ - Multi-modal annotation
29
+ - Active learning pipelines
30
+ whyListed:
31
+ - Mature, production-grade
32
+ - Strong ML backend
33
+ - Active commercial + community backing
34
+ caveats: []
35
+ distribution:
36
+ channels: []
37
+ source:
38
+ type: manual
39
+ curation:
40
+ reviewed: true
41
+ reviewedBy: grove-bot
42
+ reviewedAt: "2026-06-13"
43
+ labels:
44
+ - mature
45
+ lenses: []
46
+ visibility: keep
@@ -0,0 +1,48 @@
1
+ kind: project
2
+ name: Logseq
3
+ slug: logseq
4
+ description: Privacy-first, open-source knowledge base that works on top of plain text Markdown and Org-mode files.
5
+ category: Web
6
+ tags:
7
+ - notes
8
+ - knowledge-base
9
+ - productivity
10
+ - clojure
11
+ stack: ClojureScript
12
+ stacks:
13
+ - ClojureScript
14
+ - Clojure
15
+ - JavaScript
16
+ platforms:
17
+ - web
18
+ - desktop
19
+ projectType: real-app
20
+ difficulty: intermediate
21
+ codebaseSize: huge
22
+ repoUrl: https://github.com/logseq/logseq
23
+ links:
24
+ github: https://github.com/logseq/logseq
25
+ website: https://logseq.com
26
+ bestFor:
27
+ - PKM (personal knowledge management)
28
+ - Local-first note taking
29
+ - Graph-based outliner
30
+ whyListed:
31
+ - Local-first with sync
32
+ - Active community
33
+ - Strong plugin ecosystem
34
+ caveats:
35
+ - Mobile app still maturing
36
+ distribution:
37
+ channels: []
38
+ source:
39
+ type: manual
40
+ curation:
41
+ reviewed: true
42
+ reviewedBy: grove-bot
43
+ reviewedAt: "2026-06-13"
44
+ labels:
45
+ - hot
46
+ - mature
47
+ lenses: []
48
+ visibility: keep
@@ -0,0 +1,47 @@
1
+ kind: project
2
+ name: PrivateGPT
3
+ slug: private-gpt
4
+ description: Interact privately with your documents using LLMs — 100% private, no data leaves your execution environment.
5
+ category: AI/ML
6
+ tags:
7
+ - llm
8
+ - rag
9
+ - privacy
10
+ - python
11
+ stack: Python
12
+ stacks:
13
+ - Python
14
+ - LLM
15
+ - RAG
16
+ platforms:
17
+ - linux
18
+ - macos
19
+ - self-host
20
+ projectType: real-app
21
+ difficulty: intermediate
22
+ codebaseSize: medium
23
+ repoUrl: https://github.com/zylon-ai/private-gpt
24
+ links:
25
+ github: https://github.com/zylon-ai/private-gpt
26
+ bestFor:
27
+ - Private document Q&A
28
+ - Local LLM experimentation
29
+ - Enterprise privacy use cases
30
+ whyListed:
31
+ - Strict no-network mode
32
+ - Pluggable LLM providers
33
+ - Clean ingestion pipeline
34
+ caveats:
35
+ - GPU recommended for best results
36
+ distribution:
37
+ channels: []
38
+ source:
39
+ type: manual
40
+ curation:
41
+ reviewed: true
42
+ reviewedBy: grove-bot
43
+ reviewedAt: "2026-06-13"
44
+ labels:
45
+ - hot
46
+ lenses: []
47
+ visibility: keep
@@ -0,0 +1,44 @@
1
+ kind: project
2
+ name: Wakapi
3
+ slug: wakapi
4
+ description: Open-source time tracker for developers — coding stats, language breakdowns, and project-level metrics.
5
+ category: Mobile
6
+ tags:
7
+ - time-tracking
8
+ - analytics
9
+ - mobile
10
+ - kotlin
11
+ stack: Kotlin
12
+ stacks:
13
+ - Kotlin
14
+ - Android
15
+ platforms:
16
+ - android
17
+ projectType: real-app
18
+ difficulty: beginner
19
+ codebaseSize: medium
20
+ repoUrl: https://github.com/muety/wakapi
21
+ links:
22
+ github: https://github.com/muety/wakapi
23
+ website: https://wakapi.dev
24
+ bestFor:
25
+ - Personal coding stats
26
+ - WakaTime alternative
27
+ - Privacy-first telemetry
28
+ whyListed:
29
+ - Self-host friendly
30
+ - Companion mobile app
31
+ - Clean MVVM architecture
32
+ caveats: []
33
+ distribution:
34
+ channels: []
35
+ source:
36
+ type: manual
37
+ curation:
38
+ reviewed: true
39
+ reviewedBy: grove-bot
40
+ reviewedAt: "2026-06-13"
41
+ labels:
42
+ - new
43
+ lenses: []
44
+ visibility: keep
@@ -0,0 +1,47 @@
1
+ - id: productivity
2
+ name: Productivity
3
+
4
+ - id: finance
5
+ name: Finance
6
+
7
+ - id: education
8
+ name: Education
9
+
10
+ - id: tools
11
+ name: Tools
12
+
13
+ - id: communication
14
+ name: Communication
15
+
16
+ - id: health-and-fitness
17
+ name: Health and Fitness
18
+
19
+ - id: business
20
+ name: Business
21
+
22
+ - id: games
23
+ name: Games
24
+
25
+ - id: media
26
+ name: Media
27
+
28
+ - id: entertainment
29
+ name: Entertainment
30
+
31
+ - id: social-network
32
+ name: Social Network
33
+
34
+ - id: shopping
35
+ name: Shopping
36
+
37
+ - id: news
38
+ name: News and Magazine
39
+
40
+ - id: travel
41
+ name: Travel
42
+
43
+ - id: lifestyle
44
+ name: Lifestyle
45
+
46
+ - id: personalization
47
+ name: Personalization
@@ -0,0 +1,43 @@
1
+ - id: app-store
2
+ name: App Store
3
+ platforms: [ios, macos]
4
+
5
+ - id: play-store
6
+ name: Play Store
7
+ platforms: [android]
8
+
9
+ - id: fdroid
10
+ name: F-Droid
11
+ platforms: [android]
12
+
13
+ - id: github-releases
14
+ name: GitHub Releases
15
+ platforms: [android, ios, macos, windows, linux]
16
+
17
+ - id: apk
18
+ name: APK download
19
+ platforms: [android]
20
+
21
+ - id: testflight
22
+ name: TestFlight
23
+ platforms: [ios]
24
+
25
+ - id: website
26
+ name: Website download
27
+ platforms: [web, ios, android, macos, windows, linux]
28
+
29
+ - id: snapcraft
30
+ name: Snapcraft
31
+ platforms: [linux]
32
+
33
+ - id: flathub
34
+ name: Flathub
35
+ platforms: [linux]
36
+
37
+ - id: microsoft-store
38
+ name: Microsoft Store
39
+ platforms: [windows]
40
+
41
+ - id: other
42
+ name: Other
43
+ platforms: []
@@ -0,0 +1,27 @@
1
+ - id: ios
2
+ name: iOS
3
+ icon: ios
4
+
5
+ - id: android
6
+ name: Android
7
+ icon: android
8
+
9
+ - id: web
10
+ name: Web
11
+ icon: web
12
+
13
+ - id: macos
14
+ name: macOS
15
+ icon: macos
16
+
17
+ - id: windows
18
+ name: Windows
19
+ icon: windows
20
+
21
+ - id: linux
22
+ name: Linux
23
+ icon: linux
24
+
25
+ - id: desktop
26
+ name: Desktop
27
+ icon: desktop
@@ -0,0 +1,41 @@
1
+ - id: flutter
2
+ name: Flutter
3
+ family: cross-platform
4
+ languages: [dart]
5
+ platforms: [ios, android, web, macos, windows, linux]
6
+ icon: flutter
7
+
8
+ - id: react-native
9
+ name: React Native
10
+ family: cross-platform
11
+ languages: [typescript, javascript]
12
+ platforms: [ios, android]
13
+ icon: react-native
14
+
15
+ - id: ios
16
+ name: Native iOS
17
+ family: native
18
+ languages: [swift, objective-c]
19
+ platforms: [ios]
20
+ icon: swift
21
+
22
+ - id: android
23
+ name: Native Android
24
+ family: native
25
+ languages: [kotlin, java]
26
+ platforms: [android]
27
+ icon: android
28
+
29
+ - id: capacitor
30
+ name: Capacitor
31
+ family: hybrid
32
+ languages: [typescript, javascript]
33
+ platforms: [ios, android, web]
34
+ icon: capacitor
35
+
36
+ - id: kmp
37
+ name: Kotlin Multiplatform
38
+ family: cross-platform
39
+ languages: [kotlin]
40
+ platforms: [ios, android, desktop]
41
+ icon: kotlin
@@ -28,7 +28,7 @@ export default defineConfig({
28
28
  integrations: {},
29
29
 
30
30
  theme: {
31
- primaryColor: "#16a34a",
31
+ primaryColor: "#1f6feb",
32
32
  radius: "soft",
33
33
  density: "comfortable",
34
34
  containerWidth: "72rem",
@@ -13,7 +13,7 @@
13
13
  "validate:data": "grove validate",
14
14
  "build:data": "grove generate",
15
15
  "build:sitemap": "grove sitemap",
16
- "build:llms": "grove llms",
16
+ "build:llms": "node scripts/build-llms.mjs",
17
17
  "build": "pnpm run build:data && pnpm run build:sitemap && pnpm run build:llms && astro build",
18
18
  "dev": "pnpm run build:data && astro dev",
19
19
  "start": "astro dev",
@@ -25,11 +25,12 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@astrojs/check": "^0.9.9",
28
- "@grove-dev/astro": "workspace:*",
29
- "@grove-dev/cli": "workspace:*",
30
- "@grove-dev/core": "workspace:*",
28
+ "@grove-dev/astro": "0.2.13",
29
+ "@grove-dev/cli": "0.2.13",
30
+ "@grove-dev/core": "0.2.13",
31
31
  "@tailwindcss/vite": "^4.3.0",
32
32
  "astro": "^6.4.4",
33
+ "marked": "^18.0.0",
33
34
  "tailwindcss": "^4.3.0",
34
35
  "yaml": "^2.9.0"
35
36
  }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none"><circle cx="50" cy="50" r="44" fill="#F9F1E1"/><path fill="#000000" d="M50 16c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34S68.8 16 50 16zm-9 18c0-1.7 1.3-3 3-3s3 1.3 3 3v8c0 4.4 3.6 8 8 8h2c1.7 0 3 1.3 3 3s-1.3 3-3 3h-2c-7.7 0-14-6.3-14-14v-8zm22 22c-1.7 0-3-1.3-3-3s1.3-3 3-3h2c4.4 0 8-3.6 8-8v-2c0-1.7 1.3-3 3-3s3 1.3 3 3v2c0 7.7-6.3 14-14 14h-2z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none"><circle cx="50" cy="50" r="42" fill="#5881D8"/><path fill="#FFFFFF" d="M50 18c-9 0-15 5-19 13l-3 7 4 5c3 4 7 6 11 6h14c4 0 8-2 11-6l4-5-3-7c-4-8-10-13-19-13z"/><circle cx="50" cy="50" r="12" fill="#FFFFFF"/><circle cx="50" cy="50" r="6" fill="#5881D8"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none"><circle cx="50" cy="50" r="42" fill="#5881D8"/><path fill="#FFFFFF" d="M50 18c-9 0-15 5-19 13l-3 7 4 5c3 4 7 6 11 6h14c4 0 8-2 11-6l4-5-3-7c-4-8-10-13-19-13z"/><text x="50" y="55" font-family="ui-sans-serif, system-ui, sans-serif" font-size="14" font-weight="700" fill="#FFFFFF" text-anchor="middle">CLJS</text></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none"><circle cx="50" cy="50" r="42" fill="#000000"/><path fill="#FFFFFF" d="M62 28c-3 0-6 1-8 3-1-2-3-3-6-3-5 0-9 4-9 9 0 1 0 3 1 4-3 1-5 4-5 7 0 4 3 7 7 7h22c5 0 9-4 9-9 0-4-2-7-5-8 0-1 0-2 0-3 0-4-3-7-6-7z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none"><rect width="100" height="100" rx="14" fill="#092E20"/><path fill="#FFFFFF" d="M30 30h40v40H30z"/><path fill="#44B78B" d="M30 30h40v8H30zM30 62h40v8H30zM30 38h8v24h-8zM62 38h8v24h-8z"/><text x="50" y="56" font-family="Arial, sans-serif" font-size="11" font-weight="700" fill="#092E20" text-anchor="middle">django</text></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none"><rect x="15" y="20" width="70" height="60" rx="6" fill="#2496ED"/><rect x="15" y="20" width="70" height="12" rx="6" fill="#1D7FB8"/><circle cx="25" cy="26" r="2" fill="#FFFFFF"/><circle cx="33" cy="26" r="2" fill="#FFFFFF"/><circle cx="41" cy="26" r="2" fill="#FFFFFF"/><path fill="#FFFFFF" d="M30 50h40v8H30zM30 64h40v4H30z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none"><circle cx="50" cy="50" r="42" fill="#00ADD8"/><path fill="#FFFFFF" d="M40 28c-6 0-11 5-11 11 0 2 0 3 1 5h-7c-2 0-3 1-3 3 0 11 9 20 22 20h25c9 0 17-7 18-16 0-2-1-3-3-3h-7c-1-3-4-5-7-5-1 0-2 0-3 1-1-4-5-7-9-7-2 0-3 0-4 1-2-5-7-9-12-9zm-7 11a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm14 0a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm-7 8a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm14 0a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></svg>