ANILARDIC

the filter below is a React island (client:visible) — search · lifecycle · type · tag chips drive a live filtered view of the same Zod-validated entities. URL state is mirrored to ?q=&lc=&tp=&tag= for share-links.

Each entity in src/content/projects/*.md validates against this Zod schema in src/content/config.ts:

apiVersion: 'backstage.io/v1alpha1' (literal)
kind:       'Component'              (literal)
metadata: {
  name: /^[a-z0-9-]+$/,
  title, description: string,
  tags: string[],
  annotations: Record<string,string>?
}
spec: {
  type:       'service'|'website'|'library'|'documentation',
  lifecycle:  'production'|'experimental'|'deprecated',
  owner:      string,
  system:     string?,
  dependsOn:  string[]?,
  providesApis: string[]?,
  links: { url, title, kind }[]?
}
order: number?

← back to /