@grove-dev/astro 0.3.1 → 0.3.4
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.
- package/README.md +9 -75
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/display.d.ts +1 -26
- package/dist/lib/display.d.ts.map +1 -1
- package/dist/lib/display.js +1 -103
- package/dist/lib/display.js.map +1 -1
- package/dist/lib/format.d.ts +1 -28
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +1 -71
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/lenses.d.ts +1 -57
- package/dist/lib/lenses.d.ts.map +1 -1
- package/dist/lib/lenses.js +1 -198
- package/dist/lib/lenses.js.map +1 -1
- package/dist/lib/repo.d.ts +1 -19
- package/dist/lib/repo.d.ts.map +1 -1
- package/dist/lib/repo.js +1 -30
- package/dist/lib/repo.js.map +1 -1
- package/dist/lib/scores.d.ts +1 -36
- package/dist/lib/scores.d.ts.map +1 -1
- package/dist/lib/scores.js +1 -75
- package/dist/lib/scores.js.map +1 -1
- package/dist/lib/search.d.ts +1 -113
- package/dist/lib/search.d.ts.map +1 -1
- package/dist/lib/search.js +1 -379
- package/dist/lib/search.js.map +1 -1
- package/dist/lib/taxonomy-counts.d.ts +1 -10
- package/dist/lib/taxonomy-counts.d.ts.map +1 -1
- package/dist/lib/taxonomy-counts.js +1 -21
- package/dist/lib/taxonomy-counts.js.map +1 -1
- package/package.json +23 -11
- package/src/components/ContributorsGrid.astro +3 -3
- package/src/components/CurationGrid.astro +2 -2
- package/src/components/DirectoryIndexClient.astro +240 -0
- package/src/components/FilterGroupMenu.astro +8 -4
- package/src/components/FinalCta.astro +41 -0
- package/src/components/Hero.astro +15 -18
- package/src/components/Icon.astro +35 -7
- package/src/components/IndexRow.astro +2 -2
- package/src/components/ItemCard.astro +2 -7
- package/src/components/RefinePanel.astro +7 -7
- package/src/components/SmartLensTabs.astro +9 -5
- package/src/components/StackGrid.astro +1 -1
- package/src/components/SubmissionClient.astro +133 -0
- package/src/index.ts +11 -1
- package/src/layouts/BaseLayout.astro +30 -8
- package/src/layouts/Footer.astro +25 -56
- package/src/layouts/Header.astro +33 -15
- package/src/layouts/ThemeToggle.astro +7 -3
- package/src/lib/display.ts +1 -111
- package/src/lib/format.ts +1 -64
- package/src/lib/lenses.ts +1 -220
- package/src/lib/repo.ts +1 -32
- package/src/lib/scores.ts +1 -90
- package/src/lib/search.ts +1 -418
- package/src/lib/taxonomy-counts.ts +1 -26
- package/{templates/default/src/data/records.ts → src/server/directory.ts} +12 -8
- package/src/server/index.ts +2 -0
- package/src/server/models.ts +436 -0
- package/dist/template-routes.test.d.ts +0 -2
- package/dist/template-routes.test.d.ts.map +0 -1
- package/dist/template-routes.test.js +0 -63
- package/dist/template-routes.test.js.map +0 -1
- package/dist/theme.test.d.ts +0 -2
- package/dist/theme.test.d.ts.map +0 -1
- package/dist/theme.test.js +0 -60
- package/dist/theme.test.js.map +0 -1
- package/src/template-routes.test.ts +0 -103
- package/src/theme.test.ts +0 -76
- package/templates/default/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
- package/templates/default/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/templates/default/.github/ISSUE_TEMPLATE/record_submission.md +0 -48
- package/templates/default/.github/pull_request_template.md +0 -27
- package/templates/default/.github/workflows/build.yml +0 -53
- package/templates/default/.github/workflows/cleanup-stale-records.yml +0 -46
- package/templates/default/.github/workflows/daily-refresh.yml +0 -51
- package/templates/default/.github/workflows/sync-contributors.yml +0 -51
- package/templates/default/.github/workflows/sync-github-metadata.yml +0 -56
- package/templates/default/.github/workflows/validate-data.yml +0 -33
- package/templates/default/astro.config.mjs +0 -25
- package/templates/default/content/pages/about.md +0 -66
- package/templates/default/content/pages/methodology.md +0 -103
- package/templates/default/data/records/.gitkeep +0 -0
- package/templates/default/data/records/coolify.yml +0 -46
- package/templates/default/data/records/gitea.yml +0 -46
- package/templates/default/data/records/hoppscotch.yml +0 -47
- package/templates/default/data/records/inventree.yml +0 -47
- package/templates/default/data/records/label-studio.yml +0 -46
- package/templates/default/data/records/logseq.yml +0 -48
- package/templates/default/data/records/private-gpt.yml +0 -47
- package/templates/default/data/records/wakapi.yml +0 -44
- package/templates/default/data/taxonomy/categories.yml +0 -47
- package/templates/default/data/taxonomy/distribution-channels.yml +0 -43
- package/templates/default/data/taxonomy/platforms.yml +0 -27
- package/templates/default/data/taxonomy/stacks.yml +0 -41
- package/templates/default/grove.config.ts +0 -36
- package/templates/default/package.json +0 -43
- package/templates/default/public/icons/platforms/android.svg +0 -1
- package/templates/default/public/icons/platforms/apple-dark.svg +0 -1
- package/templates/default/public/icons/platforms/apple-light.svg +0 -1
- package/templates/default/public/icons/platforms/chrome.svg +0 -1
- package/templates/default/public/icons/platforms/chromeos.svg +0 -5
- package/templates/default/public/icons/platforms/desktop.svg +0 -4
- package/templates/default/public/icons/platforms/embedded.svg +0 -5
- package/templates/default/public/icons/platforms/ios.svg +0 -1
- package/templates/default/public/icons/platforms/linux.svg +0 -1
- package/templates/default/public/icons/platforms/macos.svg +0 -1
- package/templates/default/public/icons/platforms/ubuntu.svg +0 -1
- package/templates/default/public/icons/platforms/web.svg +0 -5
- package/templates/default/public/icons/platforms/windows.svg +0 -6
- package/templates/default/public/icons/stacks/android.svg +0 -1
- package/templates/default/public/icons/stacks/apple-dark.svg +0 -1
- package/templates/default/public/icons/stacks/apple-light.svg +0 -1
- package/templates/default/public/icons/stacks/bun.svg +0 -1
- package/templates/default/public/icons/stacks/capacitor.svg +0 -14
- package/templates/default/public/icons/stacks/clojure.svg +0 -1
- package/templates/default/public/icons/stacks/clojurescript.svg +0 -1
- package/templates/default/public/icons/stacks/dart.svg +0 -1
- package/templates/default/public/icons/stacks/deno.svg +0 -1
- package/templates/default/public/icons/stacks/django.svg +0 -1
- package/templates/default/public/icons/stacks/docker.svg +0 -1
- package/templates/default/public/icons/stacks/firebase.svg +0 -1
- package/templates/default/public/icons/stacks/flutter.svg +0 -1
- package/templates/default/public/icons/stacks/go.svg +0 -1
- package/templates/default/public/icons/stacks/graphql.svg +0 -1
- package/templates/default/public/icons/stacks/ionic.svg +0 -4
- package/templates/default/public/icons/stacks/java.svg +0 -1
- package/templates/default/public/icons/stacks/javascript.svg +0 -1
- package/templates/default/public/icons/stacks/kotlin.svg +0 -1
- package/templates/default/public/icons/stacks/llm.svg +0 -1
- package/templates/default/public/icons/stacks/mongodb.svg +0 -1
- package/templates/default/public/icons/stacks/node.js.svg +0 -1
- package/templates/default/public/icons/stacks/nodejs.svg +0 -1
- package/templates/default/public/icons/stacks/python.svg +0 -1
- package/templates/default/public/icons/stacks/rag.svg +0 -7
- package/templates/default/public/icons/stacks/react-native.svg +0 -1
- package/templates/default/public/icons/stacks/react.svg +0 -1
- package/templates/default/public/icons/stacks/rust.svg +0 -1
- package/templates/default/public/icons/stacks/solidity.svg +0 -1
- package/templates/default/public/icons/stacks/sveltekit.svg +0 -1
- package/templates/default/public/icons/stacks/swift.svg +0 -1
- package/templates/default/public/icons/stacks/tensorflow.svg +0 -1
- package/templates/default/public/icons/stacks/typescript.svg +0 -1
- package/templates/default/public/icons/stacks/vue.svg +0 -1
- package/templates/default/public/llms-full.txt +0 -83
- package/templates/default/public/llms.txt +0 -11
- package/templates/default/public/og-image.svg +0 -48
- package/templates/default/public/robots.txt +0 -53
- package/templates/default/public/sitemap.xml +0 -63
- package/templates/default/src/pages/404.astro +0 -64
- package/templates/default/src/pages/[slug]/[recordSlug].astro +0 -691
- package/templates/default/src/pages/[slug]/index.astro +0 -482
- package/templates/default/src/pages/about.astro +0 -189
- package/templates/default/src/pages/apps/[recordSlug].astro +0 -34
- package/templates/default/src/pages/contributors.astro +0 -175
- package/templates/default/src/pages/index.astro +0 -233
- package/templates/default/src/pages/sitemap.xml.ts +0 -89
- package/templates/default/src/pages/submit.astro +0 -281
- package/templates/default/src/styles/global.css +0 -33
- package/templates/default/tsconfig.json +0 -9
- package/templates/default/wrangler.jsonc +0 -28
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "About"
|
|
3
|
-
description: "What this directory is, who it's for, and how it works."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# About this directory
|
|
7
|
-
|
|
8
|
-
This site is a small, hand-curated index of useful open-source work
|
|
9
|
-
relevant to a specific community. The framing is deliberately
|
|
10
|
-
narrow: we list *one* project per record, with a hand-written
|
|
11
|
-
"why listed" note for each, and we surface the things that matter
|
|
12
|
-
in practice (recent activity, install friction, license, etc.)
|
|
13
|
-
rather than the things that look impressive on a GitHub profile.
|
|
14
|
-
|
|
15
|
-
## How it works
|
|
16
|
-
|
|
17
|
-
Records live as YAML files in `data/records/`. Each record carries:
|
|
18
|
-
|
|
19
|
-
- A `kind` (`project`, `resource`, or `entity` — picked by the
|
|
20
|
-
blueprint in `grove.config.ts`).
|
|
21
|
-
- A `slug` (URL-safe identifier; becomes the path on
|
|
22
|
-
`/<kind>/<slug>`).
|
|
23
|
-
- A `name` and a one-line `description`.
|
|
24
|
-
- Cross-links (`links.github`, `links.website`, etc.) and free-form
|
|
25
|
-
tags.
|
|
26
|
-
- An optional `curation` block with `labels`, `reviewedAt`,
|
|
27
|
-
`bestFor`, `whyListed`, `caveats`, and `scores`.
|
|
28
|
-
- An optional `github` block with the live repository signals
|
|
29
|
-
(stars, forks, latest release, languages, pushed-at).
|
|
30
|
-
|
|
31
|
-
At build time:
|
|
32
|
-
|
|
33
|
-
1. `grove validate` checks every record against the JSON schema.
|
|
34
|
-
2. `grove generate` writes `data/generated/records.{full,index}.json`
|
|
35
|
-
and `data/generated/site-config.json`.
|
|
36
|
-
3. `grove sitemap` writes `public/sitemap.xml`.
|
|
37
|
-
4. `grove llms` writes `public/llms.txt` and `llms-full.txt`.
|
|
38
|
-
5. `astro build` produces the static output.
|
|
39
|
-
|
|
40
|
-
The whole pipeline is reproducible. The records are the source of
|
|
41
|
-
truth; everything else is derived.
|
|
42
|
-
|
|
43
|
-
## Why a static site
|
|
44
|
-
|
|
45
|
-
The directory is a *reference*, not an *app*. Static HTML is the
|
|
46
|
-
right tool:
|
|
47
|
-
|
|
48
|
-
- Every page is a single round-trip. No client-side data layer.
|
|
49
|
-
- The output is auditable: open the deployed HTML and you can see
|
|
50
|
-
the full markup, no hidden hydration.
|
|
51
|
-
- Hosting is cheap (or free, on GitHub Pages / Cloudflare Pages).
|
|
52
|
-
- AI crawlers can read the full content. The `llms.txt` /
|
|
53
|
-
`llms-full.txt` files give them a single fetch to land on.
|
|
54
|
-
|
|
55
|
-
## Contributing
|
|
56
|
-
|
|
57
|
-
To add a record, open a submission issue. The maintainer will
|
|
58
|
-
review and, if accepted, open a PR that adds the new YAML file.
|
|
59
|
-
See `/submit` for the issue form and a minimal record template.
|
|
60
|
-
|
|
61
|
-
## License
|
|
62
|
-
|
|
63
|
-
The site's source code is MIT. The records are released under CC-BY
|
|
64
|
-
4.0 unless a record's `license` field says otherwise. A record's
|
|
65
|
-
`license` field is the license of the *project it describes*, not
|
|
66
|
-
the license of the directory entry.
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Methodology"
|
|
3
|
-
description: "How records are picked, scored, and surfaced in this directory."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Methodology
|
|
7
|
-
|
|
8
|
-
This page describes how entries in the directory are chosen, how the
|
|
9
|
-
curation signals are computed, and what we do (and don't) promise about
|
|
10
|
-
the data. The intent is to make the directory's logic auditable — every
|
|
11
|
-
number on a detail page is reproducible from the record's YAML.
|
|
12
|
-
|
|
13
|
-
## Selection
|
|
14
|
-
|
|
15
|
-
A record is included if it is:
|
|
16
|
-
|
|
17
|
-
1. **Open source.** Source is public under an OSI-approved license
|
|
18
|
-
(or public-domain dedication).
|
|
19
|
-
2. **Actively maintained.** A pushed commit within the last 18 months
|
|
20
|
-
OR a declared maintenance status of `maintained` / `passive`.
|
|
21
|
-
3. **Useful to a curious developer.** A working build, a real user
|
|
22
|
-
base (or a credible path to one), and a clear description of what
|
|
23
|
-
the project does.
|
|
24
|
-
|
|
25
|
-
We exclude: abandoned experiments, vapourware, projects whose entire
|
|
26
|
-
purpose is to sell a hosted plan, and any record that has not been
|
|
27
|
-
hand-checked by a maintainer.
|
|
28
|
-
|
|
29
|
-
## Curation labels
|
|
30
|
-
|
|
31
|
-
The `curation.labels` field is a small, hand-set list. The supported
|
|
32
|
-
labels are:
|
|
33
|
-
|
|
34
|
-
- `hot` — high recent activity or attention (≥ 1 000 stars or a
|
|
35
|
-
commit within the last 30 days).
|
|
36
|
-
- `new` — added to the directory in the last 7 days.
|
|
37
|
-
- `mature` — long-running curated project, pushed > 365 days ago,
|
|
38
|
-
but still maintained.
|
|
39
|
-
- `featured` — editor's pick for the front page.
|
|
40
|
-
- `needs-review` — open submission awaiting a second maintainer
|
|
41
|
-
look.
|
|
42
|
-
|
|
43
|
-
These labels are mutually additive, not exclusive. A `new` record
|
|
44
|
-
can also be `hot`; a `mature` record can also be `featured`.
|
|
45
|
-
|
|
46
|
-
## Scoring
|
|
47
|
-
|
|
48
|
-
The detail page surfaces a five-dimension score block. The five
|
|
49
|
-
dimensions are:
|
|
50
|
-
|
|
51
|
-
- **Documentation** — is the README / docs site enough to onboard
|
|
52
|
-
without reading the source?
|
|
53
|
-
- **Onboarding** — install in < 5 min, first useful result in < 1 h.
|
|
54
|
-
- **Maintenance** — recent commits, issue close rate, release cadence.
|
|
55
|
-
- **Community** — issues answered, discussions active, contributors
|
|
56
|
-
per release.
|
|
57
|
-
- **Production-readiness** — CI, tests, security policy, releases
|
|
58
|
-
with semver.
|
|
59
|
-
|
|
60
|
-
Each dimension is scored 0-5. The overall score on the detail page
|
|
61
|
-
is the mean. Scores are stored on the record, not computed at build
|
|
62
|
-
time, so we can deliberately disagree with the raw signals (a 1-line
|
|
63
|
-
toy that happens to be wildly popular can still score low on
|
|
64
|
-
documentation).
|
|
65
|
-
|
|
66
|
-
## Health signals
|
|
67
|
-
|
|
68
|
-
The `health` block on each record tracks four state machines:
|
|
69
|
-
|
|
70
|
-
- `status` — `healthy` / `slowing` / `stale` / `archived`.
|
|
71
|
-
- `tier` — `curated` / `community` / `experimental`.
|
|
72
|
-
- `issue_close_rate` — moving 90-day average.
|
|
73
|
-
- `last_release` — most recent semver tag.
|
|
74
|
-
|
|
75
|
-
A record's `status` transitions are time-boxed: a project with no
|
|
76
|
-
commits in 365 days flips from `slowing` to `stale`; 730 days flips
|
|
77
|
-
to `archived`. The transition is mechanical; the recovery is
|
|
78
|
-
manual (a maintainer sets `tier` back to `community` after review).
|
|
79
|
-
|
|
80
|
-
## Lenses
|
|
81
|
-
|
|
82
|
-
The directory's home page surfaces three curated lenses:
|
|
83
|
-
|
|
84
|
-
- **Hot** — `curation.labels` includes `hot`, OR `github.stars` ≥
|
|
85
|
-
1 000, OR `pushedAt` within 30 days.
|
|
86
|
-
- **New** — `pushedAt` within 7 days, OR `curation.labels` includes
|
|
87
|
-
`new`.
|
|
88
|
-
- **Mature** — `health.tier === "curated"` AND `pushedAt` > 365 days
|
|
89
|
-
ago.
|
|
90
|
-
|
|
91
|
-
Each lens caps at 6 items on the home page; the full filtered list
|
|
92
|
-
is reachable via the lens tab on `/projects`.
|
|
93
|
-
|
|
94
|
-
## What we don't promise
|
|
95
|
-
|
|
96
|
-
- **Real-time data.** The site is rebuilt on a schedule, not on
|
|
97
|
-
every push. Counts and dates can lag by up to one build cycle.
|
|
98
|
-
- **Verdict-free scores.** A high overall score means "useful to a
|
|
99
|
-
curious developer", not "best in class" — judgement calls are
|
|
100
|
-
documented per record, not baked into the score.
|
|
101
|
-
- **Causal claims.** The "best for" / "why listed" / "caveats"
|
|
102
|
-
blocks are editorial notes, not derived signals. They reflect
|
|
103
|
-
what a maintainer thought at review time.
|
|
File without changes
|
|
@@ -1,46 +0,0 @@
|
|
|
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
|
|
@@ -1,46 +0,0 @@
|
|
|
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
|
|
@@ -1,47 +0,0 @@
|
|
|
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
|
|
@@ -1,47 +0,0 @@
|
|
|
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
|
|
@@ -1,46 +0,0 @@
|
|
|
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
|
|
@@ -1,48 +0,0 @@
|
|
|
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
|
|
@@ -1,47 +0,0 @@
|
|
|
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
|
|
@@ -1,44 +0,0 @@
|
|
|
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
|
|
@@ -1,47 +0,0 @@
|
|
|
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
|
|
@@ -1,43 +0,0 @@
|
|
|
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: []
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|