Skip to content

Commit d19ff70

Browse files
committed
feat(work): classify repos and fix sort order for better portfolio presentation
The Work page showed 42 forks above all Flexion-originated work because the tier sort ranked as-is (forks) above unreviewed (own repos). Fix the sort order so Flexion's own work appears first, populate overrides.yml with classifications for all 73 repos, and make the Health page show all repos (including hidden) for stewardship accountability. - Swap tier sort ranks: unreviewed (1) before as-is (2) - Mark 16 repos as tier: active (Flexion-originated + significant forks) - Categorize 16 unreviewed repos (tool, product, prototype) - Hide 17 dead repos (stale forks from 2012-2015, dead non-forks) - Feature devops-deployment-metrics and document-extractor - Health page now shows all 73 repos regardless of hidden status - Update intro text to frame the portfolio positively
1 parent d25a960 commit d19ff70

4 files changed

Lines changed: 181 additions & 14 deletions

File tree

data/overrides.yml

Lines changed: 167 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Hand-authored overrides keyed by repo name.
22
# See docs/catalog.md for supported fields.
33

4+
# ─── Active Flexion-originated projects ───────────────────────────────────────
5+
46
forms:
57
tier: active
68
category: product
@@ -11,12 +13,175 @@ forms-lab:
1113
category: product
1214
featured: true
1315

14-
document-extractor:
16+
flexion-notify:
1517
tier: active
1618
category: product
1719
featured: true
1820

19-
flexion-notify:
21+
devops-deployment-metrics:
22+
tier: active
23+
category: tool
24+
featured: true
25+
26+
flexion.github.io:
27+
tier: active
28+
category: tool
29+
30+
claude-domestique:
31+
tier: active
32+
category: tool
33+
34+
aws-codebuild-runner-project-tf-module:
35+
tier: active
36+
category: tool
37+
38+
odoo-ai-assistant:
39+
tier: active
40+
category: tool
41+
42+
flexcoins:
43+
tier: active
44+
category: product
45+
46+
# ─── Active forks (significant project contributions) ─────────────────────────
47+
48+
ef-cms:
49+
tier: active
50+
51+
ef-cms-ustc:
52+
tier: active
53+
54+
notifications-admin:
55+
tier: active
56+
57+
notifications-api:
58+
tier: active
59+
60+
document-extractor:
2061
tier: active
2162
category: product
2263
featured: true
64+
65+
uswds:
66+
tier: active
67+
68+
uswds-site:
69+
tier: active
70+
71+
uswds-elements:
72+
tier: active
73+
74+
# ─── Active prototypes (bid/design work) ──────────────────────────────────────
75+
76+
Destin-Municipal-Prototype:
77+
tier: active
78+
category: prototype
79+
80+
Destin-Design-Repo:
81+
tier: active
82+
category: prototype
83+
84+
# ─── Categorized (unreviewed tier, but with a useful category) ────────────────
85+
86+
bash_shell_script_starter:
87+
category: tool
88+
89+
flexion-sig-security:
90+
category: tool
91+
92+
flexion-sig-security-tf-modules:
93+
category: tool
94+
95+
msab-arts-locator:
96+
category: product
97+
98+
tech-radar-generator:
99+
category: tool
100+
101+
check-contributor-allowlist-action:
102+
category: tool
103+
104+
strapi-provider-upload-aws-s3-auth:
105+
category: tool
106+
107+
jubilant-computing-machine:
108+
category: tool
109+
110+
10x-uswds-forms:
111+
category: prototype
112+
113+
10x-uswds-dataviz:
114+
category: prototype
115+
116+
epa-prototype:
117+
category: prototype
118+
119+
flexion-ads-18f-response:
120+
category: prototype
121+
122+
flexion-ads-18f-save-my-picnic:
123+
category: prototype
124+
125+
qpp-design-exercise:
126+
category: prototype
127+
128+
Planet-Express:
129+
category: tool
130+
131+
asset-manager:
132+
category: prototype
133+
134+
# ─── Hidden (no portfolio value, visible only on Health page) ─────────────────
135+
136+
# Dead forks (2012–2015, no stars, no meaningful contribution)
137+
node-js-crate:
138+
hidden: true
139+
140+
coffeescript-koans:
141+
hidden: true
142+
143+
javascript-koans:
144+
hidden: true
145+
146+
pallet:
147+
hidden: true
148+
149+
django-axes:
150+
hidden: true
151+
152+
django-ckeditor:
153+
hidden: true
154+
155+
custom-post-type-ui:
156+
hidden: true
157+
158+
django:
159+
hidden: true
160+
161+
docker-karma-protractor:
162+
hidden: true
163+
164+
hubot-google-hangouts:
165+
hidden: true
166+
167+
lookml:
168+
hidden: true
169+
170+
# Dead non-forks (no README, no license, no description, or clearly abandoned)
171+
pig-latin-cli:
172+
hidden: true
173+
174+
mini-project-1:
175+
hidden: true
176+
177+
cdk-playground:
178+
hidden: true
179+
180+
mob-timer:
181+
hidden: true
182+
183+
uswds-react:
184+
hidden: true
185+
186+
radar:
187+
hidden: true

src/pages/work/health.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,14 @@ export function Health({
3737
config: SiteConfig
3838
showPerRepo: boolean
3939
}) {
40-
const visible = catalog.filter((e) => !e.hidden)
41-
const evaluations = visible.map((e) => ({ entry: e, evaluation: evaluateRepo(e, now) }))
40+
const evaluations = catalog.map((e) => ({ entry: e, evaluation: evaluateRepo(e, now) }))
4241
const passing = evaluations.filter(({ evaluation }) => evaluation.overallPass).length
4342

4443
return (
4544
<Layout title="Repo health" config={config}>
4645
<h1>Repo health</h1>
4746
<p class="health-summary">
48-
<strong>{passing}</strong> of <strong>{visible.length}</strong> repos meet the documented standards.
47+
<strong>{passing}</strong> of <strong>{catalog.length}</strong> repos meet the documented standards.
4948
</p>
5049

5150
{showPerRepo ? (

src/pages/work/index.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ export function WorkIndex({
2626
<Layout title="Work" config={config}>
2727
<h1>Our work</h1>
2828
<p class="work-index__intro">
29-
Every public repository Flexion maintains. Active projects are stewarded; as-is
30-
projects are available without promised maintenance; archived projects are no
31-
longer updated.
29+
Flexion's public portfolio — tools we've built, prototypes we've shipped, and
30+
open-source projects we actively contribute to. Use the filters to explore by
31+
tier or category.
3232
</p>
3333
<catalog-filter>
3434
<form class="catalog-filter">
@@ -37,9 +37,9 @@ export function WorkIndex({
3737
<Select name="tier" label="Tier">
3838
<option value="">All</option>
3939
<option value="active">Active</option>
40+
<option value="unreviewed">Unreviewed</option>
4041
<option value="as-is">As-is</option>
4142
<option value="archived">Archived</option>
42-
<option value="unreviewed">Unreviewed</option>
4343
</Select>
4444
<Select name="category" label="Category">
4545
<option value="">All</option>
@@ -80,8 +80,8 @@ function defaultSort(a: CatalogEntry, b: CatalogEntry): number {
8080
if (a.featured !== b.featured) return a.featured ? -1 : 1
8181
const tierRank: Record<CatalogEntry['tier'], number> = {
8282
active: 0,
83-
'as-is': 1,
84-
unreviewed: 2,
83+
unreviewed: 1,
84+
'as-is': 2,
8585
archived: 3,
8686
}
8787
if (tierRank[a.tier] !== tierRank[b.tier]) return tierRank[a.tier] - tierRank[b.tier]

tests/views/health.test.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@ describe('Health', () => {
1313
expect(html).toMatch(/of\s+<strong>\d+<\/strong>\s+repos meet the documented standards/)
1414
})
1515

16-
test('renders a table with one row per non-hidden repo', async () => {
16+
test('renders a table with one row per repo including hidden', async () => {
17+
const catalog = fixtureCatalog.map((e, i) =>
18+
i === 0 ? { ...e, hidden: true } : e,
19+
)
1720
const html = await renderToHtml(
18-
<Health catalog={fixtureCatalog} now={fixtureNow} config={config} showPerRepo={true} />,
21+
<Health catalog={catalog} now={fixtureNow} config={config} showPerRepo={true} />,
1922
)
20-
for (const entry of fixtureCatalog.filter((e) => !e.hidden)) {
23+
for (const entry of catalog) {
2124
expect(html).toContain(`data-repo="${entry.name}"`)
2225
}
2326
})

0 commit comments

Comments
 (0)