Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 167 additions & 2 deletions data/overrides.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Hand-authored overrides keyed by repo name.
# See docs/catalog.md for supported fields.

# ─── Active Flexion-originated projects ───────────────────────────────────────

forms:
tier: active
category: product
Expand All @@ -11,12 +13,175 @@ forms-lab:
category: product
featured: true

document-extractor:
flexion-notify:
tier: active
category: product
featured: true

flexion-notify:
devops-deployment-metrics:
tier: active
category: tool
featured: true

flexion.github.io:
tier: active
category: tool

claude-domestique:
tier: active
category: tool

aws-codebuild-runner-project-tf-module:
tier: active
category: tool

odoo-ai-assistant:
tier: active
category: tool

flexcoins:
tier: active
category: product

# ─── Active forks (significant project contributions) ─────────────────────────

ef-cms:
tier: active

ef-cms-ustc:
tier: active

notifications-admin:
tier: active

notifications-api:
tier: active

document-extractor:
tier: active
category: product
featured: true

uswds:
tier: active

uswds-site:
tier: active

uswds-elements:
tier: active

# ─── Active prototypes (bid/design work) ──────────────────────────────────────

Destin-Municipal-Prototype:
tier: active
category: prototype

Destin-Design-Repo:
tier: active
category: prototype

# ─── Categorized (unreviewed tier, but with a useful category) ────────────────

bash_shell_script_starter:
category: tool

flexion-sig-security:
category: tool

flexion-sig-security-tf-modules:
category: tool

msab-arts-locator:
category: product

tech-radar-generator:
category: tool

check-contributor-allowlist-action:
category: tool

strapi-provider-upload-aws-s3-auth:
category: tool

jubilant-computing-machine:
category: tool

10x-uswds-forms:
category: prototype

10x-uswds-dataviz:
category: prototype

epa-prototype:
category: prototype

flexion-ads-18f-response:
category: prototype

flexion-ads-18f-save-my-picnic:
category: prototype

qpp-design-exercise:
category: prototype

Planet-Express:
category: tool

asset-manager:
category: prototype

# ─── Hidden (no portfolio value, visible only on Health page) ─────────────────

# Dead forks (2012–2015, no stars, no meaningful contribution)
node-js-crate:
hidden: true

coffeescript-koans:
hidden: true

javascript-koans:
hidden: true

pallet:
hidden: true

django-axes:
hidden: true

django-ckeditor:
hidden: true

custom-post-type-ui:
hidden: true

django:
hidden: true

docker-karma-protractor:
hidden: true

hubot-google-hangouts:
hidden: true

lookml:
hidden: true

# Dead non-forks (no README, no license, no description, or clearly abandoned)
pig-latin-cli:
hidden: true

mini-project-1:
hidden: true

cdk-playground:
hidden: true

mob-timer:
hidden: true

uswds-react:
hidden: true

radar:
hidden: true
5 changes: 2 additions & 3 deletions src/pages/work/health.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,14 @@ export function Health({
config: SiteConfig
showPerRepo: boolean
}) {
const visible = catalog.filter((e) => !e.hidden)
const evaluations = visible.map((e) => ({ entry: e, evaluation: evaluateRepo(e, now) }))
const evaluations = catalog.map((e) => ({ entry: e, evaluation: evaluateRepo(e, now) }))
const passing = evaluations.filter(({ evaluation }) => evaluation.overallPass).length

return (
<Layout title="Repo health" config={config}>
<h1>Repo health</h1>
<p class="health-summary">
<strong>{passing}</strong> of <strong>{visible.length}</strong> repos meet the documented standards.
<strong>{passing}</strong> of <strong>{catalog.length}</strong> repos meet the documented standards.
</p>

{showPerRepo ? (
Expand Down
15 changes: 9 additions & 6 deletions src/pages/work/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Layout } from '../../design/common/layout'
import { RepoCard } from '../../design/components/repo-card'
import { Select } from '../../design/components/select'
import type { Catalog, CatalogEntry } from '../../catalog/types'
import { url } from '../../build/config'
import type { SiteConfig } from '../../build/config'

declare module 'hono/jsx' {
Expand All @@ -26,9 +27,11 @@ export function WorkIndex({
<Layout title="Work" config={config}>
<h1>Our work</h1>
<p class="work-index__intro">
Every public repository Flexion maintains. Active projects are stewarded; as-is
projects are available without promised maintenance; archived projects are no
longer updated.
Flexion's public portfolio — tools we've built, prototypes we've shipped, and
open-source projects we actively contribute to. Use the filters to explore by
tier or category. See our{' '}
<a href={url('/work/health/', config.basePath)}>stewardship scorecard</a> for
how each repo measures up.
</p>
<catalog-filter>
<form class="catalog-filter">
Expand All @@ -37,9 +40,9 @@ export function WorkIndex({
<Select name="tier" label="Tier">
<option value="">All</option>
<option value="active">Active</option>
<option value="unreviewed">Unreviewed</option>
<option value="as-is">As-is</option>
<option value="archived">Archived</option>
<option value="unreviewed">Unreviewed</option>
</Select>
<Select name="category" label="Category">
<option value="">All</option>
Expand Down Expand Up @@ -80,8 +83,8 @@ function defaultSort(a: CatalogEntry, b: CatalogEntry): number {
if (a.featured !== b.featured) return a.featured ? -1 : 1
const tierRank: Record<CatalogEntry['tier'], number> = {
active: 0,
'as-is': 1,
unreviewed: 2,
unreviewed: 1,
'as-is': 2,
archived: 3,
}
if (tierRank[a.tier] !== tierRank[b.tier]) return tierRank[a.tier] - tierRank[b.tier]
Expand Down
9 changes: 6 additions & 3 deletions tests/views/health.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@ describe('Health', () => {
expect(html).toMatch(/of\s+<strong>\d+<\/strong>\s+repos meet the documented standards/)
})

test('renders a table with one row per non-hidden repo', async () => {
test('renders a table with one row per repo including hidden', async () => {
const catalog = fixtureCatalog.map((e, i) =>
i === 0 ? { ...e, hidden: true } : e,
)
const html = await renderToHtml(
<Health catalog={fixtureCatalog} now={fixtureNow} config={config} showPerRepo={true} />,
<Health catalog={catalog} now={fixtureNow} config={config} showPerRepo={true} />,
)
for (const entry of fixtureCatalog.filter((e) => !e.hidden)) {
for (const entry of catalog) {
expect(html).toContain(`data-repo="${entry.name}"`)
}
})
Expand Down
Loading