--- import Base from '../layouts/Base.astro'; import RecordCard from '../components/RecordCard.astro'; import StartNote from '../components/StartNote.astro'; import { SITE, TYPES, TYPE_KEYS, PILOT_TYPES } from '../site.config'; import { loadAll, counted, quarterOf } from '../lib/records'; const { recs, orgs } = await loadAll(); const live = counted(recs); const latest = live.slice(0, 6); const countOf = (t: string) => live.filter((r) => r.type === t).length; const otherTypes = TYPE_KEYS.filter((t) => !(PILOT_TYPES as readonly string[]).includes(t)); const now = new Date(); const year = now.getUTCFullYear(); const orgsWithRecords = orgs .filter((o) => live.some((r) => r.counterparty?.id === o.id)) .sort((a, b) => a.data.name.localeCompare(b.data.name)); const tallyData = live.map((r) => [r.iso, r.type]); const WORDS: Record = { launch: ['launch', 'launches'], cohort: ['cohort', 'cohorts'], funding: ['funding record', 'funding records'] }; const word = (t: string, n: number) => WORDS[t][n === 1 ? 0 : 1]; const pilotLabels = WORDS; const jsonld = { '@context': 'https://schema.org', '@type': 'Dataset', name: SITE.name, description: SITE.description, url: SITE.url, temporalCoverage: `${SITE.recordStart}/..`, spatialCoverage: { '@type': 'Place', name: 'Detroit, Michigan' }, isAccessibleForFree: true, publisher: { '@type': 'Organization', name: SITE.publisher, url: SITE.publisherUrl, founder: { '@type': 'Person', name: SITE.founder } }, distribution: { '@type': 'DataDownload', encodingFormat: 'application/json', contentUrl: `${SITE.url}/records.json` }, }; ---

Detroit’s innovation, on the record.

A public, machine-readable record of what Detroit founders build, so the innovation never gets too far from the hands that built it.

Browse by type

All records →

Also on the record {otherTypes.map((t) => {TYPES[t].plural} ({countOf(t)}))}

Latest on the record

See everything →
{latest.length ? (
{latest.map((r) => )}
) : (

The first records are being verified now. Check back soon.

)}

Newest first, by the date it happened. Nothing is featured or ranked.

This quarter so far

Q{quarterOf(now)} {year}

    {PILOT_TYPES.map((t) => { const n = live.filter((r) => r.type === t && r.year === year && r.quarter === quarterOf(now)).length; return
  • {n} {word(t, n)}
  • ; })}
See this quarter
{orgsWithRecords.length > 0 && (

Browse by organization

All organizations →

Programs, funders and hosts named in at least one record, A to Z.

)}