Skip to content

About

OneTaxonomy: a source-available framework for importing, curating, browsing and publishing scientifically faithful taxonomic classifications and phylogenetic trees, with a TypeScript core, React components, a Payload plugin and a desktop studio.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

OneTaxonomy

A source-available framework for importing, curating, browsing and publishing scientifically faithful taxonomic classifications and phylogenetic trees: for developers, and for teachers, museums, researchers and animal keepers who don't write code.

Part of the OneOrigin suite: independent tools, with no subscriptions, that work alone or together.

Status: early (Phase 1, milestone 4 of 8). The pure TypeScript core, the importers (Newick, NEXUS, phyloXML, CSV/TSV checklists, Darwin Core Archives, OneTaxonomy JSON) and curated selective imports with coverage reports, views with undo/redo, layouts and the React explorer work and are tested (see apps/playground). A first Mac app (apps/studio) opens these files and saves views. Profiles and the Studio's project files are planned, and the Payload plugin has its first four parts (snapshots, views, import jobs, proposals and a small read API, tested on an in-memory database) and a small example site (apps/payload-example); see the phase plan. The five onetaxonomy-* packages are on npm as alpha versions, under @extantape from 0.1.0-alpha.4; the Payload plugin isn't yet.

Principles

  • Science and display are separate. Data lives in immutable, checksummed snapshots; views only project it.
  • A classification is not a phylogeny. Ranks and names are never treated as evidence of common ancestry.
  • Only supported clades are called clades. Monophyly is monophyletic, not-monophyletic or indeterminate, always relative to a named hypothesis, with reasons and caveats.
  • Missing stays missing. Unmapped taxa, unresolved polytomies, unrooted trees, partial sampling and unknown status are reported, never guessed.
  • Your sources, your choice. OneTaxonomy ships adapters, not authoritative data.

The full rules are in scientific invariants.

Packages

Package What it does Status
@extantape/onetaxonomy-core Records, validation, bounded traversal, MRCA, tri-state monophyly, curated selections, coverage reports, snapshot checksums and diffs, views (actions, undo/redo, filters, highlights, projection), JSON Schema. No dependencies; runs anywhere. Working
@extantape/onetaxonomy-import Source adapters (CSV/TSV, Darwin Core Archive, JSON, Newick, NEXUS, phyloXML), reconciliation, selective imports, community presets Working
@extantape/onetaxonomy-layout Rectangular, phylogram/time (only when valid), radial and sunburst layouts as plain coordinates Working
@extantape/onetaxonomy-react Server-renderable SVG tree, accessible keyboard outline, explorer (undo/redo, drag, overlays, inspector, clade selector, SVG/PNG/JSON exports), lesson player Working
@extantape/onetaxonomy-education Lesson decks (scenes, cameras, annotations, reveals) and worksheets with answers computed from the data Working
@extantape/payload-plugin-onetaxonomy Payload plugin: sealed snapshots checked by checksum, staged and published, views pinned to them, import jobs that turn source files into staged snapshots, people's own proposals that a curator can accept into a new staged version, a bounded read API (name search, ancestors, descendants, MRCA, coverage, projected views, exports) behind the host's access rules, with optional tenant scope, and admin panels for publishing, import progress and deciding on proposals Early (M7 parts 1 to 5): tested on Payload with an in-memory MongoDB and in the example site on this machine, not yet in a deployed site. Not on npm
apps/studio OneTaxonomy for Mac (Tauri 2): open checklists, Darwin Core Archives, Newick, NEXUS and phyloXML trees and snapshots; browse them; collapse weak branches, add a tree to an open checklist and link its tips to taxa (proposed by exact name, confirmed by you), compare two trees, and reroot or midpoint-root as a new tree; save views and sealed snapshots (never over the file that was opened), and save and open .onetaxonomy bundles (a documented ZIP with a manifest and checksums) 0.1.0 on GitHub Releases. Not notarized, and it can't update itself yet
apps/payload-example A small Payload and Next.js site that uses the plugin: two roles, public pages that draw published views on the server, and proposals that record people by id, with a public handle shown beside it. Runs on your machine with a throwaway in-memory database An example. Checked over HTTP by its smoke test; nobody has clicked through its admin yet

Try it

pnpm install
pnpm build
pnpm test
pnpm --filter @extantape/onetaxonomy-examples start
import { assessTaxon, indexDataset } from '@extantape/onetaxonomy-core'

const data = indexDataset(snapshot)
const result = assessTaxon(data.classification('traditional'), 'c:reptilia', data.phylogeny('archelosauria'))
// { status: 'not-monophyletic', reason: 'missing-descendants', missing: ['t-aves'], hypothesis: { id: 'archelosauria', version: '1' }, … }

Curate a selective import from a checklist (see examples/selective-import.mjs):

import { csvAdapter, selectiveImport, toSnapshot } from '@extantape/onetaxonomy-import'

const read = await csvAdapter({ source: mySource }).read(csvText)        // Darwin Core column names by default
const full = toSnapshot(read, { id: 'my-checklist', version: '2026-03', createdAt })
const { snapshot, coverage } = selectiveImport(full, {
  id: 'my-selection', title: 'Kept groups', version: '1', classification: full.classifications[0].id,
  roots: [{ concept: turtlesId, policy: { kind: 'rank', ranks: ['species', 'subspecies'] } }],
}, { id: 'curated', version: '1', createdAt })
// snapshot: chosen taxa + ancestor paths only; coverage: what was left out, per root

Documentation

License

PolyForm Noncommercial 1.0.0 for the software: free for noncommercial use, with attribution; commercial use needs a separate license from EXTANT APE. Versions published before this change remain under MIT. Data you import keeps its own license; OneTaxonomy records it with every snapshot.

About

OneTaxonomy: a source-available framework for importing, curating, browsing and publishing scientifically faithful taxonomic classifications and phylogenetic trees, with a TypeScript core, React components, a Payload plugin and a desktop studio.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages