-
Notifications
You must be signed in to change notification settings - Fork 803
Expand file tree
/
Copy pathgrove.config.ts
More file actions
146 lines (134 loc) · 4.91 KB
/
Copy pathgrove.config.ts
File metadata and controls
146 lines (134 loc) · 4.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import { defineConfig } from "@grove-dev/core";
/** Open Apps is a Grove-powered directory of production open-source apps. */
export default defineConfig({
blueprint: "project-directory",
site: {
name: "Open Apps",
tagline: "Discover real open-source apps and the stacks behind them.",
description:
"A searchable directory of real open-source applications, organized by stack, category, platform, activity, and maturity.",
url: "https://openappscout.com",
repoUrl: "https://github.com/tortuvshin/open-apps",
// Both files carry their own `prefers-color-scheme` swap: an SVG
// served through `<img src>` is a separate document, so page CSS
// cannot repaint it. That is correct for the favicon (browser
// chrome follows the OS) and a known tradeoff for the header mark.
logo: "/logo.svg",
favicon: "/favicon.svg",
},
analytics: {
googleAnalyticsId: "G-MB9GWW1LVX",
},
nav: [
{ label: "Home", href: "/" },
{ label: "Browse", href: "/apps" },
{ label: "Collections", href: "/collections" },
{ label: "Community", href: "/contributors" },
{ label: "About", href: "/about" },
],
footer: {
columns: [
{
heading: "Discover",
items: [
{ label: "Browse apps", href: "/apps" },
{ label: "Contributors", href: "/contributors" },
],
},
{
heading: "Contribute",
items: [
{ label: "Submit an app", href: "/submit" },
{
label: "Report an issue",
href: "https://github.com/tortuvshin/open-apps/issues",
external: true,
},
],
},
{
heading: "Project",
items: [
{
label: "Source on GitHub",
href: "https://github.com/tortuvshin/open-apps",
external: true,
},
{ label: "About", href: "/about" },
],
},
],
copyright: "Open Apps contributors",
license: "Code is MIT licensed. The legacy seed collection remains CC0.",
},
submission: {
eyebrow: "Open app submission",
title: "Add an open-source app",
description:
"Generate a Grove record from a public GitHub repository, review the app taxonomy, then open a pull request.",
good: [
"A usable application that people can install or run",
"A public repository with a clear license and enough documentation to evaluate",
"A category, primary stack, and platforms chosen from this directory's taxonomy",
],
avoid: [
"Closed-source products or marketing-only landing pages",
"Libraries, tutorials, snippets, or duplicate entries",
"Abandoned experiments without documentation or a verifiable license",
],
},
// The contributors grid is a community wall, not a leaderboard —
// per-user contribution counts are noisy here, so only the avatar
// and handle are shown.
contributors: { showContributionCount: true },
browse: {
facets: ["category", "stack", "platform", "license", "tags"],
},
routes: { directory: "apps", item: "app" },
labels: { singular: "app", plural: "apps" },
integrations: { github: true },
// No `primaryColor`: buttons and accents fall through to
// `--grove-foreground`, the neutral treatment the design system
// ships. Set one only to deliberately brand away from that.
theme: {
radius: "soft",
density: "comfortable",
containerWidth: "72rem",
},
audit: {
baseUrl: "http://127.0.0.1:4321",
pages: [
{ path: "/", type: "home", label: "Homepage" },
{ path: "/apps/", type: "directory", label: "Directory index" },
{
path: "/collections/top-flutter-apps/",
type: "collection",
label: "Top Flutter Apps collection",
},
{ path: "/apps/immich/", type: "record", label: "Record detail" },
{ path: "/about/", type: "content", label: "About page" },
{ path: "/empty/", type: "empty", label: "Empty state" },
{ path: "/this-page-does-not-exist/", type: "404", label: "404 page" },
],
},
readme: {
title: "Open Apps",
tagline:
"A hand-picked directory of real open-source applications — apps worth running, studying, and extending.",
url: "https://openappscout.com",
browseLabel: "Browse the directory →",
intro: [
"## Why this list",
"",
"GitHub search works when you already know what you are looking for.",
"This list is for the other case: discovering **real, production-grade",
"apps** — not tutorials, boilerplates, or package-only libraries — and",
"understanding what each one is worth your time for.",
"",
"Every entry is a human-curated YAML record in `data/records/`, kept",
"fresh by weekly GitHub metadata syncs. To add an app, use the",
"[submission form](https://openappscout.com/submit) or open a pull",
"request — see [CONTRIBUTING.md](CONTRIBUTING.md).",
].join("\n"),
},
});