@grove-dev/astro 0.2.2 → 0.2.5
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/LICENSE +21 -0
- package/package.json +4 -4
- package/src/components/ItemCard.astro +35 -18
- package/src/components/{AppSection.astro → RecordSection.astro} +11 -6
- package/templates/default/src/data/records.ts +61 -29
- package/templates/default/src/pages/index.astro +23 -18
- package/templates/default/.astro/content.d.ts +0 -155
- package/templates/default/.astro/settings.json +0 -5
- package/templates/default/.astro/types.d.ts +0 -2
- package/templates/default/dist/_astro/BaseLayout.DfpwR3jc.css +0 -1
- package/templates/default/dist/about/index.html +0 -165
- package/templates/default/dist/icons/platforms/android.svg +0 -1
- package/templates/default/dist/icons/platforms/apple-dark.svg +0 -1
- package/templates/default/dist/icons/platforms/apple-light.svg +0 -1
- package/templates/default/dist/icons/platforms/chrome.svg +0 -1
- package/templates/default/dist/icons/platforms/chromeos.svg +0 -5
- package/templates/default/dist/icons/platforms/desktop.svg +0 -4
- package/templates/default/dist/icons/platforms/embedded.svg +0 -5
- package/templates/default/dist/icons/platforms/ios.svg +0 -1
- package/templates/default/dist/icons/platforms/linux.svg +0 -1
- package/templates/default/dist/icons/platforms/macos.svg +0 -1
- package/templates/default/dist/icons/platforms/ubuntu.svg +0 -1
- package/templates/default/dist/icons/platforms/web.svg +0 -5
- package/templates/default/dist/icons/platforms/windows.svg +0 -6
- package/templates/default/dist/icons/stacks/android.svg +0 -1
- package/templates/default/dist/icons/stacks/apple-dark.svg +0 -1
- package/templates/default/dist/icons/stacks/apple-light.svg +0 -1
- package/templates/default/dist/icons/stacks/capacitor.svg +0 -14
- package/templates/default/dist/icons/stacks/dart.svg +0 -1
- package/templates/default/dist/icons/stacks/firebase.svg +0 -1
- package/templates/default/dist/icons/stacks/flutter.svg +0 -1
- package/templates/default/dist/icons/stacks/graphql.svg +0 -1
- package/templates/default/dist/icons/stacks/ionic.svg +0 -4
- package/templates/default/dist/icons/stacks/java.svg +0 -1
- package/templates/default/dist/icons/stacks/javascript.svg +0 -1
- package/templates/default/dist/icons/stacks/kotlin.svg +0 -1
- package/templates/default/dist/icons/stacks/mongodb.svg +0 -1
- package/templates/default/dist/icons/stacks/nodejs.svg +0 -1
- package/templates/default/dist/icons/stacks/python.svg +0 -1
- package/templates/default/dist/icons/stacks/react-native.svg +0 -1
- package/templates/default/dist/icons/stacks/react.svg +0 -1
- package/templates/default/dist/icons/stacks/rust.svg +0 -1
- package/templates/default/dist/icons/stacks/solidity.svg +0 -1
- package/templates/default/dist/icons/stacks/swift.svg +0 -1
- package/templates/default/dist/icons/stacks/tensorflow.svg +0 -1
- package/templates/default/dist/icons/stacks/typescript.svg +0 -1
- package/templates/default/dist/index.html +0 -55
- package/templates/default/dist/llms-full.txt +0 -14
- package/templates/default/dist/llms.txt +0 -11
- package/templates/default/dist/og-image.svg +0 -48
- package/templates/default/dist/projects/index.html +0 -61
- package/templates/default/dist/robots.txt +0 -53
- package/templates/default/dist/sitemap.xml +0 -21
- package/templates/default/dist/submit/index.html +0 -69
- package/templates/default/node_modules/.bin/astro +0 -21
- package/templates/default/node_modules/.bin/astro-check +0 -21
- package/templates/default/node_modules/.bin/grove +0 -21
- package/templates/default/node_modules/.bin/jiti +0 -21
- package/templates/default/node_modules/.bin/prettier +0 -21
- package/templates/default/node_modules/.bin/rollup +0 -21
- package/templates/default/node_modules/.bin/tsc +0 -21
- package/templates/default/node_modules/.bin/tsserver +0 -21
- package/templates/default/node_modules/.bin/tsx +0 -21
- package/templates/default/node_modules/.bin/vite +0 -21
- package/templates/default/node_modules/.bin/yaml +0 -21
- package/templates/default/node_modules/.vite/deps/_metadata.json +0 -79
- package/templates/default/node_modules/.vite/deps/astro-KRVZHBC5.js +0 -433
- package/templates/default/node_modules/.vite/deps/astro-KRVZHBC5.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/astro___aria-query.js +0 -5
- package/templates/default/node_modules/.vite/deps/astro___aria-query.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/astro___axobject-query.js +0 -5
- package/templates/default/node_modules/.vite/deps/astro___axobject-query.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/astro___html-escaper.js +0 -9
- package/templates/default/node_modules/.vite/deps/astro___html-escaper.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -241
- package/templates/default/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/audit-GYHQ3ITH.js +0 -1592
- package/templates/default/node_modules/.vite/deps/audit-GYHQ3ITH.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-5WRI5ZAA.js +0 -30
- package/templates/default/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-7P4KIK53.js +0 -186
- package/templates/default/node_modules/.vite/deps/chunk-7P4KIK53.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-BQGHFQJH.js +0 -48
- package/templates/default/node_modules/.vite/deps/chunk-BQGHFQJH.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-CJCDKWP2.js +0 -6779
- package/templates/default/node_modules/.vite/deps/chunk-CJCDKWP2.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-FHJ3XBDE.js +0 -33
- package/templates/default/node_modules/.vite/deps/chunk-FHJ3XBDE.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-FQEMNIUQ.js +0 -88
- package/templates/default/node_modules/.vite/deps/chunk-FQEMNIUQ.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-HBSVDAQD.js +0 -72
- package/templates/default/node_modules/.vite/deps/chunk-HBSVDAQD.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-HDOQ2U3U.js +0 -3757
- package/templates/default/node_modules/.vite/deps/chunk-HDOQ2U3U.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/chunk-XEBKRCNE.js +0 -54
- package/templates/default/node_modules/.vite/deps/chunk-XEBKRCNE.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/package.json +0 -3
- package/templates/default/node_modules/.vite/deps/settings-C5H4VHXU.js +0 -213
- package/templates/default/node_modules/.vite/deps/settings-C5H4VHXU.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/toolbar-H5DB6HVP.js +0 -525
- package/templates/default/node_modules/.vite/deps/toolbar-H5DB6HVP.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/ui-library-JGHU6JE2.js +0 -1020
- package/templates/default/node_modules/.vite/deps/ui-library-JGHU6JE2.js.map +0 -7
- package/templates/default/node_modules/.vite/deps/xray-EFCQOW4E.js +0 -147
- package/templates/default/node_modules/.vite/deps/xray-EFCQOW4E.js.map +0 -7
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# Grove Directory
|
|
2
|
-
|
|
3
|
-
A curated, health-aware developer directory powered by Grove.
|
|
4
|
-
|
|
5
|
-
Directory: https://example.com/projects
|
|
6
|
-
Records indexed: 0
|
|
7
|
-
Categories: 0
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
Use /llms-full.txt for record-level details. Prefer detail pages for citations.
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" width="1200" height="630">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
-
<stop offset="0%" stop-color="#0a0a0c"/>
|
|
5
|
-
<stop offset="100%" stop-color="#18181b"/>
|
|
6
|
-
</linearGradient>
|
|
7
|
-
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
8
|
-
<stop offset="0%" stop-color="#1f6feb"/>
|
|
9
|
-
<stop offset="100%" stop-color="#6ee7b7"/>
|
|
10
|
-
</linearGradient>
|
|
11
|
-
<radialGradient id="glow1" cx="0.15" cy="0.2" r="0.5">
|
|
12
|
-
<stop offset="0%" stop-color="#1f6feb" stop-opacity="0.25"/>
|
|
13
|
-
<stop offset="100%" stop-color="#1f6feb" stop-opacity="0"/>
|
|
14
|
-
</radialGradient>
|
|
15
|
-
<radialGradient id="glow2" cx="0.85" cy="0.9" r="0.5">
|
|
16
|
-
<stop offset="0%" stop-color="#fb923c" stop-opacity="0.18"/>
|
|
17
|
-
<stop offset="100%" stop-color="#fb923c" stop-opacity="0"/>
|
|
18
|
-
</radialGradient>
|
|
19
|
-
</defs>
|
|
20
|
-
<rect width="1200" height="630" fill="url(#bg)"/>
|
|
21
|
-
<rect width="1200" height="630" fill="url(#glow1)"/>
|
|
22
|
-
<rect width="1200" height="630" fill="url(#glow2)"/>
|
|
23
|
-
<g transform="translate(96,96)">
|
|
24
|
-
<rect width="48" height="48" rx="9" fill="#fafafa"/>
|
|
25
|
-
</g>
|
|
26
|
-
<g transform="translate(96,260)">
|
|
27
|
-
<text x="0" y="0" font-family="ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif" font-size="84" font-weight="700" fill="#fafafa" letter-spacing="-2.5">
|
|
28
|
-
Open Curated
|
|
29
|
-
</text>
|
|
30
|
-
<text x="0" y="84" font-family="ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif" font-size="32" font-weight="400" fill="#a1a1aa">
|
|
31
|
-
A directory of real open-source projects
|
|
32
|
-
</text>
|
|
33
|
-
<text x="0" y="132" font-family="ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif" font-size="32" font-weight="400" fill="#a1a1aa">
|
|
34
|
-
you can run, study, and contribute to.
|
|
35
|
-
</text>
|
|
36
|
-
</g>
|
|
37
|
-
<g transform="translate(96,520)">
|
|
38
|
-
<rect x="0" y="0" width="200" height="56" rx="10" fill="none" stroke="#3f3f46" stroke-width="1.5"/>
|
|
39
|
-
<text x="100" y="36" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace" font-size="22" font-weight="500" fill="#d4d4d8">
|
|
40
|
-
open-curated.dev
|
|
41
|
-
</text>
|
|
42
|
-
</g>
|
|
43
|
-
<g transform="translate(820,520)">
|
|
44
|
-
<text x="0" y="36" font-family="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace" font-size="22" font-weight="500" fill="url(#accent)">
|
|
45
|
-
79 apps · 4.3k stars
|
|
46
|
-
</text>
|
|
47
|
-
</g>
|
|
48
|
-
</svg>
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Astro v6.4.5"><meta name="theme-color" content="#0a0a0c" media="(prefers-color-scheme: dark)"><meta name="theme-color" content="#fafafa" media="(prefers-color-scheme: light)"><link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' rx='3' fill='%2318181b'/%3E%3C/svg%3E"><link rel="sitemap" href="/sitemap.xml"><link rel="alternate" type="text/plain" href="/llms.txt" title="LLM usage guidance"><!-- Primary meta --><title>Browse projects — Grove Directory</title><meta name="description" content="A searchable directory of projects for Grove Directory."><link rel="canonical" href="https://example.com/projects/"><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:url" content="https://example.com/projects/"><meta property="og:title" content="Browse projects — Grove Directory"><meta property="og:description" content="A searchable directory of projects for Grove Directory."><meta property="og:image" content="https://example.com/og-image.svg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="Grove Directory — A curated, health-aware developer directory powered by Grove."><meta property="og:site_name" content="Grove Directory"><meta property="og:locale" content="en"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Browse projects — Grove Directory"><meta name="twitter:description" content="A searchable directory of projects for Grove Directory."><meta name="twitter:image" content="https://example.com/og-image.svg"><meta name="twitter:image:alt" content="Grove Directory — A curated, health-aware developer directory powered by Grove."><!-- JSON-LD: site-wide identity --><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Grove Directory","description":"A curated, health-aware developer directory powered by Grove.","url":"https://example.com","inLanguage":"en","potentialAction":{"@type":"SearchAction","target":"https://example.com/projects?q={search_term_string}","query-input":"required name=search_term_string"}}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Grove Directory","url":"https://example.com","logo":"https://example.com/og-image.svg","sameAs":["https://github.com/tortuvshin/grove"]}</script><!-- JSON-LD: per-page (SoftwareSourceCode for [slug], etc.) --><script>
|
|
2
|
-
// THEME_INIT — runs before paint so the user never sees a
|
|
3
|
-
// flash of the wrong theme. State is persisted in localStorage
|
|
4
|
-
// under the key "grove-theme" (matching ThemeToggle.astro).
|
|
5
|
-
(function () {
|
|
6
|
-
var STORAGE_KEY = "grove-theme";
|
|
7
|
-
function getMode() {
|
|
8
|
-
try {
|
|
9
|
-
var stored = localStorage.getItem(STORAGE_KEY);
|
|
10
|
-
if (stored === "light" || stored === "dark" || stored === "system")
|
|
11
|
-
return stored;
|
|
12
|
-
} catch (e) {
|
|
13
|
-
// localStorage may be blocked (private mode, etc.) —
|
|
14
|
-
// fall through to the system default.
|
|
15
|
-
}
|
|
16
|
-
return "system";
|
|
17
|
-
}
|
|
18
|
-
function apply(mode) {
|
|
19
|
-
var resolved =
|
|
20
|
-
mode === "system"
|
|
21
|
-
? (window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
22
|
-
? "dark"
|
|
23
|
-
: "light")
|
|
24
|
-
: mode;
|
|
25
|
-
var root = document.documentElement;
|
|
26
|
-
if (resolved === "dark") root.classList.add("dark");
|
|
27
|
-
else root.classList.remove("dark");
|
|
28
|
-
root.dataset.theme = mode;
|
|
29
|
-
root.dataset.resolvedTheme = resolved;
|
|
30
|
-
}
|
|
31
|
-
apply(getMode());
|
|
32
|
-
window.addEventListener("theme:set", function (e) {
|
|
33
|
-
apply(e.detail);
|
|
34
|
-
});
|
|
35
|
-
var mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
36
|
-
mq.addEventListener("change", function () {
|
|
37
|
-
if (getMode() === "system") apply("system");
|
|
38
|
-
});
|
|
39
|
-
})();
|
|
40
|
-
</script><link rel="stylesheet" href="/_astro/BaseLayout.DfpwR3jc.css">
|
|
41
|
-
<style>.line-clamp-2[data-astro-cid-ilaxscvv]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
|
42
|
-
</style></head> <body class="min-h-screen bg-white text-ink-900 dark:bg-ink-950 dark:text-ink-100"> <header class="sticky top-0 z-50 border-b border-ink-200 bg-white/85 backdrop-blur dark:border-ink-800 dark:bg-ink-950/85"> <div class="mx-auto flex max-w-wide items-center gap-6 px-5 py-3 sm:px-7" style="max-width: var(--container-wide, 1400px);"> <a href="/" class="inline-flex items-center gap-2 text-[0.95rem] font-semibold tracking-tight text-ink-900 dark:text-ink-100"> <span aria-hidden="true" class="inline-block h-[18px] w-[18px] rounded bg-ink-900 dark:bg-ink-100"></span> <span>Grove Directory</span> </a> <nav class="hidden flex-1 md:block" aria-label="Primary"> <ul class="m-0 flex list-none gap-5 p-0"> <li> <a href="/" class="text-[0.875rem] font-medium text-ink-500 transition-colors hover:text-ink-900 dark:text-ink-400 dark:hover:text-ink-100"> Home </a> </li><li> <a href="/projects" class="text-[0.875rem] font-medium text-ink-500 transition-colors hover:text-ink-900 dark:text-ink-400 dark:hover:text-ink-100"> Browse </a> </li><li> <a href="/about" class="text-[0.875rem] font-medium text-ink-500 transition-colors hover:text-ink-900 dark:text-ink-400 dark:hover:text-ink-100"> About </a> </li> </ul> </nav> <div class="ml-auto flex items-center gap-2"> <a href="/submit" class="grove-btn grove-btn-outline"> <svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true" fill="currentColor"> <path d="M7.75 2a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 7.75 2Z"></path> </svg> <span>Submit project</span> </a> <a href="https://github.com/tortuvshin/grove" target="_blank" rel="noopener noreferrer" aria-label="Star" title="Star" class="grove-btn grove-btn-outline"> <svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true" fill="currentColor"> <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38v-1.33c-2.22.48-2.69-1.07-2.69-1.07-.36-.92-.89-1.17-.89-1.17-.73-.5.05-.49.05-.49.8.06 1.23.83 1.23.83.72 1.22 1.87.87 2.33.67.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48v2.19c0 .21.15.46.55.38A8 8 0 0 0 8 0Z"></path> </svg> <span>Star</span> </a> <button type="button" data-theme-toggle aria-label="Toggle theme" title="Toggle theme" class="relative inline-flex h-8 w-8 items-center justify-center rounded-md border border-ink-200 bg-white text-ink-700 transition-colors hover:border-ink-300 hover:bg-ink-50 dark:border-ink-800 dark:bg-ink-950 dark:text-ink-200 dark:hover:border-ink-700 dark:hover:bg-ink-900/40"> <svg class="hidden h-4 w-4 dark:block" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <circle cx="12" cy="12" r="4"></circle> <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"></path> </svg> <svg class="block h-4 w-4 dark:hidden" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z"></path> </svg> </button> <script type="module">const c="grove-theme";function o(){try{const e=localStorage.getItem(c);return e==="light"||e==="dark"||e==="system"?e:"system"}catch{return"system"}}function s(){const e=["light","dark","system"],n=o(),r=e[(e.indexOf(n)+1)%e.length];try{localStorage.setItem(c,r)}catch{}return window.dispatchEvent(new CustomEvent("theme:set",{detail:r})),r}function t(e){e.title=`Theme: ${o()} (click to switch)`}document.querySelectorAll("[data-theme-toggle]").forEach(e=>{t(e),e.addEventListener("click",()=>{s(),t(e)}),e.addEventListener("mouseenter",()=>t(e)),e.addEventListener("focus",()=>t(e))});</script> </div> </div> </header> <script type="module">document.addEventListener("click",t=>{if(t.defaultPrevented||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.button!==0)return;const r=t.target.closest('a[href^="#"]');if(!r)return;const e=r.getAttribute("href");if(e.length<=1)return;const n=document.querySelector(e);n&&(t.preventDefault(),n.scrollIntoView({behavior:"smooth",block:"start"}),history.replaceState(null,"",e))});</script> <main> <section class="grove-section-tight border-b border-ink-200 dark:border-ink-800"> <div class="grove-container-wide mx-auto px-5 pt-10 sm:px-7 sm:pt-12"> <span class="text-2xs font-medium uppercase tracking-wider text-ink-500 dark:text-ink-400"> projects </span> <h1 class="m-0 mt-1 text-[1.875rem] sm:text-[2.125rem] font-semibold tracking-tight text-ink-900 dark:text-ink-100">
|
|
43
|
-
Browse projects </h1> <p class="m-0 mt-2 max-w-[64ch] text-[0.9375rem] text-ink-500 dark:text-ink-400">
|
|
44
|
-
Search, filter, and explore 0 projects in this directory.
|
|
45
|
-
</p> <div class="mt-6"> <nav class="grove-lens-tabs flex flex-wrap items-center gap-1.5" aria-label="Curated views"> <a href="/projects" class="grove-btn rounded-md px-3 py-1.5 text-2xs font-medium transition-colors grove-btn-primary" aria-current="page" data-event="lens_tab_click" data-event-source="smart_lens_tabs"> All </a><a href="/projects?lens=hot" class="grove-btn rounded-md px-3 py-1.5 text-2xs font-medium transition-colors grove-btn-ghost border border-ink-200 dark:border-ink-800" data-event="lens_tab_click" data-event-source="smart_lens_tabs"> Trending </a><a href="/projects?lens=new" class="grove-btn rounded-md px-3 py-1.5 text-2xs font-medium transition-colors grove-btn-ghost border border-ink-200 dark:border-ink-800" data-event="lens_tab_click" data-event-source="smart_lens_tabs"> Recently added </a><a href="/projects?lens=mature" class="grove-btn rounded-md px-3 py-1.5 text-2xs font-medium transition-colors grove-btn-ghost border border-ink-200 dark:border-ink-800" data-event="lens_tab_click" data-event-source="smart_lens_tabs"> Established </a><a href="/projects?lens=featured" class="grove-btn rounded-md px-3 py-1.5 text-2xs font-medium transition-colors grove-btn-ghost border border-ink-200 dark:border-ink-800" data-event="lens_tab_click" data-event-source="smart_lens_tabs"> Featured </a><a href="/projects?lens=needs-review" class="grove-btn rounded-md px-3 py-1.5 text-2xs font-medium transition-colors grove-btn-ghost border border-ink-200 dark:border-ink-800" data-event="lens_tab_click" data-event-source="smart_lens_tabs"> Needs review </a> </nav> </div> <div class="mt-5"> <form method="get" action="/projects" class="grove-refine-panel flex flex-wrap items-end gap-3" data-grove-refine-panel> <label class="flex flex-col gap-1"> <span class="text-2xs font-medium uppercase tracking-wider text-ink-500 dark:text-ink-400">
|
|
46
|
-
Sort
|
|
47
|
-
</span> <select name="sort" onchange="this.form?.requestSubmit()" class="grove-select min-w-[12rem] rounded-md border border-ink-200 bg-white py-1.5 pl-2 pr-7 text-sm focus:border-ink-900 focus:outline-none focus:ring-2 focus:ring-ink-900/10 dark:border-ink-800 dark:bg-ink-950 dark:text-ink-100"> <option value="recently-updated"> Recently updated </option><option value="most-starred"> Most starred </option><option value="recently-added"> Recently added </option><option value="best-overall"> Best overall </option><option value="alphabetical"> Alphabetical </option> </select> </label> <noscript> <button type="submit" class="grove-btn grove-btn-outline">
|
|
48
|
-
Apply
|
|
49
|
-
</button> </noscript> </form> </div> </div> </section> <section class="grove-section-tight"> <div class="grove-container-wide mx-auto px-5 sm:px-7"> <div class="mb-4 flex flex-wrap items-baseline justify-between gap-2"> <p class="m-0 text-2xs text-ink-500 dark:text-ink-400">
|
|
50
|
-
Showing
|
|
51
|
-
<span class="ml-1 font-mono text-ink-900 dark:text-ink-100"> 0 </span>
|
|
52
|
-
–
|
|
53
|
-
<span class="font-mono text-ink-900 dark:text-ink-100"> 0 </span>
|
|
54
|
-
of
|
|
55
|
-
<span class="ml-1 font-mono text-ink-900 dark:text-ink-100"> 0 </span> projects </p> </div> <div class="flex flex-col items-center gap-2 py-16 text-center"> <p class="m-0 text-[0.9375rem] font-medium text-ink-700 dark:text-ink-200">
|
|
56
|
-
No projects match these filters.
|
|
57
|
-
</p> <a href="/projects" class="mt-3 text-sm text-ink-500 hover:text-ink-900 dark:hover:text-ink-100">
|
|
58
|
-
Clear all filters
|
|
59
|
-
</a> </div> </div> </section> </main> <footer class="mt-16 border-t border-ink-200 bg-white text-ink-500 dark:border-ink-800 dark:bg-ink-950 dark:text-ink-400"> <div class="mx-auto grid max-w-wide grid-cols-2 gap-8 px-5 py-12 md:grid-cols-4 sm:px-7" style="max-width: var(--container-wide, 1400px);"> <div class="col-span-2 md:col-span-1"> <div class="mb-2 inline-flex items-center gap-2 text-[0.95rem] font-semibold text-ink-900 dark:text-ink-100"> <span aria-hidden="true" class="inline-block h-3.5 w-3.5 rounded bg-ink-900 dark:bg-ink-100"></span> <span>Grove Directory</span> </div> <p class="m-0 max-w-[36ch] text-[0.8125rem] leading-relaxed text-ink-500 dark:text-ink-400"> A curated, health-aware developer directory. </p> </div> <div> <h4 class="mb-3 text-2xs font-semibold uppercase tracking-wider text-ink-900 dark:text-ink-100"> Discover </h4> <ul class="m-0 flex list-none flex-col gap-2 p-0"> <li> <a href="https://github.com/tortuvshin/grove" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Source on GitHub </a> </li><li> <a href="https://github.com/tortuvshin/grove/releases" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Latest release </a> </li> </ul> </div> <div> <h4 class="mb-3 text-2xs font-semibold uppercase tracking-wider text-ink-900 dark:text-ink-100"> Contribute </h4> <ul class="m-0 flex list-none flex-col gap-2 p-0"> <li> <a href="https://github.com/tortuvshin/grove/blob/main/CONTRIBUTING.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Submit via GitHub </a> </li><li> <a href="https://github.com/tortuvshin/grove/issues" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Report an issue </a> </li><li> <a href="https://github.com/tortuvshin/grove/blob/main/CONTRIBUTING.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Contributing guide </a> </li> </ul> </div> <div> <h4 class="mb-3 text-2xs font-semibold uppercase tracking-wider text-ink-900 dark:text-ink-100"> Project </h4> <ul class="m-0 flex list-none flex-col gap-2 p-0"> <li> <a href="https://github.com/tortuvshin/grove/blob/main/README.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> README </a> </li><li> <a href="https://github.com/tortuvshin/grove/blob/main/CHANGELOG.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Changelog </a> </li> </ul> </div> </div> <div class="border-t border-ink-200 dark:border-ink-800"> <div class="mx-auto flex max-w-wide flex-wrap items-center gap-3 px-5 py-4 text-2xs text-ink-500 sm:px-7 dark:text-ink-400" style="max-width: var(--container-wide, 1400px);"> <span>© 2026 Grove Directory.</span> <span class="text-ink-300 dark:text-ink-700">·</span> <a href="https://github.com/tortuvshin/grove" target="_blank" rel="noopener noreferrer" class="transition-colors hover:text-ink-900 dark:hover:text-ink-100">
|
|
60
|
-
View source on GitHub
|
|
61
|
-
</a> </div> </div> </footer> </body> </html>
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# robots.txt for open-curated.dev
|
|
2
|
-
#
|
|
3
|
-
# Search engines, AI crawlers, and link preview bots are all welcome.
|
|
4
|
-
# The directory is intended to be fully indexable.
|
|
5
|
-
#
|
|
6
|
-
# The /submit path is a thin wrapper that POSTs to GitHub Issues —
|
|
7
|
-
# it carries no indexable content of its own, so we disallow it here
|
|
8
|
-
# (the page also serves `noindex,nofollow` as a belt-and-suspenders).
|
|
9
|
-
|
|
10
|
-
User-agent: *
|
|
11
|
-
Allow: /
|
|
12
|
-
Disallow: /submit
|
|
13
|
-
|
|
14
|
-
# LLM/AI crawlers — explicitly welcome. The curated per-app metadata
|
|
15
|
-
# is the primary audience for the /llms.txt and /llms-full.txt files.
|
|
16
|
-
User-agent: GPTBot
|
|
17
|
-
Allow: /
|
|
18
|
-
|
|
19
|
-
User-agent: ChatGPT-User
|
|
20
|
-
Allow: /
|
|
21
|
-
|
|
22
|
-
User-agent: ClaudeBot
|
|
23
|
-
Allow: /
|
|
24
|
-
|
|
25
|
-
User-agent: Claude-Web
|
|
26
|
-
Allow: /
|
|
27
|
-
|
|
28
|
-
User-agent: anthropic-ai
|
|
29
|
-
Allow: /
|
|
30
|
-
|
|
31
|
-
User-agent: PerplexityBot
|
|
32
|
-
Allow: /
|
|
33
|
-
|
|
34
|
-
User-agent: Google-Extended
|
|
35
|
-
Allow: /
|
|
36
|
-
|
|
37
|
-
User-agent: Applebot-Extended
|
|
38
|
-
Allow: /
|
|
39
|
-
|
|
40
|
-
User-agent: cohere-ai
|
|
41
|
-
Allow: /
|
|
42
|
-
|
|
43
|
-
User-agent: CCBot
|
|
44
|
-
Allow: /
|
|
45
|
-
|
|
46
|
-
User-agent: Amazonbot
|
|
47
|
-
Allow: /
|
|
48
|
-
|
|
49
|
-
# Sitemaps
|
|
50
|
-
Sitemap: https://example.com/sitemap.xml
|
|
51
|
-
|
|
52
|
-
# LLM context
|
|
53
|
-
LLM-Content: https://example.com/llms.txt
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
3
|
-
<url>
|
|
4
|
-
<loc>https://example.com/</loc>
|
|
5
|
-
<lastmod>2026-06-10</lastmod>
|
|
6
|
-
<changefreq>daily</changefreq>
|
|
7
|
-
<priority>1.0</priority>
|
|
8
|
-
</url>
|
|
9
|
-
<url>
|
|
10
|
-
<loc>https://example.com/about</loc>
|
|
11
|
-
<lastmod>2026-06-10</lastmod>
|
|
12
|
-
<changefreq>monthly</changefreq>
|
|
13
|
-
<priority>0.5</priority>
|
|
14
|
-
</url>
|
|
15
|
-
<url>
|
|
16
|
-
<loc>https://example.com/submit</loc>
|
|
17
|
-
<lastmod>2026-06-10</lastmod>
|
|
18
|
-
<changefreq>yearly</changefreq>
|
|
19
|
-
<priority>0.3</priority>
|
|
20
|
-
</url>
|
|
21
|
-
</urlset>
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Astro v6.4.5"><meta name="theme-color" content="#0a0a0c" media="(prefers-color-scheme: dark)"><meta name="theme-color" content="#fafafa" media="(prefers-color-scheme: light)"><link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' rx='3' fill='%2318181b'/%3E%3C/svg%3E"><link rel="sitemap" href="/sitemap.xml"><link rel="alternate" type="text/plain" href="/llms.txt" title="LLM usage guidance"><!-- Primary meta --><title>Submit a project — Grove Directory</title><meta name="description" content="Submit a new project to Grove Directory."><link rel="canonical" href="https://example.com/submit/"><meta name="robots" content="noindex,nofollow"><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:url" content="https://example.com/submit/"><meta property="og:title" content="Submit a project — Grove Directory"><meta property="og:description" content="Submit a new project to Grove Directory."><meta property="og:image" content="https://example.com/og-image.svg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="Grove Directory — A curated, health-aware developer directory powered by Grove."><meta property="og:site_name" content="Grove Directory"><meta property="og:locale" content="en"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Submit a project — Grove Directory"><meta name="twitter:description" content="Submit a new project to Grove Directory."><meta name="twitter:image" content="https://example.com/og-image.svg"><meta name="twitter:image:alt" content="Grove Directory — A curated, health-aware developer directory powered by Grove."><!-- JSON-LD: site-wide identity --><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Grove Directory","description":"A curated, health-aware developer directory powered by Grove.","url":"https://example.com","inLanguage":"en","potentialAction":{"@type":"SearchAction","target":"https://example.com/projects?q={search_term_string}","query-input":"required name=search_term_string"}}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Grove Directory","url":"https://example.com","logo":"https://example.com/og-image.svg","sameAs":["https://github.com/tortuvshin/grove"]}</script><!-- JSON-LD: per-page (SoftwareSourceCode for [slug], etc.) --><script>
|
|
2
|
-
// THEME_INIT — runs before paint so the user never sees a
|
|
3
|
-
// flash of the wrong theme. State is persisted in localStorage
|
|
4
|
-
// under the key "grove-theme" (matching ThemeToggle.astro).
|
|
5
|
-
(function () {
|
|
6
|
-
var STORAGE_KEY = "grove-theme";
|
|
7
|
-
function getMode() {
|
|
8
|
-
try {
|
|
9
|
-
var stored = localStorage.getItem(STORAGE_KEY);
|
|
10
|
-
if (stored === "light" || stored === "dark" || stored === "system")
|
|
11
|
-
return stored;
|
|
12
|
-
} catch (e) {
|
|
13
|
-
// localStorage may be blocked (private mode, etc.) —
|
|
14
|
-
// fall through to the system default.
|
|
15
|
-
}
|
|
16
|
-
return "system";
|
|
17
|
-
}
|
|
18
|
-
function apply(mode) {
|
|
19
|
-
var resolved =
|
|
20
|
-
mode === "system"
|
|
21
|
-
? (window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
22
|
-
? "dark"
|
|
23
|
-
: "light")
|
|
24
|
-
: mode;
|
|
25
|
-
var root = document.documentElement;
|
|
26
|
-
if (resolved === "dark") root.classList.add("dark");
|
|
27
|
-
else root.classList.remove("dark");
|
|
28
|
-
root.dataset.theme = mode;
|
|
29
|
-
root.dataset.resolvedTheme = resolved;
|
|
30
|
-
}
|
|
31
|
-
apply(getMode());
|
|
32
|
-
window.addEventListener("theme:set", function (e) {
|
|
33
|
-
apply(e.detail);
|
|
34
|
-
});
|
|
35
|
-
var mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
36
|
-
mq.addEventListener("change", function () {
|
|
37
|
-
if (getMode() === "system") apply("system");
|
|
38
|
-
});
|
|
39
|
-
})();
|
|
40
|
-
</script><link rel="stylesheet" href="/_astro/BaseLayout.DfpwR3jc.css">
|
|
41
|
-
<style>.grove-container[data-astro-cid-nj4gdmks]{max-width:var(--container-container, 1140px)}.grove-container-wide[data-astro-cid-nj4gdmks]{max-width:var(--container-wide, 1400px)}.grove-container-narrow[data-astro-cid-nj4gdmks]{max-width:var(--container-narrow, 720px)}
|
|
42
|
-
</style></head> <body class="min-h-screen bg-white text-ink-900 dark:bg-ink-950 dark:text-ink-100"> <header class="sticky top-0 z-50 border-b border-ink-200 bg-white/85 backdrop-blur dark:border-ink-800 dark:bg-ink-950/85"> <div class="mx-auto flex max-w-wide items-center gap-6 px-5 py-3 sm:px-7" style="max-width: var(--container-wide, 1400px);"> <a href="/" class="inline-flex items-center gap-2 text-[0.95rem] font-semibold tracking-tight text-ink-900 dark:text-ink-100"> <span aria-hidden="true" class="inline-block h-[18px] w-[18px] rounded bg-ink-900 dark:bg-ink-100"></span> <span>Grove Directory</span> </a> <nav class="hidden flex-1 md:block" aria-label="Primary"> <ul class="m-0 flex list-none gap-5 p-0"> <li> <a href="/" class="text-[0.875rem] font-medium text-ink-500 transition-colors hover:text-ink-900 dark:text-ink-400 dark:hover:text-ink-100"> Home </a> </li><li> <a href="/projects" class="text-[0.875rem] font-medium text-ink-500 transition-colors hover:text-ink-900 dark:text-ink-400 dark:hover:text-ink-100"> Browse </a> </li><li> <a href="/about" class="text-[0.875rem] font-medium text-ink-500 transition-colors hover:text-ink-900 dark:text-ink-400 dark:hover:text-ink-100"> About </a> </li> </ul> </nav> <div class="ml-auto flex items-center gap-2"> <a href="https://github.com/tortuvshin/grove" target="_blank" rel="noopener noreferrer" aria-label="Star" title="Star" class="grove-btn grove-btn-outline"> <svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true" fill="currentColor"> <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38v-1.33c-2.22.48-2.69-1.07-2.69-1.07-.36-.92-.89-1.17-.89-1.17-.73-.5.05-.49.05-.49.8.06 1.23.83 1.23.83.72 1.22 1.87.87 2.33.67.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48v2.19c0 .21.15.46.55.38A8 8 0 0 0 8 0Z"></path> </svg> <span>Star</span> </a> <button type="button" data-theme-toggle aria-label="Toggle theme" title="Toggle theme" class="relative inline-flex h-8 w-8 items-center justify-center rounded-md border border-ink-200 bg-white text-ink-700 transition-colors hover:border-ink-300 hover:bg-ink-50 dark:border-ink-800 dark:bg-ink-950 dark:text-ink-200 dark:hover:border-ink-700 dark:hover:bg-ink-900/40"> <svg class="hidden h-4 w-4 dark:block" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <circle cx="12" cy="12" r="4"></circle> <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"></path> </svg> <svg class="block h-4 w-4 dark:hidden" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z"></path> </svg> </button> <script type="module">const c="grove-theme";function o(){try{const e=localStorage.getItem(c);return e==="light"||e==="dark"||e==="system"?e:"system"}catch{return"system"}}function s(){const e=["light","dark","system"],n=o(),r=e[(e.indexOf(n)+1)%e.length];try{localStorage.setItem(c,r)}catch{}return window.dispatchEvent(new CustomEvent("theme:set",{detail:r})),r}function t(e){e.title=`Theme: ${o()} (click to switch)`}document.querySelectorAll("[data-theme-toggle]").forEach(e=>{t(e),e.addEventListener("click",()=>{s(),t(e)}),e.addEventListener("mouseenter",()=>t(e)),e.addEventListener("focus",()=>t(e))});</script> </div> </div> </header> <script type="module">document.addEventListener("click",t=>{if(t.defaultPrevented||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.button!==0)return;const r=t.target.closest('a[href^="#"]');if(!r)return;const e=r.getAttribute("href");if(e.length<=1)return;const n=document.querySelector(e);n&&(t.preventDefault(),n.scrollIntoView({behavior:"smooth",block:"start"}),history.replaceState(null,"",e))});</script> <main> <div class="mx-auto grove-container px-5 sm:px-7" data-astro-cid-nj4gdmks> <article class="py-12 sm:py-16"> <span class="text-2xs font-medium uppercase tracking-wider text-ink-500 dark:text-ink-400">
|
|
43
|
-
Submit
|
|
44
|
-
</span> <h1 class="mt-1 text-[1.75rem] sm:text-[2rem] font-semibold tracking-tight text-ink-900 dark:text-ink-100 m-0">
|
|
45
|
-
Submit a project </h1> <p class="mt-4 max-w-[62ch] text-sm text-ink-700 dark:text-ink-200 m-0"> Grove Directory is a community knowledge site. Adding a new project is a two-step process — open a submission issue,
|
|
46
|
-
then open a pull request that adds a new YAML file under <code class="font-mono text-ink-900 dark:text-ink-100">data/records/</code>.
|
|
47
|
-
</p> <div class="mt-6 flex flex-wrap gap-2"> <a href="https://github.com/tortuvshin/grove/issues/new?template=record_submission.md" target="_blank" rel="noopener noreferrer" class="grove-btn grove-btn-primary">
|
|
48
|
-
Open a submission issue ↗
|
|
49
|
-
</a> <a href="https://github.com/tortuvshin/grove/blob/main/.github/ISSUE_TEMPLATE/record_submission.md" target="_blank" rel="noopener noreferrer" class="grove-btn grove-btn-outline">
|
|
50
|
-
See the issue template
|
|
51
|
-
</a> </div> <section class="mt-12 max-w-[68ch"> <h2 class="m-0 text-lg font-semibold tracking-tight text-ink-900 dark:text-ink-100">
|
|
52
|
-
Manual record (alternative to the issue form)
|
|
53
|
-
</h2> <p class="mt-2 text-sm text-ink-700 dark:text-ink-200 m-0">
|
|
54
|
-
Prefer to write a record by hand? Here's the minimum shape for a <code class="font-mono">project-directory</code> record.
|
|
55
|
-
The schema is validated automatically on every PR.
|
|
56
|
-
</p> <pre class="mt-4 overflow-x-auto rounded-md border border-ink-200 bg-ink-50 p-4 text-xs leading-relaxed text-ink-800 dark:border-ink-800 dark:bg-ink-900/60 dark:text-ink-200"><code>kind: project
|
|
57
|
-
slug: my-project
|
|
58
|
-
name: My Project
|
|
59
|
-
description: One-line description of what this project does
|
|
60
|
-
category: tools
|
|
61
|
-
tags:
|
|
62
|
-
- open-source
|
|
63
|
-
links:
|
|
64
|
-
github: https://github.com/owner/repo
|
|
65
|
-
website: https://example.com</code></pre> </section> <section class="mt-12 max-w-[68ch"> <h2 class="m-0 text-lg font-semibold tracking-tight text-ink-900 dark:text-ink-100">
|
|
66
|
-
What happens after you submit
|
|
67
|
-
</h2> <ol class="mt-3 m-0 flex list-decimal flex-col gap-2 pl-5 text-sm text-ink-700 dark:text-ink-200"> <li>A maintainer reviews the issue and tags it as <code class="font-mono">accepted</code> or <code class="font-mono">needs-info</code>.</li> <li>You open a PR with the new <code class="font-mono">data/records/<slug>.yml</code> file.</li> <li>CI runs <code class="font-mono">grove validate</code> and previews the site with your record.</li> <li>A maintainer merges. The next <code class="font-mono">grove build</code> deploys it.</li> </ol> </section> </article> </div> </main> <footer class="mt-16 border-t border-ink-200 bg-white text-ink-500 dark:border-ink-800 dark:bg-ink-950 dark:text-ink-400"> <div class="mx-auto grid max-w-wide grid-cols-2 gap-8 px-5 py-12 md:grid-cols-4 sm:px-7" style="max-width: var(--container-wide, 1400px);"> <div class="col-span-2 md:col-span-1"> <div class="mb-2 inline-flex items-center gap-2 text-[0.95rem] font-semibold text-ink-900 dark:text-ink-100"> <span aria-hidden="true" class="inline-block h-3.5 w-3.5 rounded bg-ink-900 dark:bg-ink-100"></span> <span>Grove Directory</span> </div> <p class="m-0 max-w-[36ch] text-[0.8125rem] leading-relaxed text-ink-500 dark:text-ink-400"> A curated, health-aware developer directory. </p> </div> <div> <h4 class="mb-3 text-2xs font-semibold uppercase tracking-wider text-ink-900 dark:text-ink-100"> Discover </h4> <ul class="m-0 flex list-none flex-col gap-2 p-0"> <li> <a href="https://github.com/tortuvshin/grove" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Source on GitHub </a> </li><li> <a href="https://github.com/tortuvshin/grove/releases" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Latest release </a> </li> </ul> </div> <div> <h4 class="mb-3 text-2xs font-semibold uppercase tracking-wider text-ink-900 dark:text-ink-100"> Contribute </h4> <ul class="m-0 flex list-none flex-col gap-2 p-0"> <li> <a href="https://github.com/tortuvshin/grove/blob/main/CONTRIBUTING.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Submit via GitHub </a> </li><li> <a href="https://github.com/tortuvshin/grove/issues" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Report an issue </a> </li><li> <a href="https://github.com/tortuvshin/grove/blob/main/CONTRIBUTING.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Contributing guide </a> </li> </ul> </div> <div> <h4 class="mb-3 text-2xs font-semibold uppercase tracking-wider text-ink-900 dark:text-ink-100"> Project </h4> <ul class="m-0 flex list-none flex-col gap-2 p-0"> <li> <a href="https://github.com/tortuvshin/grove/blob/main/README.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> README </a> </li><li> <a href="https://github.com/tortuvshin/grove/blob/main/CHANGELOG.md" class="text-sm transition-colors hover:text-ink-900 dark:hover:text-ink-100" target="_blank" rel="noopener noreferrer"> Changelog </a> </li> </ul> </div> </div> <div class="border-t border-ink-200 dark:border-ink-800"> <div class="mx-auto flex max-w-wide flex-wrap items-center gap-3 px-5 py-4 text-2xs text-ink-500 sm:px-7 dark:text-ink-400" style="max-width: var(--container-wide, 1400px);"> <span>© 2026 Grove Directory.</span> <span class="text-ink-300 dark:text-ink-700">·</span> <a href="https://github.com/tortuvshin/grove" target="_blank" rel="noopener noreferrer" class="transition-colors hover:text-ink-900 dark:hover:text-ink-100">
|
|
68
|
-
View source on GitHub
|
|
69
|
-
</a> </div> </div> </footer> </body> </html>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/bin/astro.mjs" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/astro@6.4.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_rollup@4.61.1_tsx@4.22.4_yaml@2.9.0/node_modules/astro/bin/astro.mjs" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/check/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/check/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/check/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/check/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/check/bin/astro-check.js" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/@astrojs+check@0.9.9_prettier@3.8.3_typescript@6.0.3/node_modules/@astrojs/check/bin/astro-check.js" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/packages/cli/dist/node_modules:/Users/turuu/Projects/Personal/grove/packages/cli/node_modules:/Users/turuu/Projects/Personal/grove/packages/node_modules:/Users/turuu/Projects/Personal/grove/node_modules:/Users/turuu/Projects/Personal/node_modules:/Users/turuu/Projects/node_modules:/Users/turuu/node_modules:/Users/node_modules:/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/packages/cli/dist/node_modules:/Users/turuu/Projects/Personal/grove/packages/cli/node_modules:/Users/turuu/Projects/Personal/grove/packages/node_modules:/Users/turuu/Projects/Personal/grove/node_modules:/Users/turuu/Projects/Personal/node_modules:/Users/turuu/Projects/node_modules:/Users/turuu/node_modules:/Users/node_modules:/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../cli/dist/index.js" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../cli/dist/index.js" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/jiti@2.7.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/jiti@2.7.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/jiti-cli.mjs" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/jiti@2.7.0/node_modules/jiti/lib/jiti-cli.mjs" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/prettier@3.8.3/node_modules/prettier/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/prettier@3.8.3/node_modules/prettier/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/prettier@3.8.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/prettier@3.8.3/node_modules/prettier/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/prettier@3.8.3/node_modules/prettier/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/prettier@3.8.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/prettier@3.8.3/node_modules/prettier/bin/prettier.cjs" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/prettier@3.8.3/node_modules/prettier/bin/prettier.cjs" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/dist/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/dist/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/dist/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/dist/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/rollup@4.61.1/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/dist/bin/rollup" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/rollup@4.61.1/node_modules/rollup/dist/bin/rollup" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/tsc" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/tsc" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/typescript@6.0.3/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/tsserver" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/bin/tsserver" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/dist/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/tsx@4.22.4/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/dist/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/tsx@4.22.4/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/dist/cli.mjs" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/tsx@4.22.4/node_modules/tsx/dist/cli.mjs" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules/vite/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules/vite/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules/vite/bin/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules/vite/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules/vite/bin/vite.js" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/vite@7.3.5_@types+node@25.9.2_jiti@2.7.0_lightningcss@1.32.0_tsx@4.22.4_yaml@2.9.0/node_modules/vite/bin/vite.js" "$@"
|
|
21
|
-
fi
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
-
|
|
4
|
-
case `uname` in
|
|
5
|
-
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
-
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
-
basedir=`cygpath -w "$basedir"`
|
|
8
|
-
fi
|
|
9
|
-
;;
|
|
10
|
-
esac
|
|
11
|
-
|
|
12
|
-
if [ -z "$NODE_PATH" ]; then
|
|
13
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/yaml@2.9.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules"
|
|
14
|
-
else
|
|
15
|
-
export NODE_PATH="/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/yaml@2.9.0/node_modules:/Users/turuu/Projects/Personal/grove/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
-
fi
|
|
17
|
-
if [ -x "$basedir/node" ]; then
|
|
18
|
-
exec "$basedir/node" "$basedir/../../../../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/bin.mjs" "$@"
|
|
19
|
-
else
|
|
20
|
-
exec node "$basedir/../../../../../../node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/bin.mjs" "$@"
|
|
21
|
-
fi
|