Skip to content

Generalized collections UI#1077

Draft
fhennig wants to merge 60 commits intogeneralized-collections-frontend-apifrom
generalized-collections-ui
Draft

Generalized collections UI#1077
fhennig wants to merge 60 commits intogeneralized-collections-frontend-apifrom
generalized-collections-ui

Conversation

@fhennig
Copy link
Contributor

@fhennig fhennig commented Mar 16, 2026

resolves #

Summary

  • src/backendApi/ — moved from src/components/subscriptions/backendApi/ to sit alongside
    src/lapis/ and src/covspectrum/; shared backend proxy logic extracted so collections and
    subscriptions routes share a single implementation
  • New Zod schemas in src/types/Collection.ts for response, request, and update types, following
    the same pattern as subscriptions
  • 5 new backend service methods: getCollections, getCollection, postCollection, putCollection,
    deleteCollection
  • New pages under /collections/[organism]/:
    • Hub page listing all organisms
    • Overview table (ID, name, description, variant count) with row links
    • Detail view (collection metadata + per-variant cards with type badge and field display)
    • Create form
    • Edit form (pre-populated from fetched collection, preserves variant IDs for update)
  • Shared CollectionForm component used by both create and edit, with a VariantEditor supporting
    both query-type (LAPIS filter expressions) and mutation-list-type variants

Screenshot

PR Checklist

  • All necessary documentation has been adapted.
  • The implemented feature is covered by an appropriate test.

@vercel
Copy link

vercel bot commented Mar 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dashboards Ready Ready Preview, Comment Mar 18, 2026 3:43pm

Request Review

fhennig and others added 13 commits March 18, 2026 11:58
Collections are unreleased, so we can change in-place with no migration
or backwards-compatibility concerns. Switches DB schema to bigserial,
ORM tables to LongIdTable, and all API/model/test types from String/UUID
to Long.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove backend/docker-compose.dev.yaml and update README to use the
root compose file's database service. Also align POSTGRES_DB name to
dashboards-backend-db across docker-compose.yml.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fhennig and others added 5 commits March 18, 2026 15:10
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
userId is injected by the backend proxy from the session, so there
is no need to pass it from the client.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The userId is added by the backend proxy, so callers don't need to supply it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@fhennig fhennig force-pushed the generalized-collections-frontend-api branch from 9e5ed16 to db7b941 Compare March 18, 2026 14:11
fhennig and others added 13 commits March 18, 2026 15:13
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Collections mega menu dropdown listing all organisms
- Use details[name] exclusive accordion to close sibling menus on open

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
GitHub returns profile.id as a number, but the backend stores ownedBy
as a string. Strict equality between the two always returned false.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Use contents <a> for clickable rows with proper cursor
- Row hover uses bg-base-300 (distinct from zebra bg-base-200)
- Left-align ID and variant count column headers
- Show organism label in page headline
- Replace text-base-content opacity modifiers with explicit gray colors
- Show #<id> prefix in detail view headline
- Replace Details card with inline organism/owner sentence

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fhennig and others added 3 commits March 18, 2026 15:56
… controls

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… to client:only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fhennig and others added 3 commits March 18, 2026 16:33
…textarea

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant