← Back to devlog

2026-07-04 — v17 competitor-grounded design research

This entry is intentionally docs-only. The app already has real depth — parse/render, zoom/pan, reverse-complement, trimming, search, metadata, multi-trace workspace, mixed-base calling, annotations, editable bases with undo/redo, FASTQ/QUAL export, a quality track, and a keyboard base inspector — but today that power is spread across a long toolbar and a mostly linear stack. The goal here is to study how serious trace tools package that power, then make concrete layout, interaction, and design-system decisions for the next implementation wave without losing a single existing capability.

Research method and current-product baseline

I used official product pages, vendor help centers, and official tutorials wherever I could. For older tools with sparse documentation, I used the most direct product or training pages I could verify. I also cross-checked the current sanger-viewer feature inventory against the live repository controls, README, and devlog history so the proposal below maps every current feature into the new information architecture instead of hand-waving about a redesign.

Competitor landscape at a glance

Tool Surface What it gets right What I would not copy
Chromas Desktop (Windows) Fast single-trace focus, obvious edit/export verbs, strong batch conversion story. Menu-bar heaviness, little progressive disclosure, no modern accessibility/dark-mode story.
FinchTV Desktop (Windows/macOS/Linux distribution) Very clear chromatogram-first reading experience with quality bars and simple zoom controls. Single-file mental model, dated density, limited annotation/export ecosystem.
SnapGene Desktop + limited viewer/web sharing story Excellent contextual layering: trace, info, alignment, metadata, and edit flows feel related. Feature sprawl can still feel busy; a lot of power lives behind product-specific modes.
UGENE Desktop Composable suite architecture, non-destructive edit model, integrated annotation tooling. Heavy MDI-style density; novice cognitive load is high.
Geneious Prime Desktop + cloud workspace adjacencies Best balance of clean visual hierarchy, bulk workflows, contigs, and edit/review loops. Large surface area assumes a broad bioinformatics workspace, not a tight focused tool.
Benchling Web Browser-native collaboration, alignments anchored to sequence records, annotations as first-class objects. Heavy platform framing can bury the immediate trace-reading task.

Per-competitor study

Chromas — the classic single-trace workbench

Surface: desktop, Windows only. Technelysium’s official product page describes Chromas as a free trace viewer for simple DNA sequencing projects that do not require assembly of multiple sequences.

Takeaway for sanger-viewer: keep the “single trace first” sharpness. Do not force the user into a project shell before they can read peaks. But do not copy the flat, ungrouped command exposure.

Sources: Chromas product page, version history.

FinchTV — trace readability with very little ceremony

Surface: desktop. The current distribution page is on Digital World Biology, which hosts Mac and Windows downloads; other ecosystem references document Linux packaging as well.

Takeaway for sanger-viewer: the quality signal belongs in the main reading flow, not buried in metadata. FinchTV validates the current direction of a dedicated quality track and suggests that “fit overview + focused zoom” should become a first-class navigation pattern.

Sources: FinchTV distribution page, CHG training guide, SBGrid listing.

SnapGene — strong contextual layering around the trace

Surface: desktop software with a free Viewer and documentation around trace viewing/editing/alignment. Official references include the SnapGene product site and support articles for viewing, editing, and aligning Sanger traces.

Takeaway for sanger-viewer: copy the principle, not the product shape: keep a clean default trace view, but make inspector, metadata, export, and compare surfaces feel like related parts of one document rather than separate afterthoughts.

Sources: SnapGene homepage, View a Sanger Trace File, Edit a Sanger Trace File, Align Sanger Reads to a Reference Sequence.

UGENE — integrated suite power, higher cognitive load

Surface: desktop, cross-platform. The Chromatogram Viewer docs and the Sequence View quick-start are especially useful here.

Takeaway for sanger-viewer: borrow UGENE’s non-destructive edit framing and overview/detail synchronization, but avoid suite-level clutter. A focused trace tool should not require project/task/log scaffolding on the default screen.

Sources: Chromatogram Viewer, export docs, view two chromatograms simultaneously, Sequence View quick-start.

Geneious Prime — the cleanest “power without panic” reference

Surface: desktop, with a broader workspace and cloud-adjacent data model. Official references include Sanger Sequence Analysis, Assembling Chromatograms, Getting Started, and Import/Export.

Takeaway for sanger-viewer: this is the closest model for the redesign: a compact browser-like shell, a central scientific canvas, contextual right-side controls, and progressive reveal of advanced analysis instead of a giant always-on toolbar.

Sources: Sanger Sequence Analysis, Assembling Chromatograms tutorial, Getting Started, Import/Export and supported formats.

Benchling — the browser-native record system

Surface: web. The relevant official references are Benchling’s DNA/RNA sequence overview and alignment workflow docs, both of which explicitly reference sequence record workflows and accepted AB1 alignment input.

Takeaway for sanger-viewer: keep the browser-native strengths. The app should feel like a serious web tool, not a desktop app awkwardly transplanted into a canvas. That means strong keyboard coverage, responsive layouts, URL-safe static publishing, and shareable outputs that do not depend on a backend.

Sources: DNA/RNA sequence overview, How to create alignments.

Synthesis: the patterns worth keeping

  1. Trace-first default: Chromas and FinchTV are right that the first screen must answer the biological question immediately.
  2. Contextual side panels beat giant toolbars: SnapGene and Geneious make complex state easier to manage by grouping it near the content it affects.
  3. Overview + detail is not optional: FinchTV and UGENE both reinforce that users need a global read before diving into single bases.
  4. Non-destructive edits need to feel trustworthy: UGENE’s derivative edit model and SnapGene’s explicit save semantics are great reliability signals.
  5. Annotations and comparisons should be first-class, not “misc”: Geneious and Benchling both show that trace review becomes more useful when tied to context.
  6. Design polish changes usability: Geneious and newer SnapGene material simply feel less intimidating because the hierarchy is better.

Concrete proposal for sanger-viewer

(a) Target information architecture and layout

Recommendation: turn the current long, flat command bar into a four-zone workbench: global workspace, trace actions, central analysis canvas, and contextual side rail. The default screen should still let a user load a trace and start reading in seconds.

Desktop / wide layout

┌──────────────────────────────────────────────────────────────────────────────┐
│ Global bar: logo | open | sample | workspace tabs | theme | help            │
├──────────────────────────────────────────────────────────────────────────────┤
│ Primary trace bar: Zoom  Fit  Strand  Find  Export ▼  Compare ▼             │
│ Secondary mode bar: Review | Edit | Annotate | Compare | Export             │
├───────────────────────────────┬──────────────────────────────────────────────┤
│ Context rail (right, 320px)   │ Main analysis stage                          │
│ ─ Inspect tab                 │ ┌──────────────────────────────────────────┐ │
│   base inspector              │ │ Annotation lane                           │ │
│   exact peaks / quality       │ ├──────────────────────────────────────────┤ │
│ ─ Trace tab                   │ │ Chromatogram canvas                       │ │
│   trim / mixed-base / strand  │ ├──────────────────────────────────────────┤ │
│ ─ Metadata tab                │ │ Quality track                             │ │
│   sample / run / instrument   │ ├──────────────────────────────────────────┤ │
│ ─ Export tab                  │ │ Sequence strip + selection + search hits  │ │
│   FASTA PNG SVG FASTQ QUAL    │ └──────────────────────────────────────────┘ │
│                               │ footer: viewport readout | match count      │
├───────────────────────────────┴──────────────────────────────────────────────┤
│ Optional compare drawer: extra traces, align-to-reference, SVG/report tools  │
└──────────────────────────────────────────────────────────────────────────────┘
Narrow / tablet layout

┌──────────────────────────────────────────────┐
│ Global bar: open | tabs | more               │
├──────────────────────────────────────────────┤
│ Main stage: annotation lane                  │
│             chromatogram                     │
│             quality track                    │
│             sequence strip                   │
├──────────────────────────────────────────────┤
│ Sticky action row: Zoom  Fit  Find  Export   │
├──────────────────────────────────────────────┤
│ Bottom sheet tabs: Inspect | Trace | Meta    │
│ (collapsed by default, swipe or keyboard)    │
└──────────────────────────────────────────────┘
Zone Purpose Why this is the right move
Global bar Loading, workspace tabs, app identity, theme/help Separates “file/workspace” from “operate on this trace,” reducing command soup.
Primary trace bar High-frequency actions only: zoom, fit, strand, find, export, compare Matches Chromas/FinchTV speed while staying calmer than the current all-in-one toolbar.
Main analysis stage Annotation lane, chromatogram, quality track, sequence strip, readout Keeps the core scientific read path vertically stacked and synchronized.
Context rail / bottom sheet Inspector, metadata, edit settings, exports, advanced compare controls Progressively reveals complexity only when it is relevant.
Compare drawer Multi-trace, alignment, report/export tasks Prevents complex workflows from crowding the base single-trace experience.

(b) Interaction and keyboard model

The keyboard model should be opinionated and memorable. The current keyboard support is good in pockets; the redesign should make it systemic.

Shortcut Action Notes
/Focus FindWeb-native fast path; Benchling/Geneious-style discoverability win.
+ / -Zoom in/outAlways active when the viewer has focus.
0Fit whole traceCritical orientation reset, inspired by FinchTV-style overview needs.
Shift + wheel / pinchPrecision zoomKeep pointer interaction direct for expert users.
/ Pan viewportSmall pan step.
Shift + / Jump larger pan stepFor long traces.
RToggle reverse complementFast strand flip without mousing through the rail.
TToggle Full / Trimmed viewPrimary trim mode switch.
MFocus mixed-base threshold controlAdvanced, but still keyboard reachable.
N / Shift + NNext / previous search hitKeep search navigation off the pointer path.
Enter / SpaceOpen base inspector on focused basePreserve today’s inspector behavior.
EEdit focused basePromote base editing to a clear, teachable action.
EscClose inspector/sheet/dialogOne close rule everywhere.
Ctrl + ZUndo editPreserve current behavior.
Ctrl + Shift + ZRedo editPreserve current behavior.
?Open shortcuts cheat sheetImportant for discoverability and a11y.

(c) Design-system specification

The repository already has useful token DNA in src/style.css. The next wave should consolidate those into a named UI system and apply them consistently across the app.

Token group Proposal Decision
Spacing 4, 8, 12, 16, 24, 32, 40 px Keep the existing 4 px grid, but use it intentionally: 8 for inline gaps, 16 for card padding, 24 for section rhythm, 32+ only for page-level separation.
Type scale 12 / 14 / 16 / 18 / 20 / 24 px Use 14 px for tool chrome, 16 px for body/UI text, 12 px only for metadata labels, and monospace strictly for coordinates/base strings.
Radius 4 / 8 / 12 px Cards and rails get 12 px, controls 8 px, chips 9999 px only where they read as pills.
Elevation 0 / 1 / 2 Default app surfaces stay flat; inspector, menus, and sheets get subtle elevation only when layered above the trace.
Base colors A / C / G / T locked and documented Keep chromatogram channel colors stable across light and dark modes; never recolor semantic bases by theme.
Semantic token Light Dark Use
--bg-app#f8fafc#0f172aPage background
--bg-surface#ffffff#1e293bCards, rails, sheets
--bg-subtle#f1f5f9#334155Track lanes, grouped toolbar areas
--border-default#e2e8f0#334155Panel boundaries
--text-primary#0f172a#f1f5f9Core copy
--text-muted#64748b#94a3b8Secondary metadata
--accent#2563eb#60a5faFocus, active commands, selected states
--accent-soft#eff6ff#1e3a5fSelection backgrounds
--warning#f59e0b#fbbf24Trim/search attention states
--success#22c55e#4ade80Healthy quality/export status
--danger#ef4444#f87171Errors, severe quality warnings
--focus-ring#2563eb#60a5fa2 px visible keyboard ring everywhere

Accessibility rule: all color meaning must be doubled by shape, text, or pattern. Quality should never be color-only; edited bases should never be color-only; mixed bases should never be color-only.

(d) Progressive-disclosure strategy

Tier Always visible Reveal trigger Contents
Tier 1 — default reading Yes Initial load Open/sample, workspace tabs, zoom, fit, strand, find, export shortcut, annotation lane, trace, quality track, sequence strip, viewport readout.
Tier 2 — contextual detail No Select/focus a base, open metadata, open export menu Base inspector, exact peak values, metadata panel, full export choices, search summaries, trim summaries.
Tier 3 — advanced analysis No Switch mode or open compare drawer Mixed-base threshold tuning, edit history emphasis, multi-trace compare, alignment/reference surfaces, report-oriented SVG/export utilities.

Key product decision: do not hide capabilities behind a mystery “advanced” toggle. Instead, bind them to the user’s active task. Editing opens edit affordances, comparing opens compare affordances, exporting opens export affordances.

(e) Explicit feature → IA mapping so nothing is lost

Current feature New IA home Visibility rule Implementation note
Parse (.ab1/.scf)Global bar + empty stateAlways visible before loadKeep drag/drop, file picker, sample loader.
Render chromatogramMain analysis stageAlways visible after loadRemains the visual center.
Zoom / pan / fitPrimary trace bar + gesturesAlways visibleAdd keyboard parity and overview reset cues.
Reverse complementPrimary trace barAlways visibleKeep one-click toggle; show orientation state near readout.
Trim controlsContext rail → Trace tabVisible in Review mode; sticky summary in stage footerKeep Full/Trimmed as primary mode switch.
Find / subsequence navigationPrimary trace barAlways visiblePromote /, next/previous keyboard shortcuts.
MetadataContext rail → Metadata tabCollapsed by defaultShow one-line summary near file name; full detail in rail.
Per-base peaksInspector tabOn base hover/focus/selectUnify tooltip and inspector language.
Multi-trace workspaceGlobal bar tabs + compare drawerTabs always visible when >1 trace is openKeep fast switching; move compare-heavy tasks out of the main bar.
Mixed-base callingContext rail → Trace tabShown in Review/Edit modesThreshold tuning is advanced, result count is summary-visible.
AnnotationsAnnotation lane + Metadata/Annotate tabLane always visible when data existsPreserve jump-to-feature behavior.
Editable basesEdit mode + Inspector tabEdit affordances appear on focus/selectKeep in-place editing, but make edit state more explicit.
Undo / redoPrimary trace bar + keyboardVisible when editing is availablePreserve current shortcuts and disabled states.
FASTQ / QUAL exportExport tab / menuSecondary export optionsKeep power, reduce primary-bar noise.
Quality trackMain analysis stageAlways visible after loadThis stays first-class; FinchTV/Geneious validate it.
Base inspectorInspector tab / bottom sheetOn focus, click, Enter, SpacePreserve exact current keyboard path.
PNG / SVG / FASTA exportExport menu + Export tabPNG/FASTA quick actions; SVG in advanced exportPreserve existing outputs while clarifying intent.

Bottom line: every existing feature survives. What changes is grouping, discoverability, and mode framing — not capability.

(f) Performance, reliability, and consistency checklist

  1. Render budget: keep first meaningful trace paint under 150 ms for common files and interaction updates under one frame (16 ms target, 50 ms hard ceiling) on modern laptops.
  2. Large-trace behavior: maintain overview readability and input responsiveness on long/noisy traces; no rail or sheet may trigger full-stage reflow while panning.
  3. Interaction consistency: the same base selection state must drive tooltip, inspector, search highlight, edit state, metadata readout, and export scope language.
  4. Cross-feature integrity: reverse-complement, trim mode, mixed-base calling, manual edits, annotations, and search must compose without surprising state loss.
  5. Non-destructive clarity: edited bases must remain visibly edited after mode changes, and undo/redo state must survive panel toggles.
  6. Quality trust: quality summaries, trim summaries, and quality-track visuals must always agree numerically.
  7. Accessibility baseline: full keyboard traversal, visible focus, ARIA labels for mode/panel state, no color-only meaning, and light/dark parity for every new surface.
  8. Responsive behavior: desktop rail becomes bottom sheet on narrow widths; no horizontal scrolling for command surfaces.
  9. Export consistency: PNG/SVG/FASTA/FASTQ/QUAL naming, scope, and strand/trim/edit semantics must be documented and identical across every export surface.
  10. Edge cases: no-quality traces, all-trimmed traces, ambiguous-heavy traces, traces with sparse metadata, multi-trace tab overflow, and failed parse states need explicit UI states, not silent degradation.

Priority order for the implementation wave

  1. P0 — information architecture: split the current flat toolbar into global bar, primary trace bar, and contextual rail without changing underlying capabilities.
  2. P0 — main stage cleanup: lock the visual stack to annotation lane → chromatogram → quality track → sequence strip → readout.
  3. P1 — inspector/metadata/export rail: unify the current inspector + metadata + export affordances into a coherent right-side rail/bottom sheet.
  4. P1 — keyboard system: add a shortcuts model, cheat sheet, and consistent focus management across modes.
  5. P1 — design tokens rollout: replace ad-hoc spacing/surface treatments with the documented token system and verify light/dark parity.
  6. P2 — compare drawer: evolve the existing multi-trace workspace into a clearer compare surface without slowing down single-trace review.

Final recommendation

The redesign should aim for Geneious calm, SnapGene contextuality, FinchTV legibility, Chromas immediacy, UGENE non-destructive trust, and Benchling web-native discipline. That combination fits sanger-viewer unusually well: the project is already a surprisingly capable browser-based trace viewer, so the next win is not raw feature count. It is making the existing power feel intentional, elegant, and easy to learn.