Skip to content

Commit 45971a5

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 f85cb00 commit 45971a5

4 files changed

Lines changed: 184 additions & 12 deletions

File tree

data/overrides.yml

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,172 @@
11
# Hand-authored overrides keyed by repo name.
22
# See docs/catalog.md for supported fields.
3+
4+
# ─── Active Flexion-originated projects ───────────────────────────────────────
5+
6+
devops-deployment-metrics:
7+
tier: active
8+
category: tool
9+
featured: true
10+
11+
flexion.github.io:
12+
tier: active
13+
category: tool
14+
15+
claude-domestique:
16+
tier: active
17+
category: tool
18+
19+
aws-codebuild-runner-project-tf-module:
20+
tier: active
21+
category: tool
22+
23+
odoo-ai-assistant:
24+
tier: active
25+
category: tool
26+
27+
flexcoins:
28+
tier: active
29+
category: product
30+
31+
# ─── Active forks (significant project contributions) ─────────────────────────
32+
33+
ef-cms:
34+
tier: active
35+
36+
ef-cms-ustc:
37+
tier: active
38+
39+
notifications-admin:
40+
tier: active
41+
42+
notifications-api:
43+
tier: active
44+
45+
document-extractor:
46+
tier: active
47+
category: product
48+
featured: true
49+
50+
uswds:
51+
tier: active
52+
53+
uswds-site:
54+
tier: active
55+
56+
uswds-elements:
57+
tier: active
58+
59+
# ─── Active prototypes (bid/design work) ──────────────────────────────────────
60+
61+
Destin-Municipal-Prototype:
62+
tier: active
63+
category: prototype
64+
65+
Destin-Design-Repo:
66+
tier: active
67+
category: prototype
68+
69+
# ─── Categorized (unreviewed tier, but with a useful category) ────────────────
70+
71+
bash_shell_script_starter:
72+
category: tool
73+
74+
flexion-sig-security:
75+
category: tool
76+
77+
flexion-sig-security-tf-modules:
78+
category: tool
79+
80+
msab-arts-locator:
81+
category: product
82+
83+
tech-radar-generator:
84+
category: tool
85+
86+
check-contributor-allowlist-action:
87+
category: tool
88+
89+
strapi-provider-upload-aws-s3-auth:
90+
category: tool
91+
92+
jubilant-computing-machine:
93+
category: tool
94+
95+
10x-uswds-forms:
96+
category: prototype
97+
98+
10x-uswds-dataviz:
99+
category: prototype
100+
101+
epa-prototype:
102+
category: prototype
103+
104+
flexion-ads-18f-response:
105+
category: prototype
106+
107+
flexion-ads-18f-save-my-picnic:
108+
category: prototype
109+
110+
qpp-design-exercise:
111+
category: prototype
112+
113+
Planet-Express:
114+
category: tool
115+
116+
asset-manager:
117+
category: prototype
118+
119+
# ─── Hidden (no portfolio value, visible only on Health page) ─────────────────
120+
121+
# Dead forks (2012–2015, no stars, no meaningful contribution)
122+
node-js-crate:
123+
hidden: true
124+
125+
coffeescript-koans:
126+
hidden: true
127+
128+
javascript-koans:
129+
hidden: true
130+
131+
pallet:
132+
hidden: true
133+
134+
django-axes:
135+
hidden: true
136+
137+
django-ckeditor:
138+
hidden: true
139+
140+
custom-post-type-ui:
141+
hidden: true
142+
143+
django:
144+
hidden: true
145+
146+
docker-karma-protractor:
147+
hidden: true
148+
149+
hubot-google-hangouts:
150+
hidden: true
151+
152+
lookml:
153+
hidden: true
154+
155+
# Dead non-forks (no README, no license, no description, or clearly abandoned)
156+
pig-latin-cli:
157+
hidden: true
158+
159+
mini-project-1:
160+
hidden: true
161+
162+
cdk-playground:
163+
hidden: true
164+
165+
mob-timer:
166+
hidden: true
167+
168+
uswds-react:
169+
hidden: true
170+
171+
radar:
172+
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>
@@ -68,8 +68,8 @@ function defaultSort(a: CatalogEntry, b: CatalogEntry): number {
6868
if (a.featured !== b.featured) return a.featured ? -1 : 1
6969
const tierRank: Record<CatalogEntry['tier'], number> = {
7070
active: 0,
71-
'as-is': 1,
72-
unreviewed: 2,
71+
unreviewed: 1,
72+
'as-is': 2,
7373
archived: 3,
7474
}
7575
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)