Skip to content

Diagrammo — All Chart Types

Every dgmo code fence below renders a different chart type, and the prose around them shows the Markdown formatting the integration renders alongside diagrams. Edit the data to experiment! For the full editor experience visit diagrammo.app.


Markdown formatting

Diagrams live inside ordinary Markdown, so everything below renders normally next to the dgmo fences — bold, italic, strikethrough, inline code, and links.

Bullet lists & indentation

  • Crew roster
    • Captain
      • Quartermaster
      • Boatswain
    • Gunner
  • Ship's stores
    • Powder and shot
    • Salt pork and biscuit

Numbered steps

  1. Hoist the colours
  2. Come alongside the prize
  3. Board and secure the hold
    1. Take the powder room first
    2. Then the captain's cabin

Task list

  • [x] Careen the hull
  • [x] Re-tar the rigging
  • [ ] Divide the plunder

Table

VesselGunsCrewStatus
Queen Anne's Revenge40300Flagship
Ranger1080Consort
Adventure860Captured

Blockquote & code

A merry life and a short one shall be my motto. — Bartholomew Roberts

js
const plunder = ships.reduce((sum, s) => sum + s.gold, 0);

Data

Arc Diagram

.arc-node:hover{filter:saturate(1.4) brightness(1.06)}.arc-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.arc-node[data-node="Blackbeard"]:hover) .arc-link:not([data-source="Blackbeard"]):not([data-target="Blackbeard"]){opacity:0.4}svg:has(.arc-node[data-node="Bonnet"]:hover) .arc-link:not([data-source="Bonnet"]):not([data-target="Bonnet"]){opacity:0.4}svg:has(.arc-node[data-node="Vane"]:hover) .arc-link:not([data-source="Vane"]):not([data-target="Vane"]){opacity:0.4}svg:has(.arc-node[data-node="Hornigold"]:hover) .arc-link:not([data-source="Hornigold"]):not([data-target="Hornigold"]){opacity:0.4}svg:has(.arc-node[data-node="Bonny"]:hover) .arc-link:not([data-source="Bonny"]):not([data-target="Bonny"]){opacity:0.4}svg:has(.arc-node[data-node="Rackham"]:hover) .arc-link:not([data-source="Rackham"]):not([data-target="Rackham"]){opacity:0.4}svg:has(.arc-node[data-node="Read"]:hover) .arc-link:not([data-source="Read"]):not([data-target="Read"]){opacity:0.4}svg:has(.arc-node[data-node="Roberts"]:hover) .arc-link:not([data-source="Roberts"]):not([data-target="Roberts"]){opacity:0.4}svg:has(.arc-node[data-node="Davis"]:hover) .arc-link:not([data-source="Davis"]):not([data-target="Davis"]){opacity:0.4}}CaribbeanWomen PiratesWest AfricaBlackbeardBonnetVaneHornigoldBonnyRackhamReadRobertsDavisPirate Alliances
.arc-node:hover{filter:saturate(1.4) brightness(1.06)}.arc-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.arc-node[data-node="Blackbeard"]:hover) .arc-link:not([data-source="Blackbeard"]):not([data-target="Blackbeard"]){opacity:0.4}svg:has(.arc-node[data-node="Bonnet"]:hover) .arc-link:not([data-source="Bonnet"]):not([data-target="Bonnet"]){opacity:0.4}svg:has(.arc-node[data-node="Vane"]:hover) .arc-link:not([data-source="Vane"]):not([data-target="Vane"]){opacity:0.4}svg:has(.arc-node[data-node="Hornigold"]:hover) .arc-link:not([data-source="Hornigold"]):not([data-target="Hornigold"]){opacity:0.4}svg:has(.arc-node[data-node="Bonny"]:hover) .arc-link:not([data-source="Bonny"]):not([data-target="Bonny"]){opacity:0.4}svg:has(.arc-node[data-node="Rackham"]:hover) .arc-link:not([data-source="Rackham"]):not([data-target="Rackham"]){opacity:0.4}svg:has(.arc-node[data-node="Read"]:hover) .arc-link:not([data-source="Read"]):not([data-target="Read"]){opacity:0.4}svg:has(.arc-node[data-node="Roberts"]:hover) .arc-link:not([data-source="Roberts"]):not([data-target="Roberts"]){opacity:0.4}svg:has(.arc-node[data-node="Davis"]:hover) .arc-link:not([data-source="Davis"]):not([data-target="Davis"]){opacity:0.4}}CaribbeanWomen PiratesWest AfricaBlackbeardBonnetVaneHornigoldBonnyRackhamReadRobertsDavisPirate Alliances
arc Pirate Alliances

[Caribbean] red
  Blackbeard -> Bonnet    8
  Blackbeard -> Vane      5
  Blackbeard -> Hornigold 4
  Hornigold  -> Bonnet    2

[Women Pirates] green
  Bonny   -> Rackham 9
  Bonny   -> Read    7
  Rackham -> Vane    3

[West Africa] blue
  Roberts -> Davis    6
  Davis   -> Roberts 10

Area Chart (line + fill)

@media (hover:hover){svg:has(g.dgmo-series:hover) g.dgmo-series:not(:hover){opacity:0.4}}Tortuga Rum Barrels in StoresRaiding SeasonDry Spell100200300400500600700JanFebMarAprMayJunJulAugSepOctNovDec320410505618470355210140260430560690MonthBarrels in Hold
@media (hover:hover){svg:has(g.dgmo-series:hover) g.dgmo-series:not(:hover){opacity:0.4}}Tortuga Rum Barrels in StoresRaiding SeasonDry Spell100200300400500600700JanFebMarAprMayJunJulAugSepOctNovDec320410505618470355210140260430560690MonthBarrels in Hold
line Tortuga Rum Barrels in Stores
fill
series Barrels
x-label Month
y-label Barrels in Hold

era Jan -> Apr Raiding Season red
era Apr -> Aug Dry Spell blue

Jan 320
Feb 410
Mar 505
Apr 618
May 470
Jun 355
Jul 210
Aug 140
Sep 260
Oct 430
Nov 560
Dec 690

Bar Chart

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Port Royal"]:hover) .dgmo-datum:not([data-emph-key="Port Royal"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Tortuga"]:hover) .dgmo-datum:not([data-emph-key="Tortuga"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Nassau"]:hover) .dgmo-datum:not([data-emph-key="Nassau"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Havana"]:hover) .dgmo-datum:not([data-emph-key="Havana"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Cartagena"]:hover) .dgmo-datum:not([data-emph-key="Cartagena"]){opacity:0.18}svg:has([data-legend-entry="port royal"]:hover) .dgmo-datum:not([data-emph-key="Port Royal"]){opacity:0.18}svg:has([data-legend-entry="tortuga"]:hover) .dgmo-datum:not([data-emph-key="Tortuga"]){opacity:0.18}svg:has([data-legend-entry="nassau"]:hover) .dgmo-datum:not([data-emph-key="Nassau"]){opacity:0.18}svg:has([data-legend-entry="havana"]:hover) .dgmo-datum:not([data-emph-key="Havana"]){opacity:0.18}svg:has([data-legend-entry="cartagena"]:hover) .dgmo-datum:not([data-emph-key="Cartagena"]){opacity:0.18}}Treasure Hauls by Port02004006008001,000Port RoyalTortugaNassauHavanaCartagena8506201,100430780
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Port Royal"]:hover) .dgmo-datum:not([data-emph-key="Port Royal"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Tortuga"]:hover) .dgmo-datum:not([data-emph-key="Tortuga"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Nassau"]:hover) .dgmo-datum:not([data-emph-key="Nassau"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Havana"]:hover) .dgmo-datum:not([data-emph-key="Havana"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Cartagena"]:hover) .dgmo-datum:not([data-emph-key="Cartagena"]){opacity:0.18}svg:has([data-legend-entry="port royal"]:hover) .dgmo-datum:not([data-emph-key="Port Royal"]){opacity:0.18}svg:has([data-legend-entry="tortuga"]:hover) .dgmo-datum:not([data-emph-key="Tortuga"]){opacity:0.18}svg:has([data-legend-entry="nassau"]:hover) .dgmo-datum:not([data-emph-key="Nassau"]){opacity:0.18}svg:has([data-legend-entry="havana"]:hover) .dgmo-datum:not([data-emph-key="Havana"]){opacity:0.18}svg:has([data-legend-entry="cartagena"]:hover) .dgmo-datum:not([data-emph-key="Cartagena"]){opacity:0.18}}Treasure Hauls by Port02004006008001,000Port RoyalTortugaNassauHavanaCartagena8506201,100430780
bar Treasure Hauls by Port

Port Royal blue   850
Tortuga green     620
Nassau red       1100
Havana yellow     430
Cartagena purple  780

Bar Chart (stacked)

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Gold"]:hover) .dgmo-datum:not([data-emph-key="Gold"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Silver"]:hover) .dgmo-datum:not([data-emph-key="Silver"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Spices"]:hover) .dgmo-datum:not([data-emph-key="Spices"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Rum"]:hover) .dgmo-datum:not([data-emph-key="Rum"]){opacity:0.18}svg:has([data-legend-entry="gold"]:hover) .dgmo-datum:not([data-emph-key="Gold"]){opacity:0.18}svg:has([data-legend-entry="silver"]:hover) .dgmo-datum:not([data-emph-key="Silver"]){opacity:0.18}svg:has([data-legend-entry="spices"]:hover) .dgmo-datum:not([data-emph-key="Spices"]){opacity:0.18}svg:has([data-legend-entry="rum"]:hover) .dgmo-datum:not([data-emph-key="Rum"]){opacity:0.18}}Plunder by VoyageSeriesGoldSilverSpicesRum02004006008001,0001,2001,400Spanish MainBarbary CoastWindward PassageCoral Run480320210150360290340180520410160240300260380200VoyageDoubloons
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Gold"]:hover) .dgmo-datum:not([data-emph-key="Gold"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Silver"]:hover) .dgmo-datum:not([data-emph-key="Silver"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Spices"]:hover) .dgmo-datum:not([data-emph-key="Spices"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Rum"]:hover) .dgmo-datum:not([data-emph-key="Rum"]){opacity:0.18}svg:has([data-legend-entry="gold"]:hover) .dgmo-datum:not([data-emph-key="Gold"]){opacity:0.18}svg:has([data-legend-entry="silver"]:hover) .dgmo-datum:not([data-emph-key="Silver"]){opacity:0.18}svg:has([data-legend-entry="spices"]:hover) .dgmo-datum:not([data-emph-key="Spices"]){opacity:0.18}svg:has([data-legend-entry="rum"]:hover) .dgmo-datum:not([data-emph-key="Rum"]){opacity:0.18}}Plunder by VoyageSeriesGoldSilverSpicesRum02004006008001,0001,2001,400Spanish MainBarbary CoastWindward PassageCoral Run480320210150360290340180520410160240300260380200VoyageDoubloons
bar Plunder by Voyage
x-label Voyage
y-label Doubloons

stack
  Gold red
  Silver orange
  Spices yellow
  Rum green

Spanish Main     480 320 210 150
Barbary Coast    360 290 340 180
Windward Passage 520 410 160 240
Coral Run        300 260 380 200

Bubble Chart (scatter + size)

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-category="English Pirates"]:hover) .dgmo-datum:not([data-category="English Pirates"]){opacity:0.18}svg:has(.dgmo-datum[data-category="French Buccaneers"]:hover) .dgmo-datum:not([data-category="French Buccaneers"]){opacity:0.18}svg:has(.dgmo-datum[data-category="Welsh Privateers"]:hover) .dgmo-datum:not([data-category="Welsh Privateers"]){opacity:0.18}svg:has([data-legend-entry="english pirates"]:hover) .dgmo-datum:not([data-category="English Pirates"]){opacity:0.18}svg:has([data-legend-entry="french buccaneers"]:hover) .dgmo-datum:not([data-category="French Buccaneers"]){opacity:0.18}svg:has([data-legend-entry="welsh privateers"]:hover) .dgmo-datum:not([data-category="Welsh Privateers"]){opacity:0.18}}Pirate Fleets of the CaribbeanGroupEnglish PiratesFrench BuccaneersWelsh Privateers20406080100120405060708090BlackbeardCalico JackAnne BonnyL'OlonnaisPierre le GrandHenry MorganBartholomew RobertsRuthlessnessPlunder (chests)
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-category="English Pirates"]:hover) .dgmo-datum:not([data-category="English Pirates"]){opacity:0.18}svg:has(.dgmo-datum[data-category="French Buccaneers"]:hover) .dgmo-datum:not([data-category="French Buccaneers"]){opacity:0.18}svg:has(.dgmo-datum[data-category="Welsh Privateers"]:hover) .dgmo-datum:not([data-category="Welsh Privateers"]){opacity:0.18}svg:has([data-legend-entry="english pirates"]:hover) .dgmo-datum:not([data-category="English Pirates"]){opacity:0.18}svg:has([data-legend-entry="french buccaneers"]:hover) .dgmo-datum:not([data-category="French Buccaneers"]){opacity:0.18}svg:has([data-legend-entry="welsh privateers"]:hover) .dgmo-datum:not([data-category="Welsh Privateers"]){opacity:0.18}}Pirate Fleets of the CaribbeanGroupEnglish PiratesFrench BuccaneersWelsh Privateers20406080100120405060708090BlackbeardCalico JackAnne BonnyL'OlonnaisPierre le GrandHenry MorganBartholomew RobertsRuthlessnessPlunder (chests)
scatter Pirate Fleets of the Caribbean
x-label Ruthlessness
y-label Plunder (chests)
size-label Crew

[English Pirates] red
  Blackbeard    90  85  300
  Calico Jack   55  32  110
  Anne Bonny    70  28   90

[French Buccaneers] blue
  L'Olonnais         80  60  220
  Pierre le Grand    45  25   70

[Welsh Privateers] green
  Henry Morgan  85  120  470
  Bartholomew Roberts  88  110  510

Arc — Chord Layout

Pirate Alliance NetworkBlackbeardBonnetVaneHornigoldRackhamBonnyReadRobertsDavisAnstis
Pirate Alliance NetworkBlackbeardBonnetVaneHornigoldRackhamBonnyReadRobertsDavisAnstis
arc Pirate Alliance Network
layout chord

Blackbeard -> Bonnet    150
Blackbeard -> Vane       80
Blackbeard -> Hornigold 120
Bonnet     -> Rackham    40
Vane       -> Rackham    60
Rackham    -> Bonny     200
Bonny      -> Read      180
Roberts    -> Davis      90
Roberts    -> Anstis     70
Hornigold  -> Bonnet     50
Vane       -> Bonny      30
Roberts    -> Rackham    20
Rackham    -> Roberts   100

Doughnut Chart (pie + hole)

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Gold Doubloons"]:hover) .dgmo-datum:not([data-emph-key="Gold Doubloons"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Silver Pieces"]:hover) .dgmo-datum:not([data-emph-key="Silver Pieces"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Spices \26 Silk"]:hover) .dgmo-datum:not([data-emph-key="Spices \26 Silk"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Rum Casks"]:hover) .dgmo-datum:not([data-emph-key="Rum Casks"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Gunpowder"]:hover) .dgmo-datum:not([data-emph-key="Gunpowder"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Navigation Charts"]:hover) .dgmo-datum:not([data-emph-key="Navigation Charts"]){opacity:0.18}svg:has([data-legend-entry="gold doubloons"]:hover) .dgmo-datum:not([data-emph-key="Gold Doubloons"]){opacity:0.18}svg:has([data-legend-entry="silver pieces"]:hover) .dgmo-datum:not([data-emph-key="Silver Pieces"]){opacity:0.18}svg:has([data-legend-entry="spices \26 silk"]:hover) .dgmo-datum:not([data-emph-key="Spices \26 Silk"]){opacity:0.18}svg:has([data-legend-entry="rum casks"]:hover) .dgmo-datum:not([data-emph-key="Rum Casks"]){opacity:0.18}svg:has([data-legend-entry="gunpowder"]:hover) .dgmo-datum:not([data-emph-key="Gunpowder"]){opacity:0.18}svg:has([data-legend-entry="navigation charts"]:hover) .dgmo-datum:not([data-emph-key="Navigation Charts"]){opacity:0.18}}Plunder Hold ContentsGold Doubloons — 420 (38%)Silver Pieces — 260 (23%)Spices & Silk — 180 (16%)Rum Casks — 140 (13%)Gunpowder — 90 (8%)Navigation Charts — 30 (3%)1,120
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Gold Doubloons"]:hover) .dgmo-datum:not([data-emph-key="Gold Doubloons"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Silver Pieces"]:hover) .dgmo-datum:not([data-emph-key="Silver Pieces"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Spices \26 Silk"]:hover) .dgmo-datum:not([data-emph-key="Spices \26 Silk"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Rum Casks"]:hover) .dgmo-datum:not([data-emph-key="Rum Casks"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Gunpowder"]:hover) .dgmo-datum:not([data-emph-key="Gunpowder"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Navigation Charts"]:hover) .dgmo-datum:not([data-emph-key="Navigation Charts"]){opacity:0.18}svg:has([data-legend-entry="gold doubloons"]:hover) .dgmo-datum:not([data-emph-key="Gold Doubloons"]){opacity:0.18}svg:has([data-legend-entry="silver pieces"]:hover) .dgmo-datum:not([data-emph-key="Silver Pieces"]){opacity:0.18}svg:has([data-legend-entry="spices \26 silk"]:hover) .dgmo-datum:not([data-emph-key="Spices \26 Silk"]){opacity:0.18}svg:has([data-legend-entry="rum casks"]:hover) .dgmo-datum:not([data-emph-key="Rum Casks"]){opacity:0.18}svg:has([data-legend-entry="gunpowder"]:hover) .dgmo-datum:not([data-emph-key="Gunpowder"]){opacity:0.18}svg:has([data-legend-entry="navigation charts"]:hover) .dgmo-datum:not([data-emph-key="Navigation Charts"]){opacity:0.18}}Plunder Hold ContentsGold Doubloons — 420 (38%)Silver Pieces — 260 (23%)Spices & Silk — 180 (16%)Rum Casks — 140 (13%)Gunpowder — 90 (8%)Navigation Charts — 30 (3%)1,120
pie Plunder Hold Contents
hole 0.5

Gold Doubloons   420
Silver Pieces    260
Spices & Silk    180
Rum Casks        140
Gunpowder         90
Navigation Charts  30

Function Plot

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}Cannonball Trajectories by ElevationFunction15 degrees30 degrees45 degrees05101520253035404550020406080100120140160180200220240Distance (meters)Height (meters)
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}Cannonball Trajectories by ElevationFunction15 degrees30 degrees45 degrees05101520253035404550020406080100120140160180200220240Distance (meters)Height (meters)
function Cannonball Trajectories by Elevation
x-label Distance (meters)
y-label Height (meters)
x 0 to 250

15 degrees blue: -0.001*x^2 + 0.27*x
30 degrees green: -0.002*x^2 + 0.58*x
45 degrees red: -0.003*x^2 + 0.75*x

Funnel Chart

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Port Visitors"]:hover) .dgmo-datum:not([data-emph-key="Port Visitors"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Tavern Recruits"]:hover) .dgmo-datum:not([data-emph-key="Tavern Recruits"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Crew Trials"]:hover) .dgmo-datum:not([data-emph-key="Crew Trials"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Sworn Pirates"]:hover) .dgmo-datum:not([data-emph-key="Sworn Pirates"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Veteran Buccaneers"]:hover) .dgmo-datum:not([data-emph-key="Veteran Buccaneers"]){opacity:0.18}svg:has([data-legend-entry="port visitors"]:hover) .dgmo-datum:not([data-emph-key="Port Visitors"]){opacity:0.18}svg:has([data-legend-entry="tavern recruits"]:hover) .dgmo-datum:not([data-emph-key="Tavern Recruits"]){opacity:0.18}svg:has([data-legend-entry="crew trials"]:hover) .dgmo-datum:not([data-emph-key="Crew Trials"]){opacity:0.18}svg:has([data-legend-entry="sworn pirates"]:hover) .dgmo-datum:not([data-emph-key="Sworn Pirates"]){opacity:0.18}svg:has([data-legend-entry="veteran buccaneers"]:hover) .dgmo-datum:not([data-emph-key="Veteran Buccaneers"]){opacity:0.18}}Pirate Recruitment PipelinePort Visitors1,000Tavern Recruits50050%Crew Trials20040%Sworn Pirates10050%Veteran Buccaneers5050%
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Port Visitors"]:hover) .dgmo-datum:not([data-emph-key="Port Visitors"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Tavern Recruits"]:hover) .dgmo-datum:not([data-emph-key="Tavern Recruits"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Crew Trials"]:hover) .dgmo-datum:not([data-emph-key="Crew Trials"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Sworn Pirates"]:hover) .dgmo-datum:not([data-emph-key="Sworn Pirates"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Veteran Buccaneers"]:hover) .dgmo-datum:not([data-emph-key="Veteran Buccaneers"]){opacity:0.18}svg:has([data-legend-entry="port visitors"]:hover) .dgmo-datum:not([data-emph-key="Port Visitors"]){opacity:0.18}svg:has([data-legend-entry="tavern recruits"]:hover) .dgmo-datum:not([data-emph-key="Tavern Recruits"]){opacity:0.18}svg:has([data-legend-entry="crew trials"]:hover) .dgmo-datum:not([data-emph-key="Crew Trials"]){opacity:0.18}svg:has([data-legend-entry="sworn pirates"]:hover) .dgmo-datum:not([data-emph-key="Sworn Pirates"]){opacity:0.18}svg:has([data-legend-entry="veteran buccaneers"]:hover) .dgmo-datum:not([data-emph-key="Veteran Buccaneers"]){opacity:0.18}}Pirate Recruitment PipelinePort Visitors1,000Tavern Recruits50050%Crew Trials20040%Sworn Pirates10050%Veteran Buccaneers5050%
funnel Pirate Recruitment Pipeline

Port Visitors blue     1000
Tavern Recruits cyan    500
Crew Trials yellow      200
Sworn Pirates orange    100
Veteran Buccaneers red   50

Heatmap

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}/* hover: 36 groups exceeds cap 40; self-emphasis only */Pirate Activity by Sea RegionJanFebMarAprMayJunCaribbean545345Atlantic232432Mediterranean321234Indian Ocean454543South China Sea123212West Africa334354
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}/* hover: 36 groups exceeds cap 40; self-emphasis only */Pirate Activity by Sea RegionJanFebMarAprMayJunCaribbean545345Atlantic232432Mediterranean321234Indian Ocean454543South China Sea123212West Africa334354
heatmap Pirate Activity by Sea Region
columns Jan, Feb, Mar, Apr, May, Jun

// label value1, value2, ...
Caribbean       5 4 5 3 4 5
Atlantic        2 3 2 4 3 2
Mediterranean   3 2 1 2 3 4
Indian Ocean    4 5 4 5 4 3
South China Sea 1 2 3 2 1 2
West Africa     3 3 4 3 5 4

Line Chart

@media (hover:hover){svg:has(g.dgmo-series:hover) g.dgmo-series:not(:hover){opacity:0.4}}Ship Speed Over VoyageRough SeasFair Winds6789101112Day 1Day 2Day 3Day 4Day 5Day 6Day 78107129116DaySpeed
@media (hover:hover){svg:has(g.dgmo-series:hover) g.dgmo-series:not(:hover){opacity:0.4}}Ship Speed Over VoyageRough SeasFair Winds6789101112Day 1Day 2Day 3Day 4Day 5Day 6Day 78107129116DaySpeed
line Ship Speed Over Voyage
series Knots
x-label Day
y-label Speed

era Day 1 -> Day 3 Rough Seas red 
era Day 3 -> Day 7 Fair Winds blue

Day 1  8
Day 2 10
Day 3  7
Day 4 12
Day 5  9
Day 6 11
Day 7  6

Line Chart (Multi-series)

@media (hover:hover){svg:has(g.dgmo-series:hover) g.dgmo-series:not(:hover){opacity:0.4}}Plunder by Crew Over the VoyageSeriesCutlass CrewPowder MonkeysRigging Rats024681012NassauTortugaPort RoyalIsla MuertaKingston4.26.59.17.811.41.11.93.44.25.10.60.91.72.33Port of CallDoubloons (thousands)
@media (hover:hover){svg:has(g.dgmo-series:hover) g.dgmo-series:not(:hover){opacity:0.4}}Plunder by Crew Over the VoyageSeriesCutlass CrewPowder MonkeysRigging Rats024681012NassauTortugaPort RoyalIsla MuertaKingston4.26.59.17.811.41.11.93.44.25.10.60.91.72.33Port of CallDoubloons (thousands)
line Plunder by Crew Over the Voyage
series
  Cutlass Crew blue
  Powder Monkeys green
  Rigging Rats orange
x-label Port of Call
y-label Doubloons (thousands)

Nassau       4.2 1.1 0.6
Tortuga      6.5 1.9 0.9
Port Royal   9.1 3.4 1.7
Isla Muerta  7.8 4.2 2.3
Kingston    11.4 5.1 3.0

Pie Chart

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Sailors"]:hover) .dgmo-datum:not([data-emph-key="Sailors"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Gunners"]:hover) .dgmo-datum:not([data-emph-key="Gunners"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Marines"]:hover) .dgmo-datum:not([data-emph-key="Marines"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Officers"]:hover) .dgmo-datum:not([data-emph-key="Officers"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Specialists"]:hover) .dgmo-datum:not([data-emph-key="Specialists"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Cooks \26 Surgeons"]:hover) .dgmo-datum:not([data-emph-key="Cooks \26 Surgeons"]){opacity:0.18}svg:has([data-legend-entry="sailors"]:hover) .dgmo-datum:not([data-emph-key="Sailors"]){opacity:0.18}svg:has([data-legend-entry="gunners"]:hover) .dgmo-datum:not([data-emph-key="Gunners"]){opacity:0.18}svg:has([data-legend-entry="marines"]:hover) .dgmo-datum:not([data-emph-key="Marines"]){opacity:0.18}svg:has([data-legend-entry="officers"]:hover) .dgmo-datum:not([data-emph-key="Officers"]){opacity:0.18}svg:has([data-legend-entry="specialists"]:hover) .dgmo-datum:not([data-emph-key="Specialists"]){opacity:0.18}svg:has([data-legend-entry="cooks \26 surgeons"]:hover) .dgmo-datum:not([data-emph-key="Cooks \26 Surgeons"]){opacity:0.18}}Crew Roles DistributionSailors — 45 (45%)Gunners — 20 (20%)Marines — 15 (15%)Officers — 8 (8%)Specialists — 7 (7%)Cooks & Surgeons — 5 (5%)
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Sailors"]:hover) .dgmo-datum:not([data-emph-key="Sailors"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Gunners"]:hover) .dgmo-datum:not([data-emph-key="Gunners"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Marines"]:hover) .dgmo-datum:not([data-emph-key="Marines"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Officers"]:hover) .dgmo-datum:not([data-emph-key="Officers"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Specialists"]:hover) .dgmo-datum:not([data-emph-key="Specialists"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Cooks \26 Surgeons"]:hover) .dgmo-datum:not([data-emph-key="Cooks \26 Surgeons"]){opacity:0.18}svg:has([data-legend-entry="sailors"]:hover) .dgmo-datum:not([data-emph-key="Sailors"]){opacity:0.18}svg:has([data-legend-entry="gunners"]:hover) .dgmo-datum:not([data-emph-key="Gunners"]){opacity:0.18}svg:has([data-legend-entry="marines"]:hover) .dgmo-datum:not([data-emph-key="Marines"]){opacity:0.18}svg:has([data-legend-entry="officers"]:hover) .dgmo-datum:not([data-emph-key="Officers"]){opacity:0.18}svg:has([data-legend-entry="specialists"]:hover) .dgmo-datum:not([data-emph-key="Specialists"]){opacity:0.18}svg:has([data-legend-entry="cooks \26 surgeons"]:hover) .dgmo-datum:not([data-emph-key="Cooks \26 Surgeons"]){opacity:0.18}}Crew Roles DistributionSailors — 45 (45%)Gunners — 20 (20%)Marines — 15 (15%)Officers — 8 (8%)Specialists — 7 (7%)Cooks & Surgeons — 5 (5%)
pie Crew Roles Distribution
solid-fill
//no-percent
//no-value

Sailors          45
Gunners          20
Marines          15
Officers          8
Specialists       7
Cooks & Surgeons  5

Polar Area Chart

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Navigation"]:hover) .dgmo-datum:not([data-emph-key="Navigation"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Swordsmanship"]:hover) .dgmo-datum:not([data-emph-key="Swordsmanship"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Leadership"]:hover) .dgmo-datum:not([data-emph-key="Leadership"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Cunning"]:hover) .dgmo-datum:not([data-emph-key="Cunning"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Seamanship"]:hover) .dgmo-datum:not([data-emph-key="Seamanship"]){opacity:0.18}svg:has([data-legend-entry="navigation"]:hover) .dgmo-datum:not([data-emph-key="Navigation"]){opacity:0.18}svg:has([data-legend-entry="swordsmanship"]:hover) .dgmo-datum:not([data-emph-key="Swordsmanship"]){opacity:0.18}svg:has([data-legend-entry="leadership"]:hover) .dgmo-datum:not([data-emph-key="Leadership"]){opacity:0.18}svg:has([data-legend-entry="cunning"]:hover) .dgmo-datum:not([data-emph-key="Cunning"]){opacity:0.18}svg:has([data-legend-entry="seamanship"]:hover) .dgmo-datum:not([data-emph-key="Seamanship"]){opacity:0.18}}Captain's SkillsNavigation — 90 (21%)Swordsmanship — 75 (18%)Leadership — 85 (20%)Cunning — 95 (22%)Seamanship — 80 (19%)
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-emph-key="Navigation"]:hover) .dgmo-datum:not([data-emph-key="Navigation"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Swordsmanship"]:hover) .dgmo-datum:not([data-emph-key="Swordsmanship"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Leadership"]:hover) .dgmo-datum:not([data-emph-key="Leadership"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Cunning"]:hover) .dgmo-datum:not([data-emph-key="Cunning"]){opacity:0.18}svg:has(.dgmo-datum[data-emph-key="Seamanship"]:hover) .dgmo-datum:not([data-emph-key="Seamanship"]){opacity:0.18}svg:has([data-legend-entry="navigation"]:hover) .dgmo-datum:not([data-emph-key="Navigation"]){opacity:0.18}svg:has([data-legend-entry="swordsmanship"]:hover) .dgmo-datum:not([data-emph-key="Swordsmanship"]){opacity:0.18}svg:has([data-legend-entry="leadership"]:hover) .dgmo-datum:not([data-emph-key="Leadership"]){opacity:0.18}svg:has([data-legend-entry="cunning"]:hover) .dgmo-datum:not([data-emph-key="Cunning"]){opacity:0.18}svg:has([data-legend-entry="seamanship"]:hover) .dgmo-datum:not([data-emph-key="Seamanship"]){opacity:0.18}}Captain's SkillsNavigation — 90 (21%)Swordsmanship — 75 (18%)Leadership — 85 (20%)Cunning — 95 (22%)Seamanship — 80 (19%)
polar-area Captain's Skills

Navigation    90
Swordsmanship 75
Leadership    85
Cunning       95
Seamanship    80

Radar Chart

Ship Combat RatingFirepowerSpeedArmorManeuverabilityCrew Morale8570609075
Ship Combat RatingFirepowerSpeedArmorManeuverabilityCrew Morale8570609075
radar Ship Combat Rating
solid-fill

Firepower       85
Speed           70
Armor           60
Maneuverability 90
Crew Morale     75

Sankey Diagram

Rum Supply Chain of the CaribbeanSugar PlantationsTortuga DistilleryNassau DistilleryKingston DistilleryPirate TavernsShip ProvisionsBlack MarketRoyal NavyCrew MoraleBar FightsLong Voyages
Rum Supply Chain of the CaribbeanSugar PlantationsTortuga DistilleryNassau DistilleryKingston DistilleryPirate TavernsShip ProvisionsBlack MarketRoyal NavyCrew MoraleBar FightsLong Voyages
sankey Rum Supply Chain of the Caribbean

// Source — color the plantation node green
Sugar Plantations green
  Tortuga Distillery orange 3000
  Nassau Distillery orange 2500
  Kingston Distillery orange 2000

// Distribution — indented targets under each distillery
Tortuga Distillery
  Pirate Taverns red 2000
  Ship Provisions teal 1000

Nassau Distillery
  Pirate Taverns 1500
  Black Market purple 1000

Kingston Distillery
  Royal Navy blue 1200
  Pirate Taverns 800

// Final destinations
Pirate Taverns
  Crew Morale 3500
  Bar Fights 800 red

Ship Provisions -> Long Voyages 1000

Scatter Plot

.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-category="Caribbean"]:hover) .dgmo-datum:not([data-category="Caribbean"]){opacity:0.18}svg:has(.dgmo-datum[data-category="Atlantic"]:hover) .dgmo-datum:not([data-category="Atlantic"]){opacity:0.18}svg:has(.dgmo-datum[data-category="Indian Ocean"]:hover) .dgmo-datum:not([data-category="Indian Ocean"]){opacity:0.18}svg:has([data-legend-entry="caribbean"]:hover) .dgmo-datum:not([data-category="Caribbean"]){opacity:0.18}svg:has([data-legend-entry="atlantic"]:hover) .dgmo-datum:not([data-category="Atlantic"]){opacity:0.18}svg:has([data-legend-entry="indian ocean"]:hover) .dgmo-datum:not([data-category="Indian Ocean"]){opacity:0.18}}Pirate CaptainsGroupCaribbeanAtlanticIndian Ocean2,0004,0006,0008,00010,00012,00014,00030405060708090100BlackbeardCalico JackAnne BonnyHenry MorganCharles VaneBlack Sam BellamyBartholomew RobertsEdward LowStede BonnetHenry EveryWilliam KiddThomas TewRuthlessnessTreasure
.dgmo-datum:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-datum{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-datum[data-category="Caribbean"]:hover) .dgmo-datum:not([data-category="Caribbean"]){opacity:0.18}svg:has(.dgmo-datum[data-category="Atlantic"]:hover) .dgmo-datum:not([data-category="Atlantic"]){opacity:0.18}svg:has(.dgmo-datum[data-category="Indian Ocean"]:hover) .dgmo-datum:not([data-category="Indian Ocean"]){opacity:0.18}svg:has([data-legend-entry="caribbean"]:hover) .dgmo-datum:not([data-category="Caribbean"]){opacity:0.18}svg:has([data-legend-entry="atlantic"]:hover) .dgmo-datum:not([data-category="Atlantic"]){opacity:0.18}svg:has([data-legend-entry="indian ocean"]:hover) .dgmo-datum:not([data-category="Indian Ocean"]){opacity:0.18}}Pirate CaptainsGroupCaribbeanAtlanticIndian Ocean2,0004,0006,0008,00010,00012,00014,00030405060708090100BlackbeardCalico JackAnne BonnyHenry MorganCharles VaneBlack Sam BellamyBartholomew RobertsEdward LowStede BonnetHenry EveryWilliam KiddThomas TewRuthlessnessTreasure
scatter Pirate Captains
x-label Ruthlessness
y-label Treasure

[Caribbean] red
  Blackbeard   90  8500
  Calico Jack  55  3200
  Anne Bonny   70  2800
  Henry Morgan 85 12000
  Charles Vane 75  4100


[Atlantic] blue
  Black Sam Bellamy   60  9200
  Bartholomew Roberts 88 11000
  Edward Low          95  5500
  Stede Bonnet        30  1800



[Indian Ocean] green
  Henry Every  80 14000
  William Kidd 65  6800
  Thomas Tew   50  7200

Slope Chart

.slope-series:hover{filter:saturate(1.4) brightness(1.06)}.slope-series{transition:filter .12s ease, opacity .12s ease}17151725404 — Blackbeard1252 — Bartholomew Roberts202 — Charles Vane815 — Anne Bonny186 — Calico JackPirate Fleet Strength: 1715 vs 1725
.slope-series:hover{filter:saturate(1.4) brightness(1.06)}.slope-series{transition:filter .12s ease, opacity .12s ease}17151725404 — Blackbeard1252 — Bartholomew Roberts202 — Charles Vane815 — Anne Bonny186 — Calico JackPirate Fleet Strength: 1715 vs 1725
slope Pirate Fleet Strength: 1715 vs 1725

period
  1715
  1725

Blackbeard red           40  4
Bartholomew Roberts blue 12 52
Charles Vane orange      20  2
Anne Bonny green          8 15
Calico Jack purple       18  6

Treemap

.dgmo-treemap-cell:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-treemap-cell{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-treemap-cell[data-tag-crew="Deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}}.dgmo-treemap-focus{opacity:.3;transition:opacity .12s}.dgmo-treemap-cell:hover .dgmo-treemap-focus{opacity:.7}Plunder Spend ($k)Sailing & Rigging640 · 62%Cannon Battery220 · 21%Provisions180 · 17%Rigging320 · 31%Helm180 · 17%Lookout140 · 13%Shot130 · 13%Powder90 · 9%Rum110 · 11%Hardtack70 · 7%CrewDeckGunsStores
.dgmo-treemap-cell:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-treemap-cell{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-treemap-cell[data-tag-crew="Deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}}.dgmo-treemap-focus{opacity:.3;transition:opacity .12s}.dgmo-treemap-cell:hover .dgmo-treemap-focus{opacity:.7}Plunder Spend ($k)Sailing & Rigging640 · 62%Cannon Battery220 · 21%Provisions180 · 17%Rigging320 · 31%Helm180 · 17%Lookout140 · 13%Shot130 · 13%Powder90 · 9%Rum110 · 11%Hardtack70 · 7%CrewDeckGunsStores
treemap Plunder Spend ($k)

tag Crew as t
  Deck blue
  Guns orange
  Stores green

Sailing & Rigging t: Deck
  Rigging 320
  Helm 180
  Lookout 140
Cannon Battery t: Guns
  Powder 90
  Shot 130
Provisions t: Stores
  Rum 110
  Hardtack 70

Sunburst (treemap radial)

.dgmo-treemap-cell:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-treemap-cell{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-treemap-cell[data-tag-crew="Deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}}Sailing & Rigging640 · 62%Cannon Battery220 · 21%Provisions180 · 17%Rigging320 · 31%Helm180 · 17%Lookout140 · 13%Powder90 · 9%Shot130 · 13%Rum110 · 11%Hardtack70 · 7%Plunder Spend ($k)1,040CrewDeckGunsStores
.dgmo-treemap-cell:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-treemap-cell{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-treemap-cell[data-tag-crew="Deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-treemap-cell[data-tag-crew="Stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="deck"]:hover) .dgmo-treemap-cell[data-tag-crew="Deck"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="guns"]:hover) .dgmo-treemap-cell[data-tag-crew="Guns"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="stores"]:hover) .dgmo-treemap-cell[data-tag-crew="Stores"]{filter:saturate(1.4) brightness(1.06)}}Sailing & Rigging640 · 62%Cannon Battery220 · 21%Provisions180 · 17%Rigging320 · 31%Helm180 · 17%Lookout140 · 13%Powder90 · 9%Shot130 · 13%Rum110 · 11%Hardtack70 · 7%Plunder Spend ($k)1,040CrewDeckGunsStores
treemap Plunder Spend ($k)
radial

tag Crew as t
  Deck blue
  Guns orange
  Stores green

Sailing & Rigging t: Deck
  Rigging 320
  Helm 180
  Lookout 140
Cannon Battery t: Guns
  Powder 90
  Shot 130
Provisions t: Stores
  Rum 110
  Hardtack 70

Life

Body

.dgmo-body-part:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-body-part{transition:filter .12s ease, opacity .12s ease}deltoidsOverhead press — 3×10tricepsRope pushdowns — 3×12chestBarbell bench press — 4×8absPlank — 3×45sPowder Monkey Push DayEffortPrimarySecondaryWarm-up
.dgmo-body-part:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-body-part{transition:filter .12s ease, opacity .12s ease}deltoidsOverhead press — 3×10tricepsRope pushdowns — 3×12chestBarbell bench press — 4×8absPlank — 3×45sPowder Monkey Push DayEffortPrimarySecondaryWarm-up
body Powder Monkey Push Day
muscle
front

tag Effort as e
  Primary red
  Secondary orange
  Warm-up yellow

chest        e: Primary
  Barbell bench press  4×8
deltoids     e: Primary
  Overhead press  3×10
triceps      e: Secondary
  Rope pushdowns  3×12
abs          e: Warm-up
  Plank  3×45s

Bracket

Buccaneer BrawlRound 1Round 2FinalBlack Pearl5Sea Serpent3Salty Dog4Kraken2Queen Anne6Jolly Roger1Flying Dutchman3Barnacle Betty2Black Pearl2Salty Dog1Queen Anne4Flying Dutchman3Black Pearl7Queen Anne5
Buccaneer BrawlRound 1Round 2FinalBlack Pearl5Sea Serpent3Salty Dog4Kraken2Queen Anne6Jolly Roger1Flying Dutchman3Barnacle Betty2Black Pearl2Salty Dog1Queen Anne4Flying Dutchman3Black Pearl7Queen Anne5
bracket Buccaneer Brawl

Black Pearl beats Sea Serpent 5-3
Salty Dog beats Kraken 4-2
Queen Anne beats Jolly Roger 6-1
Flying Dutchman beats Barnacle Betty 3-2
Black Pearl beats Salty Dog 2-1
Queen Anne beats Flying Dutchman 4-3
Black Pearl beats Queen Anne 7-5

Bracket (seeded, two sides)

Grand Line CupRed FleetBlue FleetSkirmishClashFleet FinalSkirmishClashFleet FinalGrand Line Cup4Jolly Roger25Kraken03Sea Serpent26Barnacle Betty11Black Pearl34Jolly Roger12Queen Anne33Sea Serpent21Black Pearl42Queen Anne24Marauder25Tidewater13Grog Hound26Coral Cutlass11Flying Dutchman34Marauder02Salty Dog33Grog Hound21Flying Dutchman42Salty Dog11Black Pearl41Flying Dutchman3
Grand Line CupRed FleetBlue FleetSkirmishClashFleet FinalSkirmishClashFleet FinalGrand Line Cup4Jolly Roger25Kraken03Sea Serpent26Barnacle Betty11Black Pearl34Jolly Roger12Queen Anne33Sea Serpent21Black Pearl42Queen Anne24Marauder25Tidewater13Grog Hound26Coral Cutlass11Flying Dutchman34Marauder02Salty Dog33Grog Hound21Flying Dutchman42Salty Dog11Black Pearl41Flying Dutchman3
bracket Grand Line Cup
rounds Skirmish, Clash, Fleet Final

[Red Fleet] red
  seed 1 Black Pearl
  seed 2 Queen Anne
  seed 3 Sea Serpent
  seed 4 Jolly Roger
  seed 5 Kraken
  seed 6 Barnacle Betty
  Sea Serpent beats Barnacle Betty 2-1
  Jolly Roger beats Kraken 2-0
  Black Pearl beats Jolly Roger 3-1
  Queen Anne beats Sea Serpent 3-2
  Black Pearl beats Queen Anne 4-2

[Blue Fleet] blue
  seed 1 Flying Dutchman
  seed 2 Salty Dog
  seed 3 Grog Hound
  seed 4 Marauder
  seed 5 Tidewater
  seed 6 Coral Cutlass
  Grog Hound beats Coral Cutlass 2-1
  Marauder beats Tidewater 2-1
  Flying Dutchman beats Marauder 3-0
  Salty Dog beats Grog Hound 3-2
  Flying Dutchman beats Salty Dog 4-1

Black Pearl beats Flying Dutchman 4-3

Clock

Crew standups1:57:02pmQuartermasterLondonsunset in 7h 17m8:57:02amDani (NY)New Yorksunset in 11h 31m5:57:02amWest coastLos Angelessunset in 14h 10m
Crew standups1:57:02pmQuartermasterLondonsunset in 7h 17m8:57:02amDani (NY)New Yorksunset in 11h 31m5:57:02amWest coastLos Angelessunset in 14h 10m
clock Crew standups

London as Quartermaster
New York as Dani (NY)
Los Angeles as West coast

Countdown

@keyframes dgmo-countdown-flash { 0%, 100% { opacity: 1; stroke-width: 2; } 50% { opacity: 0.45; stroke-width: 3; } } .dgmo-countdown-target-ring { animation: dgmo-countdown-flash 1.8s ease-in-out infinite; } @media (prefers-reduced-motion: reduce) { .dgmo-countdown-target-ring { animation: none; } } New YearFri Jan 1 2027as of Jul 14 2026MayJunJul14AugSepOctNovDecJan1FebMarApr5 months, 18 days
@keyframes dgmo-countdown-flash { 0%, 100% { opacity: 1; stroke-width: 2; } 50% { opacity: 0.45; stroke-width: 3; } } .dgmo-countdown-target-ring { animation: dgmo-countdown-flash 1.8s ease-in-out infinite; } @media (prefers-reduced-motion: reduce) { .dgmo-countdown-target-ring { animation: none; } } New YearFri Jan 1 2027as of Jul 14 2026MayJunJul14AugSepOctNovDecJan1FebMarApr5 months, 18 days
countdown New Year
every year on Jan 1
on-day 🎉 Happy New Year!

Countdown (recurring, numbered)

@keyframes dgmo-countdown-flash { 0%, 100% { opacity: 1; stroke-width: 2; } 50% { opacity: 0.45; stroke-width: 3; } } .dgmo-countdown-target-ring { animation: dgmo-countdown-flash 1.8s ease-in-out infinite; } @media (prefers-reduced-motion: reduce) { .dgmo-countdown-target-ring { animation: none; } } Wedding Anniversary12th AnniversaryMon Jun 14 2027as of Jul 14 2026Jul14AugSepOctNovDecJanFebMarAprMayJun1411 months
@keyframes dgmo-countdown-flash { 0%, 100% { opacity: 1; stroke-width: 2; } 50% { opacity: 0.45; stroke-width: 3; } } .dgmo-countdown-target-ring { animation: dgmo-countdown-flash 1.8s ease-in-out infinite; } @media (prefers-reduced-motion: reduce) { .dgmo-countdown-target-ring { animation: none; } } Wedding Anniversary12th AnniversaryMon Jun 14 2027as of Jul 14 2026Jul14AugSepOctNovDecJanFebMarAprMayJun1411 months
countdown Wedding Anniversary
every year on Jun 14
since 2015
since-label Nth Anniversary

Family

.family-focus-icon{opacity:0;transition:opacity .15s ease;pointer-events:none}.family-card:hover .family-focus-icon{opacity:.6;pointer-events:all}.family-focus-icon:hover{opacity:1}The Blackwater BuccaneersSexMaleFemaleUnknownAllegianceadoptedm. 1660m. 1685m. 1698m. 1712† Redbeard1638 – 1701Occupation: CaptainMilitary: Sacked three ports† Blackheart Bess1642 – 1699Occupation: QuartermasterLong John Silverb. 1658Occupation: CookAnneb. 1662Occupation: Pirate King† One-Eyed Pete1660 – 1712Occupation: BosunMad Maryb. 1665Occupation: Powder MonkeyYoung Jackb. 1686Occupation: NavigatorCalico KateGraceb. 1689Occupation: SailmakerSallyb. 1699Occupation: LookoutTomb. 1690Occupation: Cabin BoyNedb. 1713Occupation: GunnerPearlb. 1715Occupation: Cartographer
.family-focus-icon{opacity:0;transition:opacity .15s ease;pointer-events:none}.family-card:hover .family-focus-icon{opacity:.6;pointer-events:all}.family-focus-icon:hover{opacity:1}The Blackwater BuccaneersSexMaleFemaleUnknownAllegianceadoptedm. 1660m. 1685m. 1698m. 1712† Redbeard1638 – 1701Occupation: CaptainMilitary: Sacked three ports† Blackheart Bess1642 – 1699Occupation: QuartermasterLong John Silverb. 1658Occupation: CookAnneb. 1662Occupation: Pirate King† One-Eyed Pete1660 – 1712Occupation: BosunMad Maryb. 1665Occupation: Powder MonkeyYoung Jackb. 1686Occupation: NavigatorCalico KateGraceb. 1689Occupation: SailmakerSallyb. 1699Occupation: LookoutTomb. 1690Occupation: Cabin BoyNedb. 1713Occupation: GunnerPearlb. 1715Occupation: Cartographer
family The Blackwater Buccaneers

tag Allegiance as flag
  Founders green
  Brethren red
  Crown blue

Redbeard b: 1638, d: 1701, sex: m, occupation: Captain, military: Sacked three ports, flag: Founders
Blackheart Bess b: 1642, d: 1699, sex: f, occupation: Quartermaster, flag: Founders

Redbeard + Blackheart Bess m: 1660
  Anne b: 1662, sex: f, occupation: Pirate King, flag: Brethren
  Mad Mary b: 1665, sex: f, occupation: Powder Monkey

"Long John Silver" b: 1658, sex: m, occupation: Cook
One-Eyed Pete b: 1660, d: 1712, sex: m, occupation: Bosun, flag: Crown

Anne + "Long John Silver" m: 1685
  Young Jack b: 1686, sex: m, occupation: Navigator
  Grace b: 1689, sex: f, occupation: Sailmaker, flag: Brethren

Anne + One-Eyed Pete m: 1698
  Sally b: 1699, sex: f, occupation: Lookout

Mad Mary sex: f
  Tom b: 1690, sex: m, occupation: Cabin Boy

Young Jack + Calico Kate m: 1712
  Ned b: 1713, sex: m, occupation: Gunner
  Pearl adopted, b: 1715, sex: f, occupation: Cartographer

Goal

Doubloons Plundered ($)64%6.4k10kWelcome aboard, matey! The hold's filling nicely — 6.4k of 10k doubloons.Tortuga raid — counted and stowedPort Royal — first mate swears it's almost talliedThe bar rides orange at 64%; cross 80% and she turns green.
Doubloons Plundered ($)64%6.4k10kWelcome aboard, matey! The hold's filling nicely — 6.4k of 10k doubloons.Tortuga raid — counted and stowedPort Royal — first mate swears it's almost talliedThe bar rides orange at 64%; cross 80% and she turns green.
goal Doubloons Plundered ($)
now 6400
target 10000
note
  **Welcome aboard, matey!** The hold's filling nicely  `6.4k` of `10k` doubloons.
  - *Tortuga* raid  counted and stowed
  - **Port Royal**  first mate swears it's *almost* tallied
  The bar rides **orange** at 64%; cross `80%` and she turns green.

Goal (gauge)

640255075TARGET100Voyage Quota (chests)
640255075TARGET100Voyage Quota (chests)
goal Voyage Quota (chests)
gauge
now 64
target 100

Business

Cycle Diagram

.cycle-node:hover{filter:saturate(1.4) brightness(1.06)}.cycle-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.cycle-node[data-node-index="0"]:hover) .cycle-edge:not([data-from="0"]):not([data-to="0"]){opacity:0.4}svg:has(.cycle-node[data-node-index="1"]:hover) .cycle-edge:not([data-from="1"]):not([data-to="1"]){opacity:0.4}svg:has(.cycle-node[data-node-index="2"]:hover) .cycle-edge:not([data-from="2"]):not([data-to="2"]){opacity:0.4}svg:has(.cycle-node[data-node-index="3"]:hover) .cycle-edge:not([data-from="3"]):not([data-to="3"]){opacity:0.4}}The Pirate Raid CycleScoutSpot merchantvessels from afarPursueRaise the colors,trim the sailsBoardSwing across andseize the deckCelebrateDivide the spoils,then repair
.cycle-node:hover{filter:saturate(1.4) brightness(1.06)}.cycle-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.cycle-node[data-node-index="0"]:hover) .cycle-edge:not([data-from="0"]):not([data-to="0"]){opacity:0.4}svg:has(.cycle-node[data-node-index="1"]:hover) .cycle-edge:not([data-from="1"]):not([data-to="1"]){opacity:0.4}svg:has(.cycle-node[data-node-index="2"]:hover) .cycle-edge:not([data-from="2"]):not([data-to="2"]){opacity:0.4}svg:has(.cycle-node[data-node-index="3"]:hover) .cycle-edge:not([data-from="3"]):not([data-to="3"]){opacity:0.4}}The Pirate Raid CycleScoutSpot merchantvessels from afarPursueRaise the colors,trim the sailsBoardSwing across andseize the deckCelebrateDivide the spoils,then repair
cycle The Pirate Raid Cycle
solid-fill

Scout blue
  Spot merchant vessels from afar

Pursue green
  Raise the colors, trim the sails

Board orange
  Swing across and seize the deck

Celebrate red
  Divide the spoils, then repair

Journey Map

.journey-face:hover{filter:saturate(1.4) brightness(1.06)}.journey-face{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.journey-face[data-score="4"]:hover) .journey-face[data-score="4"]{filter:saturate(1.4) brightness(1.06)}svg:has(.journey-face[data-score="1"]:hover) .journey-face[data-score="1"]{filter:saturate(1.4) brightness(1.06)}svg:has(.journey-face[data-score="3"]:hover) .journey-face[data-score="3"]{filter:saturate(1.4) brightness(1.06)}svg:has(.journey-face[data-score="5"]:hover) .journey-face[data-score="5"]{filter:saturate(1.4) brightness(1.06)}}A Cabin Boy's First VoyageSquidlips SamGreenhorn cabin boy, first time at seaSworn to the crew but quietly terrifiedHopefulTerrifiedRelievedTriumphantProudContentSigning OnSign the articlesCaptain reads the code aloud — payshares, no women aboard, lights outat 8The TempestCaught in a squall off the reefTwo crewmates lost overboardbefore dawnMaybe the merchant fleet wasn'tso bad after allDawn, and she still floatsThe PrizeStrike the colorsHeavy with silver from the VeracruzminesHomecomingBury a share on the islandThree doubloons hidden whereonly he can find themBack to the Rusty AnchorNext time he signs on as a fullhand, not a boy
.journey-face:hover{filter:saturate(1.4) brightness(1.06)}.journey-face{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.journey-face[data-score="4"]:hover) .journey-face[data-score="4"]{filter:saturate(1.4) brightness(1.06)}svg:has(.journey-face[data-score="1"]:hover) .journey-face[data-score="1"]{filter:saturate(1.4) brightness(1.06)}svg:has(.journey-face[data-score="3"]:hover) .journey-face[data-score="3"]{filter:saturate(1.4) brightness(1.06)}svg:has(.journey-face[data-score="5"]:hover) .journey-face[data-score="5"]{filter:saturate(1.4) brightness(1.06)}}A Cabin Boy's First VoyageSquidlips SamGreenhorn cabin boy, first time at seaSworn to the crew but quietly terrifiedHopefulTerrifiedRelievedTriumphantProudContentSigning OnSign the articlesCaptain reads the code aloud — payshares, no women aboard, lights outat 8The TempestCaught in a squall off the reefTwo crewmates lost overboardbefore dawnMaybe the merchant fleet wasn'tso bad after allDawn, and she still floatsThe PrizeStrike the colorsHeavy with silver from the VeracruzminesHomecomingBury a share on the islandThree doubloons hidden whereonly he can find themBack to the Rusty AnchorNext time he signs on as a fullhand, not a boy
journey-map A Cabin Boy's First Voyage
solid-fill

persona Squidlips Sam color: blue
  Greenhorn cabin boy, first time at sea
  Sworn to the crew but quietly terrified

[Signing On]
  Sign the articles score: 4, emotion: Hopeful
    description: Captain reads the code aloud  pay shares, no women aboard, lights out at 8

[The Tempest]
  Caught in a squall off the reef score: 1, emotion: Terrified
    pain: Two crewmates lost overboard before dawn
    thought: Maybe the merchant fleet wasn't so bad after all
  Dawn, and she still floats score: 3, emotion: Relieved

[The Prize]
  Strike the colors score: 5, emotion: Triumphant
    description: Heavy with silver from the Veracruz mines

[Homecoming]
  Bury a share on the island score: 5, emotion: Proud
    thought: Three doubloons hidden where only he can find them
  Back to the Rusty Anchor score: 4, emotion: Content
    opportunity: Next time he signs on as a full hand, not a boy

Map

[data-poi]:hover{filter:saturate(1.4) brightness(1.06)}[data-poi]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-poi][data-tag-port="home port"]:hover) [data-poi][data-tag-port="home port"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-poi][data-tag-port="spanish prize"]:hover) [data-poi][data-tag-port="spanish prize"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-poi][data-tag-port="friendly"]:hover) [data-poi][data-tag-port="friendly"]{filter:saturate(1.4) brightness(1.06)}}weigh anchorraid the galleonscareen & resupply123Dominican Rep.KingstonHavanaSanto DomingoCubaHaitiPuerto RicoPortHome PortFriendlySpanish PrizeThe Brethren's Caribbean
[data-poi]:hover{filter:saturate(1.4) brightness(1.06)}[data-poi]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-poi][data-tag-port="home port"]:hover) [data-poi][data-tag-port="home port"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-poi][data-tag-port="spanish prize"]:hover) [data-poi][data-tag-port="spanish prize"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-poi][data-tag-port="friendly"]:hover) [data-poi][data-tag-port="friendly"]{filter:saturate(1.4) brightness(1.06)}}weigh anchorraid the galleonscareen & resupply123Dominican Rep.KingstonHavanaSanto DomingoCubaHaitiPuerto RicoPortHome PortFriendlySpanish PrizeThe Brethren's Caribbean
map The Brethren's Caribbean

tag Port as p
  Home Port red
  Friendly green
  Spanish Prize orange

tag Passage as l
  Open Sea blue
  Coastal Run teal

poi Kingston p: Home Port, size: 120
poi Havana p: Spanish Prize, size: 90
poi Santo Domingo p: Friendly, size: 70

route Kingston
  ~weigh anchor~> Havana l: Open Sea
  ~raid the galleons~> Santo Domingo l: Coastal Run
  ~careen & resupply~> Kingston l: Open Sea

Org Chart

.org-node:hover{filter:saturate(1.4) brightness(1.06)}.org-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.org-node[data-node-id="node-10"]:hover) .org-edge:not([data-from="node-10"]):not([data-to="node-10"]){opacity:0.4}svg:has(.org-node[data-node-id="node-11"]:hover) .org-edge:not([data-from="node-11"]):not([data-to="node-11"]){opacity:0.4}svg:has(.org-node[data-node-id="node-3"]:hover) .org-edge:not([data-from="node-3"]):not([data-to="node-3"]){opacity:0.4}svg:has(.org-node[data-node-id="node-4"]:hover) .org-edge:not([data-from="node-4"]):not([data-to="node-4"]){opacity:0.4}svg:has(.org-node[data-node-id="node-5"]:hover) .org-edge:not([data-from="node-5"]):not([data-to="node-5"]){opacity:0.4}svg:has(.org-node[data-node-id="node-6"]:hover) .org-edge:not([data-from="node-6"]):not([data-to="node-6"]){opacity:0.4}svg:has(.org-node[data-node-id="node-7"]:hover) .org-edge:not([data-from="node-7"]):not([data-to="node-7"]){opacity:0.4}svg:has(.org-node[data-node-id="node-8"]:hover) .org-edge:not([data-from="node-8"]):not([data-to="node-8"]){opacity:0.4}svg:has(.org-node[data-node-id="node-13"]:hover) .org-edge:not([data-from="node-13"]):not([data-to="node-13"]){opacity:0.4}svg:has(.org-node[data-node-id="node-14"]:hover) .org-edge:not([data-from="node-14"]):not([data-to="node-14"]){opacity:0.4}svg:has(.org-node[data-node-id="node-15"]:hover) .org-edge:not([data-from="node-15"]):not([data-to="node-15"]){opacity:0.4}svg:has(.org-node[data-node-id="node-16"]:hover) .org-edge:not([data-from="node-16"]):not([data-to="node-16"]){opacity:0.4}svg:has(.org-node[data-node-id="node-17"]:hover) .org-edge:not([data-from="node-17"]):not([data-to="node-17"]){opacity:0.4}svg:has(.org-node[data-node-id="node-1"]:hover) .org-edge:not([data-from="node-1"]):not([data-to="node-1"]){opacity:0.4}svg:has(.org-node[data-node-id="node-9"]:hover) .org-edge:not([data-from="node-9"]):not([data-to="node-9"]){opacity:0.4}svg:has(.org-node[data-node-id="node-2"]:hover) .org-edge:not([data-from="node-2"]):not([data-to="node-2"]){opacity:0.4}svg:has(.org-node[data-node-id="node-12"]:hover) .org-edge:not([data-from="node-12"]):not([data-to="node-12"]){opacity:0.4}}The Dread FleetNavigationRigging CrewBoarding PartyGun DeckCargo HoldBarnacle BobRank: SailorShip: RevengeStatus: LoyalSlippery SalStatus: TurncoatRank: SailorShip: RevengeCannonball PeteRank: GunnerShip: RevengeStatus: LoyalSmokey JackRank: GunnerStatus: NewRecruitShip: RevengePowder MegRank: SwabStatus: NewRecruitShip: RevengeCutlass JimRank: BosunShip: RevengeStatus: LoyalRed MaryRank: SailorShip: RevengeStatus: LoyalOne-Eyed DanStatus: TurncoatRank: SailorShip: RevengeMonkey FistRank: BosunShip: RevengeStatus: LoyalPegleg PeteRank: SailorShip: RevengeStatus: LoyalCrow JaneRank: SailorShip: RevengeStatus: LoyalStargazer QuinnRank: QuartermasterShip: RevengeStatus: LoyalCompass RoseStatus: NewRecruitRank: SailorShip: RevengeBlackbeardRank: CaptainShip: RevengeStatus: LoyalCrew: 16Calico RackhamRank: QuartermasterShip: RevengeStatus: LoyalCrew: 2Anne BonnyRank: FirstMateShip: RevengeStatus: LoyalCrew: 6Long JohnRank: FirstMateShip: SerpentStatus: LoyalCrew: 5RankSailorCaptainFirstMateQuartermasterBosunGunnerSwab
.org-node:hover{filter:saturate(1.4) brightness(1.06)}.org-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.org-node[data-node-id="node-10"]:hover) .org-edge:not([data-from="node-10"]):not([data-to="node-10"]){opacity:0.4}svg:has(.org-node[data-node-id="node-11"]:hover) .org-edge:not([data-from="node-11"]):not([data-to="node-11"]){opacity:0.4}svg:has(.org-node[data-node-id="node-3"]:hover) .org-edge:not([data-from="node-3"]):not([data-to="node-3"]){opacity:0.4}svg:has(.org-node[data-node-id="node-4"]:hover) .org-edge:not([data-from="node-4"]):not([data-to="node-4"]){opacity:0.4}svg:has(.org-node[data-node-id="node-5"]:hover) .org-edge:not([data-from="node-5"]):not([data-to="node-5"]){opacity:0.4}svg:has(.org-node[data-node-id="node-6"]:hover) .org-edge:not([data-from="node-6"]):not([data-to="node-6"]){opacity:0.4}svg:has(.org-node[data-node-id="node-7"]:hover) .org-edge:not([data-from="node-7"]):not([data-to="node-7"]){opacity:0.4}svg:has(.org-node[data-node-id="node-8"]:hover) .org-edge:not([data-from="node-8"]):not([data-to="node-8"]){opacity:0.4}svg:has(.org-node[data-node-id="node-13"]:hover) .org-edge:not([data-from="node-13"]):not([data-to="node-13"]){opacity:0.4}svg:has(.org-node[data-node-id="node-14"]:hover) .org-edge:not([data-from="node-14"]):not([data-to="node-14"]){opacity:0.4}svg:has(.org-node[data-node-id="node-15"]:hover) .org-edge:not([data-from="node-15"]):not([data-to="node-15"]){opacity:0.4}svg:has(.org-node[data-node-id="node-16"]:hover) .org-edge:not([data-from="node-16"]):not([data-to="node-16"]){opacity:0.4}svg:has(.org-node[data-node-id="node-17"]:hover) .org-edge:not([data-from="node-17"]):not([data-to="node-17"]){opacity:0.4}svg:has(.org-node[data-node-id="node-1"]:hover) .org-edge:not([data-from="node-1"]):not([data-to="node-1"]){opacity:0.4}svg:has(.org-node[data-node-id="node-9"]:hover) .org-edge:not([data-from="node-9"]):not([data-to="node-9"]){opacity:0.4}svg:has(.org-node[data-node-id="node-2"]:hover) .org-edge:not([data-from="node-2"]):not([data-to="node-2"]){opacity:0.4}svg:has(.org-node[data-node-id="node-12"]:hover) .org-edge:not([data-from="node-12"]):not([data-to="node-12"]){opacity:0.4}}The Dread FleetNavigationRigging CrewBoarding PartyGun DeckCargo HoldBarnacle BobRank: SailorShip: RevengeStatus: LoyalSlippery SalStatus: TurncoatRank: SailorShip: RevengeCannonball PeteRank: GunnerShip: RevengeStatus: LoyalSmokey JackRank: GunnerStatus: NewRecruitShip: RevengePowder MegRank: SwabStatus: NewRecruitShip: RevengeCutlass JimRank: BosunShip: RevengeStatus: LoyalRed MaryRank: SailorShip: RevengeStatus: LoyalOne-Eyed DanStatus: TurncoatRank: SailorShip: RevengeMonkey FistRank: BosunShip: RevengeStatus: LoyalPegleg PeteRank: SailorShip: RevengeStatus: LoyalCrow JaneRank: SailorShip: RevengeStatus: LoyalStargazer QuinnRank: QuartermasterShip: RevengeStatus: LoyalCompass RoseStatus: NewRecruitRank: SailorShip: RevengeBlackbeardRank: CaptainShip: RevengeStatus: LoyalCrew: 16Calico RackhamRank: QuartermasterShip: RevengeStatus: LoyalCrew: 2Anne BonnyRank: FirstMateShip: RevengeStatus: LoyalCrew: 6Long JohnRank: FirstMateShip: SerpentStatus: LoyalCrew: 5RankSailorCaptainFirstMateQuartermasterBosunGunnerSwab
org The Dread Fleet
solid-fill
sub-node-label Crew
show-sub-node-count

tag Rank as r
  Sailor blue
  Captain red
  FirstMate orange
  Quartermaster yellow
  Bosun green
  Gunner teal
  Jester cyan
  Swab purple

tag Ship as s
  Revenge blue
  Serpent green
  Phantom purple

tag Status as st
  Loyal green
  Turncoat red
  NewRecruit yellow

Blackbeard r: Captain, s: Revenge
  Anne Bonny r: FirstMate
    [Gun Deck]
      Cannonball Pete r: Gunner
      Smokey Jack r: Gunner, st: NewRecruit
      Powder Meg r: Swab, st: NewRecruit
    [Boarding Party]
      Cutlass Jim r: Bosun
      Red Mary
      One-Eyed Dan st: Turncoat
  Calico Rackham r: Quartermaster
    [Cargo Hold]
      Barnacle Bob
      Slippery Sal st: Turncoat
  Long John r: FirstMate, s: Serpent
    [Rigging Crew]
      Monkey Fist r: Bosun
      Pegleg Pete
      Crow Jane
    [Navigation]
      Stargazer Quinn r: Quartermaster
      Compass Rose st: NewRecruit

Pyramid Diagram

.pyramid-layer:hover{filter:saturate(1.4) brightness(1.06)}.pyramid-layer{transition:filter .12s ease, opacity .12s ease}.pyramid-desc-full{display:none}.dgmo-pyramid-layer-highlight.pyramid-desc-short{display:none}.dgmo-pyramid-layer-highlight.pyramid-desc-full{display:inline}.dgmo-pyramid-hidden{display:none}Pirate Crew HierarchyCaptainFinal word on heading and plunder,keeper of the ship's charter.QuartermasterSecond-in-command, arbitratesdisputes, divvies the booty.Boatswain & GunnerKeep the rigging tight andthe cannons ready.Able SeamenHaul lines, swab decks,and stand watch.Powder MonkeysFerry shot and charges to the gunsduring a broadside.
.pyramid-layer:hover{filter:saturate(1.4) brightness(1.06)}.pyramid-layer{transition:filter .12s ease, opacity .12s ease}.pyramid-desc-full{display:none}.dgmo-pyramid-layer-highlight.pyramid-desc-short{display:none}.dgmo-pyramid-layer-highlight.pyramid-desc-full{display:inline}.dgmo-pyramid-hidden{display:none}Pirate Crew HierarchyCaptainFinal word on heading and plunder,keeper of the ship's charter.QuartermasterSecond-in-command, arbitratesdisputes, divvies the booty.Boatswain & GunnerKeep the rigging tight andthe cannons ready.Able SeamenHaul lines, swab decks,and stand watch.Powder MonkeysFerry shot and charges to the gunsduring a broadside.
pyramid Pirate Crew Hierarchy
solid-fill

Captain purple
  Final word on heading and plunder,
  keeper of the ship's charter.

Quartermaster blue
  Second-in-command, arbitrates
  disputes, divvies the booty.

Boatswain & Gunner green
  Keep the rigging tight and
  the cannons ready.

Able Seamen yellow
  Haul lines, swab decks,
  and stand watch.

Powder Monkeys orange
  Ferry shot and charges to the guns
  during a broadside.

Quadrant Chart

.point-group:hover{filter:saturate(1.4) brightness(1.06)}.point-group{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.point-group[data-quadrant="top-right"]:hover) .point-group[data-quadrant="top-right"]{filter:saturate(1.4) brightness(1.06)}svg:has(.point-group[data-quadrant="top-left"]:hover) .point-group[data-quadrant="top-left"]{filter:saturate(1.4) brightness(1.06)}svg:has(.point-group[data-quadrant="bottom-right"]:hover) .point-group[data-quadrant="bottom-right"]{filter:saturate(1.4) brightness(1.06)}}Crew Performance AssessmentTrainPromoteMaroonWatch CloselyQuartermaster0.90, 0.95Navigator0.85, 0.80Gunner0.70, 0.60Surgeon0.80, 0.75Boatswain0.60, 0.85Cook0.40, 0.90New Recruit0.20, 0.50Troublemaker0.65, 0.20Spy0.80, 0.10Low SkillHigh SkillLow LoyaltyHigh Loyalty
.point-group:hover{filter:saturate(1.4) brightness(1.06)}.point-group{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.point-group[data-quadrant="top-right"]:hover) .point-group[data-quadrant="top-right"]{filter:saturate(1.4) brightness(1.06)}svg:has(.point-group[data-quadrant="top-left"]:hover) .point-group[data-quadrant="top-left"]{filter:saturate(1.4) brightness(1.06)}svg:has(.point-group[data-quadrant="bottom-right"]:hover) .point-group[data-quadrant="bottom-right"]{filter:saturate(1.4) brightness(1.06)}}Crew Performance AssessmentTrainPromoteMaroonWatch CloselyQuartermaster0.90, 0.95Navigator0.85, 0.80Gunner0.70, 0.60Surgeon0.80, 0.75Boatswain0.60, 0.85Cook0.40, 0.90New Recruit0.20, 0.50Troublemaker0.65, 0.20Spy0.80, 0.10Low SkillHigh SkillLow LoyaltyHigh Loyalty
quadrant Crew Performance Assessment
x-label Low Skill, High Skill
y-label Low Loyalty, High Loyalty

top-right Promote green
top-left Train yellow
bottom-left Maroon red
bottom-right Watch Closely purple

Quartermaster  0.9 0.95
Navigator     0.85  0.8
Gunner         0.7  0.6
Surgeon        0.8 0.75
Boatswain      0.6 0.85
Cook           0.4  0.9
New Recruit    0.2  0.5
Troublemaker  0.65  0.2
Spy            0.8  0.1

Ring Diagram

.ring-layer:hover{filter:saturate(1.4) brightness(1.06)}.ring-layer{transition:filter .12s ease, opacity .12s ease}Captain's Sphere of InfluenceCaptainQuartermasterCrewAllied CrewsThe Open SeaCaptainFinal word on heading and plunder,keeper of the ship's charter.QuartermasterSecond-in-command, arbitrates disputes and divvies thebootyCrewDeckhands, gunners, and powdermonkeys aboard the ship.Allied CrewsLoose alliances kept by oathor shared bounty in fair seas.The Open SeaWeather, currents, and rivalflags beyond any captain's reach.
.ring-layer:hover{filter:saturate(1.4) brightness(1.06)}.ring-layer{transition:filter .12s ease, opacity .12s ease}Captain's Sphere of InfluenceCaptainQuartermasterCrewAllied CrewsThe Open SeaCaptainFinal word on heading and plunder,keeper of the ship's charter.QuartermasterSecond-in-command, arbitrates disputes and divvies thebootyCrewDeckhands, gunners, and powdermonkeys aboard the ship.Allied CrewsLoose alliances kept by oathor shared bounty in fair seas.The Open SeaWeather, currents, and rivalflags beyond any captain's reach.
ring Captain's Sphere of Influence

solid-fill 

Captain  red
  Final word on heading and plunder,
  keeper of the ship's charter.

Quartermaster orange
  Second-in-command, arbitrates disputes and divvies the booty

Crew yellow
  Deckhands, gunners, and powder
  monkeys aboard the ship.

Allied Crews green
  Loose alliances kept by oath
  or shared bounty in fair seas.

The Open Sea blue
  Weather, currents, and rival
  flags beyond any captain's reach.

Swimlane

[data-lane]:hover{filter:saturate(1.4) brightness(1.06)}[data-lane]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-lane][data-lane="Writer"]:hover) [data-lane][data-lane="Writer"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-lane][data-lane="Editor"]:hover) [data-lane][data-lane="Editor"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-lane][data-lane="Social"]:hover) [data-lane][data-lane="Social"]{filter:saturate(1.4) brightness(1.06)}}WriterEditorSocialchangesokDraft PostReviseReviewSchedulePublishPromoteWeekly Publishing
[data-lane]:hover{filter:saturate(1.4) brightness(1.06)}[data-lane]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-lane][data-lane="Writer"]:hover) [data-lane][data-lane="Writer"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-lane][data-lane="Editor"]:hover) [data-lane][data-lane="Editor"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-lane][data-lane="Social"]:hover) [data-lane][data-lane="Social"]{filter:saturate(1.4) brightness(1.06)}}WriterEditorSocialchangesokDraft PostReviseReviewSchedulePublishPromoteWeekly Publishing
swimlane Weekly Publishing
direction LR

lane Writer gray
  Draft Post -> Review
  Revise -> Review
lane Editor blue
  <Review>
    -changes-> Revise
    -ok-> Schedule
  Schedule -> Publish
  Publish -> Promote
lane Social green
  Promote

Tech Radar

[data-trend]:hover{filter:saturate(1.4) brightness(1.06)}[data-trend]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-trend][data-quadrant="top-right"]:hover) [data-trend][data-quadrant="top-right"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-trend][data-quadrant="top-left"]:hover) [data-trend][data-quadrant="top-left"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-trend][data-quadrant="bottom-left"]:hover) [data-trend][data-quadrant="bottom-left"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-trend][data-quadrant="bottom-right"]:hover) [data-trend][data-quadrant="bottom-right"]{filter:saturate(1.4) brightness(1.06)}}Pirate Operations Radar — Q2 1718Full SailTrial RunTrial RunSpyglassSpyglassDavy JonesDavy JonesTacticsVesselsPlunder TargetsCrew Welfare789101112131234562122232425262714151617181920Vessels1Brigantine (Full Sail)2Sloop (Full Sail)3War Galleon (Trial Run)4Frigate (Spyglass)5Junk Rig (Spyglass)6Longboat (Davy Jones)Tactics7Ambush at Dawn (Full Sail)8Boarding Parties (Full Sail)9Decoy Flags (Trial Run)10Smoke Screens (Trial Run)11Night Raids (Trial Run)12Kraken Diplomacy (Spyglass)13Ramming (Davy Jones)Crew Welfare14Grog Rations (Full Sail)15Code of Conduct (Full Sail)16Parrot Companions (Full Sail)17Sea Shanty Program (Trial Run)18Dental Plan (Spyglass)19Retirement Fund (Spyglass)20Plank Walking (Davy Jones)Plunder Targets21Merchant Convoys (Full Sail)22Spanish Treasure Fleets (Full Sail)23Port Raids (Trial Run)24Rival Pirates (Trial Run)25Royal Treasury Ships (Spyglass)26Whaling Ships (Spyglass)27Fishing Villages (Davy Jones)
[data-trend]:hover{filter:saturate(1.4) brightness(1.06)}[data-trend]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-trend][data-quadrant="top-right"]:hover) [data-trend][data-quadrant="top-right"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-trend][data-quadrant="top-left"]:hover) [data-trend][data-quadrant="top-left"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-trend][data-quadrant="bottom-left"]:hover) [data-trend][data-quadrant="bottom-left"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-trend][data-quadrant="bottom-right"]:hover) [data-trend][data-quadrant="bottom-right"]{filter:saturate(1.4) brightness(1.06)}}Pirate Operations Radar — Q2 1718Full SailTrial RunTrial RunSpyglassSpyglassDavy JonesDavy JonesTacticsVesselsPlunder TargetsCrew Welfare789101112131234562122232425262714151617181920Vessels1Brigantine (Full Sail)2Sloop (Full Sail)3War Galleon (Trial Run)4Frigate (Spyglass)5Junk Rig (Spyglass)6Longboat (Davy Jones)Tactics7Ambush at Dawn (Full Sail)8Boarding Parties (Full Sail)9Decoy Flags (Trial Run)10Smoke Screens (Trial Run)11Night Raids (Trial Run)12Kraken Diplomacy (Spyglass)13Ramming (Davy Jones)Crew Welfare14Grog Rations (Full Sail)15Code of Conduct (Full Sail)16Parrot Companions (Full Sail)17Sea Shanty Program (Trial Run)18Dental Plan (Spyglass)19Retirement Fund (Spyglass)20Plank Walking (Davy Jones)Plunder Targets21Merchant Convoys (Full Sail)22Spanish Treasure Fleets (Full Sail)23Port Raids (Trial Run)24Rival Pirates (Trial Run)25Royal Treasury Ships (Spyglass)26Whaling Ships (Spyglass)27Fishing Villages (Davy Jones)
tech-radar Pirate Operations Radar  Q2 1718

rings
  Full Sail 
  Trial Run
  Spyglass
  Davy Jones

Tactics quadrant: top-right
  Ambush at Dawn ring: Full Sail, trend: stable
    Our most reliable boarding tactic. **90% success rate** when
    approaching from the east with the sun behind us.
    - Crew morale peaks at dawn  grog hasn't worn off yet
    - Reduced cannon fire needed: *3 volleys* vs 8 at midday
    - See [battle log](https://wiki.pirates.example/dawn-ambush)
  Boarding Parties ring: Full Sail, trend: stable
    Standard 20-man teams equipped with **cutlasses**, *grappling hooks*,
    and smoke pots. Training regimen updated after the *Tortuga Incident*.
  Decoy Flags ring: Trial Run, trend: up
    Flying false colours until within cannon range. Early results
    are promising  merchant ships drop anchor **40% more often**
    when they see a Dutch East India flag.
    - Works best in *foggy conditions*
    - Risk: Royal Navy ships sometimes call the bluff
  Smoke Screens ring: Trial Run, trend: new
    Burning wet straw and tar barrels on approach. Visibility drops to
    **under 10 metres**  perfect for sneaking alongside.
  Kraken Diplomacy ring: Spyglass, trend: new
    Exploring alliances with *sea monsters*. Negotiations ongoing
    but the Kraken's demands are... unreasonable.
    - Wants **50% of all treasure** plus exclusive fishing rights
    - Communication barrier: only speaks in bubbles
  Night Raids ring: Trial Run, trend: up
    Blackened sails and muffled oars. Three successful raids on
    *sleeping harbours* this quarter. Key constraint: **no moonlight**.
  Ramming ring: Davy Jones, trend: down
    Costs more in hull repairs than it's worth. The *HMS Splinter*
    incident of 1716 proved this conclusively.

Vessels quadrant: top-left
  Brigantine ring: Full Sail, trend: stable
    Our workhorse. Fast, manoeuvrable, carries **18 cannons**.
    - Crew capacity: 100 pirates
    - Top speed: *11 knots* in fair wind
    - Draft shallow enough for **coastal ambushes**
  Sloop ring: Full Sail, trend: up
    Fastest ship in the fleet. Only **6 cannons** but can outrun
    anything the Royal Navy sends. Perfect for *reconnaissance*
    and courier runs between hideouts.
  War Galleon ring: Trial Run, trend: up
    Captured from the Spanish fleet. Massive firepower but
    **slow to turn**  best for convoy raids, not chases.
    - 42 cannons across *three gun decks*
    - Requires 200+ crew to operate effectively
    - Ongoing hull repairs from [Battle of Nassau](https://wiki.pirates.example/nassau)
  Frigate ring: Spyglass, trend: new
    Intercepted blueprints from a *British shipyard*. Could be our
    next flagship if we can find enough **seasoned carpenters**.
  Junk Rig ring: Spyglass, trend: new
    Far Eastern design with **battened sails**  easier to handle
    in storms and requires *fewer crew*. Trader Wong demonstrated
    one in Macao harbour.
  Longboat ring: Davy Jones, trend: down
    Too slow, too small, too leaky. Last three longboat missions
    ended in **catastrophic sinkings**. Retired from active duty.

Plunder Targets quadrant: bottom-left
  Merchant Convoys ring: Full Sail, trend: stable
    Core revenue stream  **78% of total plunder**. East India
    Company ships running the spice route remain most lucrative.
    - Average haul: *4,200 doubloons* per convoy
    - Best intercepted near the [Windward Passage](https://wiki.pirates.example/windward)
    - Seasonal peak: JulySeptember during *monsoon trade runs*
  Spanish Treasure Fleets ring: Full Sail, trend: stable
    The **crown jewels** of piracy. Annual fleet carries gold,
    silver, and emeralds from the New World. Requires *coordinated
    multi-ship ambush* but one raid funds operations for a year.
  Port Raids ring: Trial Run, trend: up
    Shifting from sea-only operations. The raid on *Port-de-Paix*
    yielded **12,000 doubloons** and a warehouse of rum.
  Rival Pirates ring: Trial Run, trend: new
    Controversial but profitable. Blackbeard's crew carries
    **more gold** than most merchants. Ethics committee (the parrot)
    has filed an objection.
  Royal Treasury Ships ring: Spyglass, trend: new
    High risk, astronomical reward. Requires:
    - Inside information from *corrupt harbourmasters*
    - At least **3 allied ships** for the blockade
    - A really good escape plan
  Whaling Ships ring: Spyglass, trend: stable
    Moderate value  whale oil fetches **decent prices** in European
    markets. But the ships fight back *hard*.
  Fishing Villages ring: Davy Jones, trend: down
    Terrible ROI and **bad for reputation**. The parrot union
    filed a formal complaint. We're pirates, not bullies.

Crew Welfare quadrant: bottom-right
  Grog Rations ring: Full Sail, trend: stable
    Non-negotiable. Cutting grog rations caused the *Great Mutiny
    of 1716*. Current allocation: **2 pints per day** per pirate.
    - Premium rum reserved for post-battle celebrations
    - Watered grog for the night watch (safety first)
  Code of Conduct ring: Full Sail, trend: stable
    Our **Articles of Agreement**  fair share of plunder, compensation
    for injuries, voting rights on major decisions. *Democracy at sea.*
  Sea Shanty Program ring: Trial Run, trend: new
    Hired a shanty master from *Liverpool*. Crew productivity up
    **25%** during long voyages. Current repertoire:
    - "Yo Ho Ho and a Bottle of Rum"  *morale boost*
    - "What Shall We Do with a Drunken Sailor"  **work efficiency**
    - "Haul Away Joe"  anchor duty motivation
  Dental Plan ring: Spyglass, trend: up
    Exploring options. Most crew down to **4 teeth** on average.
    Parley with a Port Royal dentist scheduled for Q3 1718.
    - Estimated cost: *3 doubloons per extraction*
    - [Tooth census results](https://wiki.pirates.example/dental)
  Parrot Companions ring: Full Sail, trend: up
    Every pirate deserves a **shoulder companion**. Proven benefits:
    - *Scouts* that can spot sails at 3x human range
    - Morale boost: crew happiness up **30%**
    - Built-in alarm system for surprise attacks
  Retirement Fund ring: Spyglass, trend: new
    Proposal to set aside **5% of all plunder** for retirement.
    Controversial  most pirates don't expect to *live that long*.
  Plank Walking ring: Davy Jones, trend: down
    Terrible for recruitment and **crew retention**. Modern pirates
    prefer *marooning*  at least they get a pistol and a bottle.

Venn Diagram

circle:focus, circle:focus-visible { outline-solid: none !important; }Pirate Skill OverlapSwordsmanshipNavigationLeadershipSea RaidersVoyager CaptainsBuccaneer ChiefsLegendary Pirates
circle:focus, circle:focus-visible { outline-solid: none !important; }Pirate Skill OverlapSwordsmanshipNavigationLeadershipSea RaidersVoyager CaptainsBuccaneer ChiefsLegendary Pirates
venn Pirate Skill Overlap

Swordsmanship as sw red
Navigation as nav blue
Leadership as lead green

sw + nav        Sea Raiders
nav + lead      Voyager Captains
sw + lead       Buccaneer Chiefs
sw + nav + lead Legendary Pirates

Word Cloud

Pirate Skillsswordsmanshipnavigationseamanshipgunneryleadershipcartographyintimidationsailingplunderingknot-tyinglookoutcookingcarpentryfishing
Pirate Skillsswordsmanshipnavigationseamanshipgunneryleadershipcartographyintimidationsailingplunderingknot-tyinglookoutcookingcarpentryfishing
wordcloud Pirate Skills

// word weight (higher = larger)
swordsmanship 95
navigation    88
seamanship    85
gunnery       80
leadership    75
cartography   70
intimidation  68
sailing       65
plundering    60
knot-tying    55
lookout       50
cooking       45
carpentry     40
fishing       35

Project

DACI

[data-role-id]:hover{filter:saturate(1.4) brightness(1.06)}[data-role-id]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-role-id][data-role-id="captain"]:hover) [data-role-id][data-role-id="captain"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="quartermaster"]:hover) [data-role-id][data-role-id="quartermaster"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="navigator"]:hover) [data-role-id][data-role-id="navigator"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="bosun"]:hover) [data-role-id][data-role-id="bosun"]{filter:saturate(1.4) brightness(1.06)}}Captain's Council DecisionsDDriverAApproverCContributorIInformedCaptainQuartermasterNavigatorBosunRaid PlanningChoose the next prizeApproverContributorDriverInformedSet the attack headingContributorDriverApproverDivide the boarding partiesApproverContributorDriverProvisioningRation the grogDriverApproverContributorRestock the powderApproverDriverInformed
[data-role-id]:hover{filter:saturate(1.4) brightness(1.06)}[data-role-id]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-role-id][data-role-id="captain"]:hover) [data-role-id][data-role-id="captain"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="quartermaster"]:hover) [data-role-id][data-role-id="quartermaster"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="navigator"]:hover) [data-role-id][data-role-id="navigator"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="bosun"]:hover) [data-role-id][data-role-id="bosun"]{filter:saturate(1.4) brightness(1.06)}}Captain's Council DecisionsDDriverAApproverCContributorIInformedCaptainQuartermasterNavigatorBosunRaid PlanningChoose the next prizeApproverContributorDriverInformedSet the attack headingContributorDriverApproverDivide the boarding partiesApproverContributorDriverProvisioningRation the grogDriverApproverContributorRestock the powderApproverDriverInformed
raci Captain's Council Decisions
roles
  Captain
  Quartermaster
  Navigator
  Bosun

[Raid Planning]
  Choose the next prize
    Navigator: D
    Captain: A
    Quartermaster: C
    Bosun: I
  Set the attack heading
    Navigator: D A
    Captain: C
  Divide the boarding parties
    Bosun: D
    Captain: A
    Quartermaster: C

[Provisioning]
  Ration the grog
    Quartermaster: D A
    Bosun: C
  Restock the powder
    Quartermaster: D
    Captain: A
    Bosun: I

Gantt Chart

.gantt-task:hover{filter:saturate(1.4) brightness(1.06)}.gantt-task{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.gantt-task[data-group="Preparation"]:hover) .gantt-task[data-group="Preparation"]{filter:saturate(1.4) brightness(1.06)}svg:has(.gantt-task[data-group="Blockade"]:hover) .gantt-task[data-group="Blockade"]{filter:saturate(1.4) brightness(1.06)}svg:has(.gantt-task[data-group="Resolution"]:hover) .gantt-task[data-group="Resolution"]{filter:saturate(1.4) brightness(1.06)}}May 1May 1May 8May 8May 15May 15May 22May 22Blockade ActiveRansom DeadlineTodayPreparation 100%Provision ShipScout HarborRecruit HandsAnchor FleetPosition CannonsBlockade 82%Seize MerchantsPatrol PerimeterDemand MedicineHold HostagesThreaten ExecutionsResolutionReceive RansomBurn EvidenceRelease PrisonersBlackbeard's Blockade — 1718RoleCommandCrewCaptiv…Group by Role▼ Preparation 100% Provision Ship Scout Harbor Recruit Hands Anchor Fleet Position Cannons▼ Blockade 82% Seize Merchants Patrol Perimeter Demand Medicine Hold Hostages Threaten Executions▼ Resolution Receive Ransom Burn Evidence Release Prisoners Set Sail
.gantt-task:hover{filter:saturate(1.4) brightness(1.06)}.gantt-task{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.gantt-task[data-group="Preparation"]:hover) .gantt-task[data-group="Preparation"]{filter:saturate(1.4) brightness(1.06)}svg:has(.gantt-task[data-group="Blockade"]:hover) .gantt-task[data-group="Blockade"]{filter:saturate(1.4) brightness(1.06)}svg:has(.gantt-task[data-group="Resolution"]:hover) .gantt-task[data-group="Resolution"]{filter:saturate(1.4) brightness(1.06)}}May 1May 1May 8May 8May 15May 15May 22May 22Blockade ActiveRansom DeadlineTodayPreparation 100%Provision ShipScout HarborRecruit HandsAnchor FleetPosition CannonsBlockade 82%Seize MerchantsPatrol PerimeterDemand MedicineHold HostagesThreaten ExecutionsResolutionReceive RansomBurn EvidenceRelease PrisonersBlackbeard's Blockade — 1718RoleCommandCrewCaptiv…Group by Role▼ Preparation 100% Provision Ship Scout Harbor Recruit Hands Anchor Fleet Position Cannons▼ Blockade 82% Seize Merchants Patrol Perimeter Demand Medicine Hold Hostages Threaten Executions▼ Resolution Receive Ransom Burn Evidence Release Prisoners Set Sail
gantt Blackbeard's Blockade  1718

start 1718-05-01
today-marker 1718-05-15

tag Role as r
  Command red
  Crew blue
  Captives orange

marker 1718-05-14 Ransom Deadline red
era 1718-05-08 -> 1718-05-17 Blockade Active blue

[Preparation] r: Command
  Provision Ship 3d r: Crew, progress: 100
    -> Anchor Fleet 2d r: Crew, progress: 100
  Scout Harbor 3d r: Crew, progress: 100
    -> Position Cannons 3d r: Crew, progress: 100
  Recruit Hands 5d r: Crew, progress: 100

+7d [Blockade] r: Crew
  Seize Merchants 4d progress: 100
    -> Hold Hostages 5d r: Captives, progress: 60
  Patrol Perimeter 9d progress: 75
  Demand Medicine 4d r: Command, progress: 100
    -> Threaten Executions 3d? r: Command, progress: 90

+17d [Resolution] r: Command
  Receive Ransom 2d r: Captives
    -> Release Prisoners 1d r: Captives
      -> Set Sail 0d
  Burn Evidence 2d r: Crew

Kanban Board

@media (hover:hover){svg:has(.kanban-column:hover) .kanban-column:not(:hover){opacity:0.4}}Crew TasksPriorityLowMediumHighCriticalBacklog2Repair the foretops'lPriority: LowWatch: MorningMend after the last stormReinforce the gunwalesPriority: MediumWatch: AfternoonIn Progress2Caulk the hull seamsPriority: HighWatch: AfternoonHold has been taking waterRestock powder kegsPriority: HighWatch: MorningLast batch ran dampBlocked1Find a new sailmakerPriority: CriticalWatch: MorningOld one took ill at last portDone2Inventory the holdPriority: MediumWatch: NightSharpen the cutlassesPriority: LowWatch: Night
@media (hover:hover){svg:has(.kanban-column:hover) .kanban-column:not(:hover){opacity:0.4}}Crew TasksPriorityLowMediumHighCriticalBacklog2Repair the foretops'lPriority: LowWatch: MorningMend after the last stormReinforce the gunwalesPriority: MediumWatch: AfternoonIn Progress2Caulk the hull seamsPriority: HighWatch: AfternoonHold has been taking waterRestock powder kegsPriority: HighWatch: MorningLast batch ran dampBlocked1Find a new sailmakerPriority: CriticalWatch: MorningOld one took ill at last portDone2Inventory the holdPriority: MediumWatch: NightSharpen the cutlassesPriority: LowWatch: Night
kanban Crew Tasks

tag Priority as p
  Low blue
  Medium yellow
  High orange
  Critical red

tag Watch as w
  Morning green
  Afternoon yellow
  Night purple

[Backlog] blue
  Repair the foretops'l p: Low, w: Morning
    Mend after the last storm
  Reinforce the gunwales p: Medium, w: Afternoon

[In Progress] yellow
  Caulk the hull seams p: High, w: Afternoon
    Hold has been taking water
  Restock powder kegs p: High, w: Morning
    Last batch ran damp

[Blocked] red
  Find a new sailmaker p: Critical, w: Morning
    Old one took ill at last port

[Done] green
  Inventory the hold p: Medium, w: Night
  Sharpen the cutlasses p: Low, w: Night

PERT

.pert-node:hover{filter:saturate(1.4) brightness(1.06)}.pert-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.pert-node[data-activity-id="voyage approved"]:hover) .pert-edge:not([data-source="voyage approved"]):not([data-target="voyage approved"]){opacity:0.4}svg:has(.pert-node[data-activity-id="recruit crew"]:hover) .pert-edge:not([data-source="recruit crew"]):not([data-target="recruit crew"]){opacity:0.4}svg:has(.pert-node[data-activity-id="careen hull"]:hover) .pert-edge:not([data-source="careen hull"]):not([data-target="careen hull"]){opacity:0.4}svg:has(.pert-node[data-activity-id="load powder"]:hover) .pert-edge:not([data-source="load powder"]):not([data-target="load powder"]){opacity:0.4}svg:has(.pert-node[data-activity-id="sail to atoll"]:hover) .pert-edge:not([data-source="sail to atoll"]):not([data-target="sail to atoll"]){opacity:0.4}svg:has(.pert-node[data-activity-id="count gold"]:hover) .pert-edge:not([data-source="count gold"]):not([data-target="count gold"]){opacity:0.4}svg:has(.pert-node[data-activity-id="repair hull"]:hover) .pert-edge:not([data-source="repair hull"]):not([data-target="repair hull"]){opacity:0.4}svg:has(.pert-node[data-activity-id="divvy shares"]:hover) .pert-edge:not([data-source="divvy shares"]):not([data-target="divvy shares"]){opacity:0.4}}Pirate Voyage to the Atolloutfit ship0w◆ voyage approved0w2.17w2.17wrecruit crew0w0w2.17w0w1.94w1.94wcareen hull0.23w0.23w2.17w2.17w1.08w3.25wload powder2.17w0w3.25w3.25w6.46w9.71wsail to atoll3.25w0w9.71w9.71w2w11.71wcount gold11.58w1.88w13.58w9.71w3.88w13.58wrepair hull9.71w0w13.58w13.58w2w15.58wdivvy shares13.58w0w15.58wActivity Risksail to atoll−2.71+8.54repair hull−1.63+5.13careen hull+2.33recruit crew−0.23+1.83divvy shares−1+1load powder−0.58+0.92Expected duration: 15.6 weeks (± 2.28 weeks)0%25%50%75%100%Probability of completion.pert-scurve-percentile-verbose{opacity:0;pointer-events:none}.pert-scurve-percentile:hover .pert-scurve-percentile-label{opacity:0}.pert-scurve-percentile:hover .pert-scurve-percentile-verbose{opacity:1}P50 · 15.5w50% chance within 15.5wP80 · 17.5w80% chance within 17.5wP95 · 19.7w95% chance within 19.7w13.6w15w16.4w19.2w20.5w
.pert-node:hover{filter:saturate(1.4) brightness(1.06)}.pert-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.pert-node[data-activity-id="voyage approved"]:hover) .pert-edge:not([data-source="voyage approved"]):not([data-target="voyage approved"]){opacity:0.4}svg:has(.pert-node[data-activity-id="recruit crew"]:hover) .pert-edge:not([data-source="recruit crew"]):not([data-target="recruit crew"]){opacity:0.4}svg:has(.pert-node[data-activity-id="careen hull"]:hover) .pert-edge:not([data-source="careen hull"]):not([data-target="careen hull"]){opacity:0.4}svg:has(.pert-node[data-activity-id="load powder"]:hover) .pert-edge:not([data-source="load powder"]):not([data-target="load powder"]){opacity:0.4}svg:has(.pert-node[data-activity-id="sail to atoll"]:hover) .pert-edge:not([data-source="sail to atoll"]):not([data-target="sail to atoll"]){opacity:0.4}svg:has(.pert-node[data-activity-id="count gold"]:hover) .pert-edge:not([data-source="count gold"]):not([data-target="count gold"]){opacity:0.4}svg:has(.pert-node[data-activity-id="repair hull"]:hover) .pert-edge:not([data-source="repair hull"]):not([data-target="repair hull"]){opacity:0.4}svg:has(.pert-node[data-activity-id="divvy shares"]:hover) .pert-edge:not([data-source="divvy shares"]):not([data-target="divvy shares"]){opacity:0.4}}Pirate Voyage to the Atolloutfit ship0w◆ voyage approved0w2.17w2.17wrecruit crew0w0w2.17w0w1.94w1.94wcareen hull0.23w0.23w2.17w2.17w1.08w3.25wload powder2.17w0w3.25w3.25w6.46w9.71wsail to atoll3.25w0w9.71w9.71w2w11.71wcount gold11.58w1.88w13.58w9.71w3.88w13.58wrepair hull9.71w0w13.58w13.58w2w15.58wdivvy shares13.58w0w15.58wActivity Risksail to atoll−2.71+8.54repair hull−1.63+5.13careen hull+2.33recruit crew−0.23+1.83divvy shares−1+1load powder−0.58+0.92Expected duration: 15.6 weeks (± 2.28 weeks)0%25%50%75%100%Probability of completion.pert-scurve-percentile-verbose{opacity:0;pointer-events:none}.pert-scurve-percentile:hover .pert-scurve-percentile-label{opacity:0}.pert-scurve-percentile:hover .pert-scurve-percentile-verbose{opacity:1}P50 · 15.5w50% chance within 15.5wP80 · 17.5w80% chance within 17.5wP95 · 19.7w95% chance within 19.7w13.6w15w16.4w19.2w20.5w
pert Pirate Voyage to the Atoll
time-unit w
default-confidence medium

voyage approved 0
  -> recruit crew

[outfit ship]
  recruit crew 1 2 4 as rc
    -> load powder
  careen hull 1.5
    -> load powder
  load powder 0.5 1 2
    -> sail to atoll

sail to atoll 5
  -> count gold
  -> repair hull

count gold 1 2 3
  -> divvy shares

repair hull 3
  -> divvy shares

divvy shares 1 2 3

RACI Matrix

[data-role-id]:hover{filter:saturate(1.4) brightness(1.06)}[data-role-id]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-role-id][data-role-id="cap"]:hover) [data-role-id][data-role-id="cap"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="qm"]:hover) [data-role-id][data-role-id="qm"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="bos"]:hover) [data-role-id][data-role-id="bos"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="nav"]:hover) [data-role-id][data-role-id="nav"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="crew"]:hover) [data-role-id][data-role-id="crew"]{filter:saturate(1.4) brightness(1.06)}}Voyage OperationsRResponsibleAAccountableCConsultedIInformedCapQMBosNavCrewDeparturePlot the courseAccountableConsultedResponsibleProvision the holdConsultedRAInformedAt SeaStand the watchAccountableResponsibleMend sail damageAccountableResponsibleLandfallNegotiate with portRAConsultedInventory the takeRAInformed
[data-role-id]:hover{filter:saturate(1.4) brightness(1.06)}[data-role-id]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-role-id][data-role-id="cap"]:hover) [data-role-id][data-role-id="cap"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="qm"]:hover) [data-role-id][data-role-id="qm"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="bos"]:hover) [data-role-id][data-role-id="bos"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="nav"]:hover) [data-role-id][data-role-id="nav"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="crew"]:hover) [data-role-id][data-role-id="crew"]{filter:saturate(1.4) brightness(1.06)}}Voyage OperationsRResponsibleAAccountableCConsultedIInformedCapQMBosNavCrewDeparturePlot the courseAccountableConsultedResponsibleProvision the holdConsultedRAInformedAt SeaStand the watchAccountableResponsibleMend sail damageAccountableResponsibleLandfallNegotiate with portRAConsultedInventory the takeRAInformed
raci Voyage Operations
roles
  Cap  red
  QM orange
  Bos  yellow
  Nav  blue
  Crew gray

[Departure] teal
  Plot the course
    Cap: A
    Nav: R
    QM: C
  Provision the hold
    QM: A R
    Cap: C
    Crew: I

[At Sea] purple
  Stand the watch
    Bos: A
    Crew: R
  Mend sail damage
    Bos: A
    Crew: R

[Landfall] green
  Negotiate with port
    Cap: R A
    QM: C
  Inventory the take
    QM: A R
    Crew: I

RASCI

[data-role-id]:hover{filter:saturate(1.4) brightness(1.06)}[data-role-id]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-role-id][data-role-id="cap"]:hover) [data-role-id][data-role-id="cap"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="qm"]:hover) [data-role-id][data-role-id="qm"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="bos"]:hover) [data-role-id][data-role-id="bos"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="nav"]:hover) [data-role-id][data-role-id="nav"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="gun"]:hover) [data-role-id][data-role-id="gun"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="crew"]:hover) [data-role-id][data-role-id="crew"]{filter:saturate(1.4) brightness(1.06)}}Crew Responsibilities — Boarding RaidRResponsibleAAccountableSSupportCConsultedIInformedCapQMBosNavGunCrewApproachSpot the prizeAccountableSupportResponsibleInformedClose the distanceConsultedSupportRABoardingFire a warning shotConsultedRASupportSwing the grappling linesInformedRASupportStorm the deckAccountableResponsibleSupportSupportPlunderSecure the captivesAccountableSupportResponsibleTally the takeConsultedRASupport
[data-role-id]:hover{filter:saturate(1.4) brightness(1.06)}[data-role-id]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-role-id][data-role-id="cap"]:hover) [data-role-id][data-role-id="cap"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="qm"]:hover) [data-role-id][data-role-id="qm"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="bos"]:hover) [data-role-id][data-role-id="bos"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="nav"]:hover) [data-role-id][data-role-id="nav"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="gun"]:hover) [data-role-id][data-role-id="gun"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-role-id][data-role-id="crew"]:hover) [data-role-id][data-role-id="crew"]{filter:saturate(1.4) brightness(1.06)}}Crew Responsibilities — Boarding RaidRResponsibleAAccountableSSupportCConsultedIInformedCapQMBosNavGunCrewApproachSpot the prizeAccountableSupportResponsibleInformedClose the distanceConsultedSupportRABoardingFire a warning shotConsultedRASupportSwing the grappling linesInformedRASupportStorm the deckAccountableResponsibleSupportSupportPlunderSecure the captivesAccountableSupportResponsibleTally the takeConsultedRASupport
raci Crew Responsibilities  Boarding Raid
roles
  Cap  red
  QM   orange
  Bos  yellow
  Nav  blue
  Gun  purple
  Crew gray

[Approach] teal
  Spot the prize
    Cap: A
    Nav: R
    Bos: S
    Crew: I
  Close the distance
    Nav: A R
    Cap: C
    Bos: S

[Boarding] purple
  Fire a warning shot
    Gun: A R
    Cap: C
    Crew: S
  Swing the grappling lines
    Bos: A R
    Crew: S
    Cap: I
  Storm the deck
    Cap: A
    Bos: R
    Crew: S
    Gun: S

[Plunder] green
  Secure the captives
    QM: A
    Crew: R
    Bos: S
  Tally the take
    QM: A R
    Cap: C
    Crew: S

Timeline

.tl-event:hover{filter:saturate(1.4) brightness(1.06)}.tl-event{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.tl-event[data-group="Blackbeard"]:hover) .tl-event[data-group="Blackbeard"]{filter:saturate(1.4) brightness(1.06)}svg:has(.tl-event[data-group="Bonnet"]:hover) .tl-event[data-group="Bonnet"]{filter:saturate(1.4) brightness(1.06)}svg:has(.tl-event[data-group="Royal Navy"]:hover) .tl-event[data-group="Royal Navy"]{filter:saturate(1.4) brightness(1.06)}}Golden Age PeakRoyal Navy ResponseRogers Arrives NassauJan 1717Jan 17171718171817191719Mar 1719Mar 1719▼ Blackbeard Blockade of Charles Town Queen Anne's Revenge captured Carolina Coast raids Last stand at Ocracoke▼ Bonnet First cruise Revenge refitted Cape Fear pursuit Trial and hanging▼ Royal Navy Fleet assembles Nassau secured Sweep operationsPirate Campaigns 1717-1719
.tl-event:hover{filter:saturate(1.4) brightness(1.06)}.tl-event{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.tl-event[data-group="Blackbeard"]:hover) .tl-event[data-group="Blackbeard"]{filter:saturate(1.4) brightness(1.06)}svg:has(.tl-event[data-group="Bonnet"]:hover) .tl-event[data-group="Bonnet"]{filter:saturate(1.4) brightness(1.06)}svg:has(.tl-event[data-group="Royal Navy"]:hover) .tl-event[data-group="Royal Navy"]{filter:saturate(1.4) brightness(1.06)}}Golden Age PeakRoyal Navy ResponseRogers Arrives NassauJan 1717Jan 17171718171817191719Mar 1719Mar 1719▼ Blackbeard Blockade of Charles Town Queen Anne's Revenge captured Carolina Coast raids Last stand at Ocracoke▼ Bonnet First cruise Revenge refitted Cape Fear pursuit Trial and hanging▼ Royal Navy Fleet assembles Nassau secured Sweep operationsPirate Campaigns 1717-1719
timeline Pirate Campaigns 1717-1719

era 1717-01 -> 1717-12 Golden Age Peak
era 1718-01 -> 1718-12 Royal Navy Response
marker 1718-05 Rogers Arrives Nassau

[Blackbeard]
  1717-03 -> 1717-09 Blockade of Charles Town
  1717-11 Queen Anne's Revenge captured
  1718-01 -> 1718-06 Carolina Coast raids
  1718-11 Last stand at Ocracoke

[Bonnet]
  1717-06 -> 1717-10 First cruise
  1718-03 -> 1718-07 Revenge refitted
  1718-08 -> 1718-10 Cape Fear pursuit
  1718-12 Trial and hanging

[Royal Navy]
  1718-02 -> 1718-06 Fleet assembles
  1718-07 -> 1718-09 Nassau secured
  1718-10 -> 1719-03 Sweep operations

Software

Boxes and Lines

.bl-node:hover{filter:saturate(1.4) brightness(1.06)}.bl-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.bl-node[data-node-id="Flagship"]:hover) .bl-edge-group:not([data-from="Flagship"]):not([data-to="Flagship"]){opacity:0.4}svg:has(.bl-node[data-node-id="FortCannon"]:hover) .bl-edge-group:not([data-from="FortCannon"]):not([data-to="FortCannon"]){opacity:0.4}svg:has(.bl-node[data-node-id="Watchtower"]:hover) .bl-edge-group:not([data-from="Watchtower"]):not([data-to="Watchtower"]){opacity:0.4}svg:has(.bl-node[data-node-id="SeaMines"]:hover) .bl-edge-group:not([data-from="SeaMines"]):not([data-to="SeaMines"]){opacity:0.4}svg:has(.bl-node[data-node-id="IntelNetwork"]:hover) .bl-edge-group:not([data-from="IntelNetwork"]):not([data-to="IntelNetwork"]){opacity:0.4}svg:has(.bl-node[data-node-id="SpyRing"]:hover) .bl-edge-group:not([data-from="SpyRing"]):not([data-to="SpyRing"]){opacity:0.4}svg:has(.bl-node[data-node-id="SignalFlags"]:hover) .bl-edge-group:not([data-from="SignalFlags"]):not([data-to="SignalFlags"]){opacity:0.4}}Pirate Fleet CommandHarbor DefensesFlagshipCrew: 120Fort CannonCrew: 40WatchtowerCrew: 12Sea MinesCrew: 6Intel NetworkCrew: 35Spy RingCrew: 18Signal FlagsCrew: 8StatusOperationalDamagedSunkBuildingCrew
.bl-node:hover{filter:saturate(1.4) brightness(1.06)}.bl-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.bl-node[data-node-id="Flagship"]:hover) .bl-edge-group:not([data-from="Flagship"]):not([data-to="Flagship"]){opacity:0.4}svg:has(.bl-node[data-node-id="FortCannon"]:hover) .bl-edge-group:not([data-from="FortCannon"]):not([data-to="FortCannon"]){opacity:0.4}svg:has(.bl-node[data-node-id="Watchtower"]:hover) .bl-edge-group:not([data-from="Watchtower"]):not([data-to="Watchtower"]){opacity:0.4}svg:has(.bl-node[data-node-id="SeaMines"]:hover) .bl-edge-group:not([data-from="SeaMines"]):not([data-to="SeaMines"]){opacity:0.4}svg:has(.bl-node[data-node-id="IntelNetwork"]:hover) .bl-edge-group:not([data-from="IntelNetwork"]):not([data-to="IntelNetwork"]){opacity:0.4}svg:has(.bl-node[data-node-id="SpyRing"]:hover) .bl-edge-group:not([data-from="SpyRing"]):not([data-to="SpyRing"]){opacity:0.4}svg:has(.bl-node[data-node-id="SignalFlags"]:hover) .bl-edge-group:not([data-from="SignalFlags"]):not([data-to="SignalFlags"]){opacity:0.4}}Pirate Fleet CommandHarbor DefensesFlagshipCrew: 120Fort CannonCrew: 40WatchtowerCrew: 12Sea MinesCrew: 6Intel NetworkCrew: 35Spy RingCrew: 18Signal FlagsCrew: 8StatusOperationalDamagedSunkBuildingCrew
boxes-and-lines Pirate Fleet Command

tag Status as s
  Operational green
  Damaged orange
  Sunk red
  Building blue default

heat Crew red green
show-values
active-tag Status

Flagship s: Operational, heat: 120
  -> [Harbor Defenses]
  -> IntelNetwork

[Harbor Defenses]
  FortCannon s: Operational, heat: 40
    -> Watchtower
  Watchtower s: Operational, heat: 12
  SeaMines s: Building, heat: 6

IntelNetwork s: Operational, heat: 35
  -> SpyRing
  -> SignalFlags

SpyRing s: Operational, heat: 18
  -> [Harbor Defenses]

SignalFlags s: Damaged, heat: 8

C4 Architecture

.c4-card:hover{filter:saturate(1.4) brightness(1.06)}.c4-card{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.c4-card[data-node-id="Captain"]:hover) .c4-edge-group:not([data-source="Captain"]):not([data-target="Captain"]){opacity:0.4}svg:has(.c4-card[data-node-id="TreasureMap"]:hover) .c4-edge-group:not([data-source="TreasureMap"]):not([data-target="TreasureMap"]){opacity:0.4}svg:has(.c4-card[data-node-id="Lookout"]:hover) .c4-edge-group:not([data-source="Lookout"]):not([data-target="Lookout"]){opacity:0.4}}Pirate Treasure Map SystemViews treasure locationsSends raid alerts [carrier pigeon]Relays sightings to«person»CaptainCommands the fleetand plans raids«system»TreasureMapTracks buried treasurelocations and raidintelligence«system»LookoutCrow's nest spotter onallied shipsScopeCrewExternal
.c4-card:hover{filter:saturate(1.4) brightness(1.06)}.c4-card{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.c4-card[data-node-id="Captain"]:hover) .c4-edge-group:not([data-source="Captain"]):not([data-target="Captain"]){opacity:0.4}svg:has(.c4-card[data-node-id="TreasureMap"]:hover) .c4-edge-group:not([data-source="TreasureMap"]):not([data-target="TreasureMap"]){opacity:0.4}svg:has(.c4-card[data-node-id="Lookout"]:hover) .c4-edge-group:not([data-source="Lookout"]):not([data-target="Lookout"]){opacity:0.4}}Pirate Treasure Map SystemViews treasure locationsSends raid alerts [carrier pigeon]Relays sightings to«person»CaptainCommands the fleetand plans raids«system»TreasureMapTracks buried treasurelocations and raidintelligence«system»LookoutCrow's nest spotter onallied shipsScopeCrewExternal
c4 Pirate Treasure Map System
solid-fill

tag Scope as sc
  Crew blue
  External gray

Captain is a person description: Commands the fleet and plans raids

TreasureMap is a system description: Tracks buried treasure locations and raid intelligence
  -Views treasure locations-> Captain
  -Sends raid alerts [carrier pigeon]-> Lookout

  containers
    ChartRoom is a container description: Interactive sea chart with treasure markers, tech: Parchment
      -Queries treasure data [secret code]-> Vault

    Vault is a container description: Encrypted treasure ledger and coordinates, tech: Iron Chest
      -Reads/writes [quill and ink]-> TreasureLog

    TreasureLog is a container description: "Stores locations, guard counts, and loot inventories", tech: Leather-Bound Tome

Lookout is an external description: Crow's nest spotter on allied ships, sc: External
  ~Relays sightings to~> Captain

deployment
  Flagship
    container ChartRoom
    container Vault
  SecretCave
    container TreasureLog

Class Diagram

.cd-class:hover{filter:saturate(1.4) brightness(1.06)}.cd-class{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.cd-class[data-node-id="vessel"]:hover) .cd-edge-group:not([data-source="vessel"]):not([data-target="vessel"]){opacity:0.4}svg:has(.cd-class[data-node-id="ship"]:hover) .cd-edge-group:not([data-source="ship"]):not([data-target="ship"]){opacity:0.4}svg:has(.cd-class[data-node-id="galleon"]:hover) .cd-edge-group:not([data-source="galleon"]):not([data-target="galleon"]){opacity:0.4}svg:has(.cd-class[data-node-id="sloop"]:hover) .cd-edge-group:not([data-source="sloop"]):not([data-target="sloop"]){opacity:0.4}svg:has(.cd-class[data-node-id="shiptype"]:hover) .cd-edge-group:not([data-source="shiptype"]):not([data-target="shiptype"]){opacity:0.4}}Ship Class HierarchyTypeClassAbstractInterfaceEnumhas type«interface»Vessel+ sail(): void+ anchor(): void«abstract»Ship# name: string# crew: number+ getName(): stringGalleon- cannons: number+ fire(): voidSloop- speed: number+ flee(): void«enum»ShipTypeGalleonSloopFrigate
.cd-class:hover{filter:saturate(1.4) brightness(1.06)}.cd-class{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.cd-class[data-node-id="vessel"]:hover) .cd-edge-group:not([data-source="vessel"]):not([data-target="vessel"]){opacity:0.4}svg:has(.cd-class[data-node-id="ship"]:hover) .cd-edge-group:not([data-source="ship"]):not([data-target="ship"]){opacity:0.4}svg:has(.cd-class[data-node-id="galleon"]:hover) .cd-edge-group:not([data-source="galleon"]):not([data-target="galleon"]){opacity:0.4}svg:has(.cd-class[data-node-id="sloop"]:hover) .cd-edge-group:not([data-source="sloop"]):not([data-target="sloop"]){opacity:0.4}svg:has(.cd-class[data-node-id="shiptype"]:hover) .cd-edge-group:not([data-source="shiptype"]):not([data-target="shiptype"]){opacity:0.4}}Ship Class HierarchyTypeClassAbstractInterfaceEnumhas type«interface»Vessel+ sail(): void+ anchor(): void«abstract»Ship# name: string# crew: number+ getName(): stringGalleon- cannons: number+ fire(): voidSloop- speed: number+ flee(): void«enum»ShipTypeGalleonSloopFrigate
class Ship Class Hierarchy

solid-fill 

interface Vessel
  + sail(): void
  + anchor(): void

abstract Ship implements Vessel
  # name: string
  # crew: number
  + getName(): string

Galleon extends Ship
  - cannons: number
  + fire(): void

Sloop extends Ship
  - speed: number
  + flee(): void

enum ShipType
  Galleon
  Sloop
  Frigate

Ship
  -> ShipType has type

Entity Relationship

.er-table:hover{filter:saturate(1.4) brightness(1.06)}.er-table{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.er-table[data-node-id="ships"]:hover) .er-edge-group:not([data-source="ships"]):not([data-target="ships"]){opacity:0.4}svg:has(.er-table[data-node-id="crew_members"]:hover) .er-edge-group:not([data-source="crew_members"]):not([data-target="crew_members"]){opacity:0.4}svg:has(.er-table[data-node-id="captains"]:hover) .er-edge-group:not([data-source="captains"]):not([data-target="captains"]){opacity:0.4}svg:has(.er-table[data-node-id="treasure"]:hover) .er-edge-group:not([data-source="treasure"]):not([data-target="treasure"]){opacity:0.4}svg:has(.er-table[data-node-id="ports"]:hover) .er-edge-group:not([data-source="ports"]):not([data-target="ports"]){opacity:0.4}}Pirate Fleetaboardcarriesfrequentshasdocksshipsid: intname: varcharship_type: varcharcannons: intcrew_membersid: intname: varcharship_id: introle: varcharcaptainsid: intname: varcharship_id: intbounty: inttreasureid: intname: varcharvalue: intportsid: intname: varcharregion: varcharRoleCore entityDependent
.er-table:hover{filter:saturate(1.4) brightness(1.06)}.er-table{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.er-table[data-node-id="ships"]:hover) .er-edge-group:not([data-source="ships"]):not([data-target="ships"]){opacity:0.4}svg:has(.er-table[data-node-id="crew_members"]:hover) .er-edge-group:not([data-source="crew_members"]):not([data-target="crew_members"]){opacity:0.4}svg:has(.er-table[data-node-id="captains"]:hover) .er-edge-group:not([data-source="captains"]):not([data-target="captains"]){opacity:0.4}svg:has(.er-table[data-node-id="treasure"]:hover) .er-edge-group:not([data-source="treasure"]):not([data-target="treasure"]){opacity:0.4}svg:has(.er-table[data-node-id="ports"]:hover) .er-edge-group:not([data-source="ports"]):not([data-target="ports"]){opacity:0.4}}Pirate Fleetaboardcarriesfrequentshasdocksshipsid: intname: varcharship_type: varcharcannons: intcrew_membersid: intname: varcharship_id: introle: varcharcaptainsid: intname: varcharship_id: intbounty: inttreasureid: intname: varcharvalue: intportsid: intname: varcharregion: varcharRoleCore entityDependent
er Pirate Fleet

ships
  id int pk
  name varchar
  ship_type varchar
  cannons int
  1-aboard-* crew_members
  1-1 captains
  1-carries-* treasure

captains
  id int pk
  name varchar
  ship_id int fk
  bounty int
  ?-frequents-1 ports
  *-has-1 crew_members 

crew_members
  id int pk
  name varchar
  ship_id int fk
  role varchar nullable

treasure
  id int pk
  name varchar
  value int
  ship_id int fk, nullable

ports
  id int pk
  name varchar
  region varchar unique
  1-docks-* ships

Flowchart

.fc-node:hover{filter:saturate(1.4) brightness(1.06)}.fc-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.fc-node[data-node-id="terminal:weigh anchor"]:hover) .fc-edge-group:not([data-source="terminal:weigh anchor"]):not([data-target="terminal:weigh anchor"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:set sail"]:hover) .fc-edge-group:not([data-source="process:set sail"]):not([data-target="process:set sail"]){opacity:0.4}svg:has(.fc-node[data-node-id="decision:crew discontent?"]:hover) .fc-edge-group:not([data-source="decision:crew discontent?"]):not([data-target="decision:crew discontent?"]){opacity:0.4}svg:has(.fc-node[data-node-id="terminal:reach port"]:hover) .fc-edge-group:not([data-source="terminal:reach port"]):not([data-target="terminal:reach port"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:call a vote"]:hover) .fc-edge-group:not([data-source="process:call a vote"]):not([data-target="process:call a vote"]){opacity:0.4}svg:has(.fc-node[data-node-id="decision:vote outcome?"]:hover) .fc-edge-group:not([data-source="decision:vote outcome?"]):not([data-target="decision:vote outcome?"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:hold steady"]:hover) .fc-edge-group:not([data-source="process:hold steady"]):not([data-target="process:hold steady"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:seize the ship"]:hover) .fc-edge-group:not([data-source="process:seize the ship"]):not([data-target="process:seize the ship"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:maroon the captain"]:hover) .fc-edge-group:not([data-source="process:maroon the captain"]):not([data-target="process:maroon the captain"]){opacity:0.4}svg:has(.fc-node[data-node-id="terminal:elect new captain"]:hover) .fc-edge-group:not([data-source="terminal:elect new captain"]):not([data-target="terminal:elect new captain"]){opacity:0.4}}Mutiny ResolutionnoyesloyalmutinyWeigh AnchorSet SailCrew Discontent?Reach PortCall a VoteVote Outcome?Hold SteadySeize the ShipMaroon the CaptainElect New Captain
.fc-node:hover{filter:saturate(1.4) brightness(1.06)}.fc-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.fc-node[data-node-id="terminal:weigh anchor"]:hover) .fc-edge-group:not([data-source="terminal:weigh anchor"]):not([data-target="terminal:weigh anchor"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:set sail"]:hover) .fc-edge-group:not([data-source="process:set sail"]):not([data-target="process:set sail"]){opacity:0.4}svg:has(.fc-node[data-node-id="decision:crew discontent?"]:hover) .fc-edge-group:not([data-source="decision:crew discontent?"]):not([data-target="decision:crew discontent?"]){opacity:0.4}svg:has(.fc-node[data-node-id="terminal:reach port"]:hover) .fc-edge-group:not([data-source="terminal:reach port"]):not([data-target="terminal:reach port"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:call a vote"]:hover) .fc-edge-group:not([data-source="process:call a vote"]):not([data-target="process:call a vote"]){opacity:0.4}svg:has(.fc-node[data-node-id="decision:vote outcome?"]:hover) .fc-edge-group:not([data-source="decision:vote outcome?"]):not([data-target="decision:vote outcome?"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:hold steady"]:hover) .fc-edge-group:not([data-source="process:hold steady"]):not([data-target="process:hold steady"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:seize the ship"]:hover) .fc-edge-group:not([data-source="process:seize the ship"]):not([data-target="process:seize the ship"]){opacity:0.4}svg:has(.fc-node[data-node-id="process:maroon the captain"]:hover) .fc-edge-group:not([data-source="process:maroon the captain"]):not([data-target="process:maroon the captain"]){opacity:0.4}svg:has(.fc-node[data-node-id="terminal:elect new captain"]:hover) .fc-edge-group:not([data-source="terminal:elect new captain"]):not([data-target="terminal:elect new captain"]){opacity:0.4}}Mutiny ResolutionnoyesloyalmutinyWeigh AnchorSet SailCrew Discontent?Reach PortCall a VoteVote Outcome?Hold SteadySeize the ShipMaroon the CaptainElect New Captain
flowchart Mutiny Resolution
direction-tb

(Weigh Anchor) -> [Set Sail] -> <Crew Discontent?>
  -no-> (Reach Port)
  -yes-> [Call a Vote] -> <Vote Outcome?>
    -loyal-> [Hold Steady] -> (Reach Port)
    -mutiny-> [Seize the Ship] -> [Maroon the Captain] -> (Elect New Captain)

Infrastructure Diagram

.infra-node:hover{filter:saturate(1.4) brightness(1.06)}.infra-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.infra-node[data-infra-node="edge"]:hover) .infra-edge:not([data-from="edge"]):not([data-to="edge"]){opacity:0.4}svg:has(.infra-node[data-infra-node="signalflags"]:hover) .infra-edge:not([data-from="signalflags"]):not([data-to="signalflags"]){opacity:0.4}svg:has(.infra-node[data-infra-node="flagship"]:hover) .infra-edge:not([data-from="flagship"]):not([data-to="flagship"]){opacity:0.4}svg:has(.infra-node[data-infra-node="scoutship"]:hover) .infra-edge:not([data-from="scoutship"]):not([data-to="scoutship"]){opacity:0.4}svg:has(.infra-node[data-infra-node="carrierpigeons"]:hover) .infra-edge:not([data-from="carrierpigeons"]):not([data-to="carrierpigeons"]){opacity:0.4}svg:has(.infra-node[data-infra-node="tavernnetwork"]:hover) .infra-edge:not([data-from="tavernnetwork"]):not([data-to="tavernnetwork"]){opacity:0.4}svg:has(.infra-node[data-infra-node="rumrunner"]:hover) .infra-edge:not([data-from="rumrunner"]):not([data-to="rumrunner"]){opacity:0.4}}Allied Ports3xEdgeRPS: 200p90: 259243.0savailability: 2.3%SignalFlagsRPS: 200p90: 259243.0savailability: 2.3%FlagshipRPS: 200 / 50p90: 259205.0savailability: 2.9%ScoutShipRPS: 100 / 60p90: 259213.0savailability: 1.7%2xCarrierPigeonsRPS: 50p90: 86403.2savailability: 24.0%lag: 38 msg/soverflow: ~3sTavernNetworkRPS: 62 / 60p90: 86400.0savailability: 96.8%RumRunnerRPS: 50 / 0instances: 8.6M / 4p90: 259200.0savailability: 0.0%Pirate Communication NetworkFleetBlackbeardBonnyRackham
.infra-node:hover{filter:saturate(1.4) brightness(1.06)}.infra-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.infra-node[data-infra-node="edge"]:hover) .infra-edge:not([data-from="edge"]):not([data-to="edge"]){opacity:0.4}svg:has(.infra-node[data-infra-node="signalflags"]:hover) .infra-edge:not([data-from="signalflags"]):not([data-to="signalflags"]){opacity:0.4}svg:has(.infra-node[data-infra-node="flagship"]:hover) .infra-edge:not([data-from="flagship"]):not([data-to="flagship"]){opacity:0.4}svg:has(.infra-node[data-infra-node="scoutship"]:hover) .infra-edge:not([data-from="scoutship"]):not([data-to="scoutship"]){opacity:0.4}svg:has(.infra-node[data-infra-node="carrierpigeons"]:hover) .infra-edge:not([data-from="carrierpigeons"]):not([data-to="carrierpigeons"]){opacity:0.4}svg:has(.infra-node[data-infra-node="tavernnetwork"]:hover) .infra-edge:not([data-from="tavernnetwork"]):not([data-to="tavernnetwork"]){opacity:0.4}svg:has(.infra-node[data-infra-node="rumrunner"]:hover) .infra-edge:not([data-from="rumrunner"]):not([data-to="rumrunner"]){opacity:0.4}}Allied Ports3xEdgeRPS: 200p90: 259243.0savailability: 2.3%SignalFlagsRPS: 200p90: 259243.0savailability: 2.3%FlagshipRPS: 200 / 50p90: 259205.0savailability: 2.9%ScoutShipRPS: 100 / 60p90: 259213.0savailability: 1.7%2xCarrierPigeonsRPS: 50p90: 86403.2savailability: 24.0%lag: 38 msg/soverflow: ~3sTavernNetworkRPS: 62 / 60p90: 86400.0savailability: 96.8%RumRunnerRPS: 50 / 0instances: 8.6M / 4p90: 259200.0savailability: 0.0%Pirate Communication NetworkFleetBlackbeardBonnyRackham
infra Pirate Communication Network

tag Fleet as f
  Blackbeard red
  Bonny purple
  Rackham blue

Edge
  rps: 200
  -> SignalFlags

SignalFlags f: Blackbeard
  description: Flag semaphore relay  ship-to-ship messaging
  latency-ms: 30000
  -> Flagship
  -> ScoutShip

Flagship f: Blackbeard
  description: Command vessel  decrypts and routes all intelligence
  instances: 1
  max-rps: 50
  latency-ms: 5000
  -> CarrierPigeons
  -> RumRunner

ScoutShip f: Bonny
  description: Fast sloop for reconnaissance
  instances: 2
  max-rps: 30
  latency-ms: 8000
  -> Flagship

CarrierPigeons f: Rackham
  description: Long-range bird relay  messages to allied ports
  buffer: 100
  drain-rate: 12
  retention-hours: 72
  -> TavernNetwork

[Allied Ports]
  instances: 3

  TavernNetwork f: Rackham
    description: Dockside tavern informants across the Caribbean
    max-rps: 20
    latency-ms: 86400000

RumRunner f: Bonny
  description: Smuggler supply line  moves coded messages in rum barrels
  concurrency: 4
  duration-ms: 172800000
  -> TavernNetwork

Mindmap

.mindmap-node:hover{filter:saturate(1.4) brightness(1.06)}.mindmap-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.mindmap-node[data-tag-priority="high"]:hover) .mindmap-node[data-tag-priority="high"]{filter:saturate(1.4) brightness(1.06)}svg:has(.mindmap-node[data-tag-priority="low"]:hover) .mindmap-node[data-tag-priority="low"]{filter:saturate(1.4) brightness(1.06)}}Product StrategyProduct StrategyResearchUser InterviewsSurveysQuarterly NPS surveyFocus GroupsCompetitor AnalysisFeature MatrixPricing ReviewDevelopmentMVP FeaturesAuth SystemHandle login, signup,OAuth flowsDashboardGo-to-MarketLaunch PlanBlog PostDemo Video2-min productwalkthrough
.mindmap-node:hover{filter:saturate(1.4) brightness(1.06)}.mindmap-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.mindmap-node[data-tag-priority="high"]:hover) .mindmap-node[data-tag-priority="high"]{filter:saturate(1.4) brightness(1.06)}svg:has(.mindmap-node[data-tag-priority="low"]:hover) .mindmap-node[data-tag-priority="low"]{filter:saturate(1.4) brightness(1.06)}}Product StrategyProduct StrategyResearchUser InterviewsSurveysQuarterly NPS surveyFocus GroupsCompetitor AnalysisFeature MatrixPricing ReviewDevelopmentMVP FeaturesAuth SystemHandle login, signup,OAuth flowsDashboardGo-to-MarketLaunch PlanBlog PostDemo Video2-min productwalkthrough
mindmap Product Strategy

tag Priority as p
  High red
  Medium yellow
  Low green

tag Department as d
  Engineering blue
  Design purple
  Marketing orange

Research d: Marketing
  User Interviews p: High
    Surveys description: Quarterly NPS survey
    Focus Groups
  Competitor Analysis d: Engineering
    Feature Matrix
    Pricing Review
Development p: High, d: Engineering
  MVP Features
    Auth System
      description: Handle login, signup, OAuth flows
    Dashboard
  Nice-to-haves p: Low, collapsed: true
    Dark Mode
    Export PDF
Go-to-Market d: Marketing
  Launch Plan
    Blog Post
    Demo Video description: 2-min product walkthrough

Sequence Diagram

.participant:hover{filter:saturate(1.4) brightness(1.06)}.participant{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.participant[data-participant-id="User"]:hover) .message-arrow:not([data-from="User"]):not([data-to="User"]){opacity:0.4}svg:has(.participant[data-participant-id="WebApp"]:hover) .message-arrow:not([data-from="WebApp"]):not([data-to="WebApp"]){opacity:0.4}svg:has(.participant[data-participant-id="TreasureAPI"]:hover) .message-arrow:not([data-from="TreasureAPI"]):not([data-to="TreasureAPI"]){opacity:0.4}svg:has(.participant[data-participant-id="MapDB"]:hover) .message-arrow:not([data-from="MapDB"]):not([data-to="MapDB"]){opacity:0.4}svg:has(.participant[data-participant-id="NotifyQueue"]:hover) .message-arrow:not([data-from="NotifyQueue"]):not([data-to="NotifyQueue"]){opacity:0.4}}Treasure Hunt AppClick to collapseTreasure ServiceUserWebAppTreasureAPIMapDBNotifyQueueif chest availableelseSearch nearby lootGET /treasures?nearbyFind within 5nm3 resultslocationsShow treasure mapClaim chest #42POST /claimSet status = claimedOKtreasure.claimedClaim accepted500 doubloons earned!409 Already claimedToo slow, matey!check locationuse compassConcernSearchClaimsNotifications
.participant:hover{filter:saturate(1.4) brightness(1.06)}.participant{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.participant[data-participant-id="User"]:hover) .message-arrow:not([data-from="User"]):not([data-to="User"]){opacity:0.4}svg:has(.participant[data-participant-id="WebApp"]:hover) .message-arrow:not([data-from="WebApp"]):not([data-to="WebApp"]){opacity:0.4}svg:has(.participant[data-participant-id="TreasureAPI"]:hover) .message-arrow:not([data-from="TreasureAPI"]):not([data-to="TreasureAPI"]){opacity:0.4}svg:has(.participant[data-participant-id="MapDB"]:hover) .message-arrow:not([data-from="MapDB"]):not([data-to="MapDB"]){opacity:0.4}svg:has(.participant[data-participant-id="NotifyQueue"]:hover) .message-arrow:not([data-from="NotifyQueue"]):not([data-to="NotifyQueue"]){opacity:0.4}}Treasure Hunt AppClick to collapseTreasure ServiceUserWebAppTreasureAPIMapDBNotifyQueueif chest availableelseSearch nearby lootGET /treasures?nearbyFind within 5nm3 resultslocationsShow treasure mapClaim chest #42POST /claimSet status = claimedOKtreasure.claimedClaim accepted500 doubloons earned!409 Already claimedToo slow, matey!check locationuse compassConcernSearchClaimsNotifications
sequence Treasure Hunt App

tag Concern as c
  Search blue
  Claims green
  Notifications orange

User is an actor

[Treasure Service]
  TreasureAPI
  MapDB is a database
  NotifyQueue is a queue

User -Search nearby loot-> WebApp
WebApp -GET /treasures?nearby-> TreasureAPI c: Search
TreasureAPI -Find within 5nm-> MapDB c: Search
note
  - check location
  - use compass
MapDB -3 results-> TreasureAPI
TreasureAPI -locations-> WebApp
WebApp -Show treasure map-> User

== Claim ==

User -Claim chest #42-> WebApp
WebApp -POST /claim-> TreasureAPI c: Claims
if chest available
  TreasureAPI -Set status = claimed-> MapDB c: Claims
  MapDB -OK-> TreasureAPI
  TreasureAPI ~treasure.claimed~> NotifyQueue c: Notifications
  TreasureAPI -Claim accepted-> WebApp
  WebApp -500 doubloons earned!-> User
else
  TreasureAPI -409 Already claimed-> WebApp
  WebApp -Too slow, matey!-> User

Sitemap

.sitemap-node:hover{filter:saturate(1.4) brightness(1.06)}.sitemap-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.sitemap-node[data-node-id="node-1"]:hover) .sitemap-edge-group:not([data-from="node-1"]):not([data-to="node-1"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-2"]:hover) .sitemap-edge-group:not([data-from="node-2"]):not([data-to="node-2"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-3"]:hover) .sitemap-edge-group:not([data-from="node-3"]):not([data-to="node-3"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-4"]:hover) .sitemap-edge-group:not([data-from="node-4"]):not([data-to="node-4"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-5"]:hover) .sitemap-edge-group:not([data-from="node-5"]):not([data-to="node-5"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-6"]:hover) .sitemap-edge-group:not([data-from="node-6"]):not([data-to="node-6"]){opacity:0.4}}Pirate Bay Trading Co.Port MarketCrew QuartersshopjoinmapbuypurchasedenlistedvoyageHomeAccess:PublicPage:LandingShopAccess:PublicPage:ContentCheckoutAccess:Crew OnlyPage:FormEnlistAccess:PublicPage:FormShip LogAccess:Crew OnlyPage:ContentTreasure MapAccess:CaptainPage:ContentAccessPublicCrew OnlyCaptain
.sitemap-node:hover{filter:saturate(1.4) brightness(1.06)}.sitemap-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.sitemap-node[data-node-id="node-1"]:hover) .sitemap-edge-group:not([data-from="node-1"]):not([data-to="node-1"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-2"]:hover) .sitemap-edge-group:not([data-from="node-2"]):not([data-to="node-2"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-3"]:hover) .sitemap-edge-group:not([data-from="node-3"]):not([data-to="node-3"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-4"]:hover) .sitemap-edge-group:not([data-from="node-4"]):not([data-to="node-4"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-5"]:hover) .sitemap-edge-group:not([data-from="node-5"]):not([data-to="node-5"]){opacity:0.4}svg:has(.sitemap-node[data-node-id="node-6"]:hover) .sitemap-edge-group:not([data-from="node-6"]):not([data-to="node-6"]){opacity:0.4}}Pirate Bay Trading Co.Port MarketCrew QuartersshopjoinmapbuypurchasedenlistedvoyageHomeAccess:PublicPage:LandingShopAccess:PublicPage:ContentCheckoutAccess:Crew OnlyPage:FormEnlistAccess:PublicPage:FormShip LogAccess:Crew OnlyPage:ContentTreasure MapAccess:CaptainPage:ContentAccessPublicCrew OnlyCaptain
sitemap Pirate Bay Trading Co.

tag Access
  Public green
  Crew Only blue
  Captain red

tag Page
  Landing purple
  Form orange
  Content cyan 

Home Access: Public, Page: Landing
  -shop-> Shop
  -join-> Enlist
  -map-> Treasure Map
  -> [Port Market]

[Port Market]
  Shop Access: Public, Page: Content
    -buy-> Checkout

  Checkout Access: Crew Only, Page: Form
    -purchased-> Ship Log 

[Crew Quarters]
  Enlist Access: Public, Page: Form
    -enlisted-> Ship Log

  Ship Log Access: Crew Only, Page: Content
    -voyage-> Treasure Map

  Treasure Map Access: Captain, Page: Content

State Diagram

.st-node:hover{filter:saturate(1.4) brightness(1.06)}.st-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.st-node[data-node-id="pseudostate:[*]"]:hover) .st-edge-group:not([data-source="pseudostate:[*]"]):not([data-target="pseudostate:[*]"]){opacity:0.4}svg:has(.st-node[data-node-id="state:sailing"]:hover) .st-edge-group:not([data-source="state:sailing"]):not([data-target="state:sailing"]){opacity:0.4}svg:has(.st-node[data-node-id="state:battlestations"]:hover) .st-edge-group:not([data-source="state:battlestations"]):not([data-target="state:battlestations"]){opacity:0.4}svg:has(.st-node[data-node-id="state:engaging"]:hover) .st-edge-group:not([data-source="state:engaging"]):not([data-target="state:engaging"]){opacity:0.4}svg:has(.st-node[data-node-id="state:boarding"]:hover) .st-edge-group:not([data-source="state:boarding"]):not([data-target="state:boarding"]){opacity:0.4}svg:has(.st-node[data-node-id="state:sinking"]:hover) .st-edge-group:not([data-source="state:sinking"]):not([data-target="state:sinking"]){opacity:0.4}svg:has(.st-node[data-node-id="state:retreating"]:hover) .st-edge-group:not([data-source="state:retreating"]):not([data-target="state:retreating"]){opacity:0.4}svg:has(.st-node[data-node-id="state:victorious"]:hover) .st-edge-group:not([data-source="state:victorious"]):not([data-target="state:victorious"]){opacity:0.4}svg:has(.st-node[data-node-id="state:captured"]:hover) .st-edge-group:not([data-source="state:captured"]):not([data-target="state:captured"]){opacity:0.4}}Ship Battle LifecycleCombatenemy spottedin rangeenemy retreatsalongsidehull breachoutgunnedcrew winscrew losesloot takenescapedcaughtSailingBattleStationsEngagingBoardingSinkingRetreatingVictoriousCaptured
.st-node:hover{filter:saturate(1.4) brightness(1.06)}.st-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.st-node[data-node-id="pseudostate:[*]"]:hover) .st-edge-group:not([data-source="pseudostate:[*]"]):not([data-target="pseudostate:[*]"]){opacity:0.4}svg:has(.st-node[data-node-id="state:sailing"]:hover) .st-edge-group:not([data-source="state:sailing"]):not([data-target="state:sailing"]){opacity:0.4}svg:has(.st-node[data-node-id="state:battlestations"]:hover) .st-edge-group:not([data-source="state:battlestations"]):not([data-target="state:battlestations"]){opacity:0.4}svg:has(.st-node[data-node-id="state:engaging"]:hover) .st-edge-group:not([data-source="state:engaging"]):not([data-target="state:engaging"]){opacity:0.4}svg:has(.st-node[data-node-id="state:boarding"]:hover) .st-edge-group:not([data-source="state:boarding"]):not([data-target="state:boarding"]){opacity:0.4}svg:has(.st-node[data-node-id="state:sinking"]:hover) .st-edge-group:not([data-source="state:sinking"]):not([data-target="state:sinking"]){opacity:0.4}svg:has(.st-node[data-node-id="state:retreating"]:hover) .st-edge-group:not([data-source="state:retreating"]):not([data-target="state:retreating"]){opacity:0.4}svg:has(.st-node[data-node-id="state:victorious"]:hover) .st-edge-group:not([data-source="state:victorious"]):not([data-target="state:victorious"]){opacity:0.4}svg:has(.st-node[data-node-id="state:captured"]:hover) .st-edge-group:not([data-source="state:captured"]):not([data-target="state:captured"]){opacity:0.4}}Ship Battle LifecycleCombatenemy spottedin rangeenemy retreatsalongsidehull breachoutgunnedcrew winscrew losesloot takenescapedcaughtSailingBattleStationsEngagingBoardingSinkingRetreatingVictoriousCaptured
state Ship Battle Lifecycle
solid-fill

[*] -> Sailing

Sailing
  -enemy spotted-> BattleStations

BattleStations
  -in range-> Engaging
  -enemy retreats-> Sailing

[Combat]
  Engaging
    -alongside-> Boarding
    -hull breach-> Sinking
    -outgunned-> Retreating

  Boarding
    -crew wins-> Victorious
    -crew loses-> Captured

[Aftermath]
  Victorious
    -loot taken-> Sailing

  Retreating
    -escaped-> Sailing
    -caught-> Captured

Captured -> [*]
Sinking -> [*]

Version Control

[data-branch]:hover{filter:saturate(1.4) brightness(1.06)}[data-branch]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-branch][data-branch="main"]:hover) [data-branch][data-branch="main"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-branch][data-branch="develop"]:hover) [data-branch][data-branch="develop"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-branch][data-branch="feature/login"]:hover) [data-branch][data-branch="feature/login"]{filter:saturate(1.4) brightness(1.06)}}Feature Branch Workflowmaindevelopfeature/loginInitial commitAdd READMESet up CIAdd test suiteLogin formForm validation⇲ feature/loginAddress review notes⇲ developv1.0.0Hotfix typoHEAD
[data-branch]:hover{filter:saturate(1.4) brightness(1.06)}[data-branch]{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has([data-branch][data-branch="main"]:hover) [data-branch][data-branch="main"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-branch][data-branch="develop"]:hover) [data-branch][data-branch="develop"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-branch][data-branch="feature/login"]:hover) [data-branch][data-branch="feature/login"]{filter:saturate(1.4) brightness(1.06)}}Feature Branch Workflowmaindevelopfeature/loginInitial commitAdd READMESet up CIAdd test suiteLogin formForm validation⇲ feature/loginAddress review notes⇲ developv1.0.0Hotfix typoHEAD
version-control Feature Branch Workflow

main
  Initial commit
  Add README

develop from main
  Set up CI
  Add test suite

feature/login from develop
  Login form
  Form validation

develop
  merge feature/login
  Address review notes

main
  merge develop tag: v1.0.0
  Hotfix typo type: highlight

Wireframe

Pirate Crew PortalHEADERThe Jolly Roger Crew HubDashboardTreasure MapShip LogCrew RosterMAINAhoy, Captain!Next Raid TargetPort RoyalEstimated Loot5000 doubloonsThe RevengeLoad extra cannonsFly false colorsFull crewSkeleton crewSet Sail!Abort MissionNew to piracy? (Read the Code)
Pirate Crew PortalHEADERThe Jolly Roger Crew HubDashboardTreasure MapShip LogCrew RosterMAINAhoy, Captain!Next Raid TargetPort RoyalEstimated Loot5000 doubloonsThe RevengeLoad extra cannonsFly false colorsFull crewSkeleton crewSet Sail!Abort MissionNew to piracy? (Read the Code)
wireframe Pirate Crew Portal

[Header]
  The Jolly Roger Crew Hub
  nav
    Dashboard active
    Treasure Map
    Ship Log
    Crew Roster

[Main]
  # Ahoy, Captain!

  Next Raid Target  [Port Royal]
  Estimated Loot  [5000 doubloons] readonly

  {The Revenge | The Serpent | The Phantom}

  <x> Load extra cannons
  < > Fly false colors

  (*) Full crew
  ( ) Skeleton crew

  (Set Sail!)
  (Abort Mission) ghost

  ---

  New to piracy? (Read the Code) ghost

Event Line

.dgmo-event-dot:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-event-dot{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-event-dot[data-tag-track="product"]:hover) .dgmo-event-dot[data-tag-track="product"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-event-dot[data-tag-track="funding"]:hover) .dgmo-event-dot[data-tag-track="funding"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-event-dot[data-tag-track="growth"]:hover) .dgmo-event-dot[data-tag-track="growth"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="product"]:hover) .dgmo-event-dot[data-tag-track="product"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="funding"]:hover) .dgmo-event-dot[data-tag-track="funding"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="growth"]:hover) .dgmo-event-dot[data-tag-track="growth"]{filter:saturate(1.4) brightness(1.06)}}Product MilestonesTrackProductGrowthFundingIdea sketchedMar 2019A weekend prototype becomes areal plan.Private betaSep 2019First fifty users kick thetires.Seed roundJun 2020$2M raised to grow theteam.Public launchJan 2021Open to everyone, nowaitlist.100k usersNov 2021Word of mouth does the heavylifting.Series AApr 2023Expansion into new markets.1M usersAug 2024A milestone years in themaking.Series BTBDRaising when the metrics lineup — no date yet.Mobile appTBDOn the roadmap, not yetscheduled.Early DaysScaling UpGoing LongWhat's Next
.dgmo-event-dot:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-event-dot{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-event-dot[data-tag-track="product"]:hover) .dgmo-event-dot[data-tag-track="product"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-event-dot[data-tag-track="funding"]:hover) .dgmo-event-dot[data-tag-track="funding"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-event-dot[data-tag-track="growth"]:hover) .dgmo-event-dot[data-tag-track="growth"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="product"]:hover) .dgmo-event-dot[data-tag-track="product"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="funding"]:hover) .dgmo-event-dot[data-tag-track="funding"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="growth"]:hover) .dgmo-event-dot[data-tag-track="growth"]{filter:saturate(1.4) brightness(1.06)}}Product MilestonesTrackProductGrowthFundingIdea sketchedMar 2019A weekend prototype becomes areal plan.Private betaSep 2019First fifty users kick thetires.Seed roundJun 2020$2M raised to grow theteam.Public launchJan 2021Open to everyone, nowaitlist.100k usersNov 2021Word of mouth does the heavylifting.Series AApr 2023Expansion into new markets.1M usersAug 2024A milestone years in themaking.Series BTBDRaising when the metrics lineup — no date yet.Mobile appTBDOn the roadmap, not yetscheduled.Early DaysScaling UpGoing LongWhat's Next
event-line Product Milestones
//no-scale
no-box

tag Track as t
  Product blue
  Growth green
  Funding purple

[Early Days]
  2019-03 Idea sketched  t: Product
    A weekend prototype becomes a real plan.
  2019-09 Private beta  t: Product
    First fifty users kick the tires.

[Scaling Up]
  2020-06 Seed round  t: Funding
    **$2M** raised to grow the team.
  2021-01 Public launch  t: Product
    Open to everyone, no waitlist.
  2021-11 100k users  t: Growth
    Word of mouth does the heavy lifting.

[Going Long]
  2023-04 Series A  t: Funding
    Expansion into new markets.
  2024-08 1M users  t: Growth
    A milestone years in the making.

[What's Next]
  TBD Series B  t: Funding
    Raising when the metrics line up  no date yet.
  TBD Mobile app  t: Product
    On the roadmap, not yet scheduled.

Block

.dgmo-block-cell:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-block-cell{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-block-cell[data-tag-layer="Edge"]:hover) .dgmo-block-cell[data-tag-layer="Edge"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-block-cell[data-tag-layer="Service"]:hover) .dgmo-block-cell[data-tag-layer="Service"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-block-cell[data-tag-layer="Data"]:hover) .dgmo-block-cell[data-tag-layer="Data"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="edge"]:hover) .dgmo-block-cell[data-tag-layer="Edge"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="service"]:hover) .dgmo-block-cell[data-tag-layer="Service"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="data"]:hover) .dgmo-block-cell[data-tag-layer="Data"]{filter:saturate(1.4) brightness(1.06)}}Web Service ArchitectureClientsBrowserMobileCLIBackendAuthOrdersInventoryBillingDataLayerEdgeServiceData
.dgmo-block-cell:hover{filter:saturate(1.4) brightness(1.06)}.dgmo-block-cell{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.dgmo-block-cell[data-tag-layer="Edge"]:hover) .dgmo-block-cell[data-tag-layer="Edge"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-block-cell[data-tag-layer="Service"]:hover) .dgmo-block-cell[data-tag-layer="Service"]{filter:saturate(1.4) brightness(1.06)}svg:has(.dgmo-block-cell[data-tag-layer="Data"]:hover) .dgmo-block-cell[data-tag-layer="Data"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="edge"]:hover) .dgmo-block-cell[data-tag-layer="Edge"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="service"]:hover) .dgmo-block-cell[data-tag-layer="Service"]{filter:saturate(1.4) brightness(1.06)}svg:has([data-legend-entry="data"]:hover) .dgmo-block-cell[data-tag-layer="Data"]{filter:saturate(1.4) brightness(1.06)}}Web Service ArchitectureClientsBrowserMobileCLIBackendAuthOrdersInventoryBillingDataLayerEdgeServiceData
block Web Service Architecture

solid-fill

tag Layer as l
  Edge blue
  Service green
  Data orange

[Clients] l: Edge
  [Browser] [Mobile] [CLI]

[Backend] l: Service
  [Auth] [Orders]
  [Inventory] [Billing]

[Data] l: Data collapsed
  [Postgres] [Redis]

Sketch

.sk-node:hover{filter:saturate(1.4) brightness(1.06)}.sk-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.sk-node[data-node-id="sketch-node-1"]:hover) .sk-edge-group:not([data-from="sketch-node-1"]):not([data-to="sketch-node-1"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-2"]:hover) .sk-edge-group:not([data-from="sketch-node-2"]):not([data-to="sketch-node-2"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-3"]:hover) .sk-edge-group:not([data-from="sketch-node-3"]):not([data-to="sketch-node-3"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-4"]:hover) .sk-edge-group:not([data-from="sketch-node-4"]):not([data-to="sketch-node-4"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-5"]:hover) .sk-edge-group:not([data-from="sketch-node-5"]):not([data-to="sketch-node-5"]){opacity:0.4}svg:has(.sk-node[data-node-id="[armory]"]:hover) .sk-edge-group:not([data-from="[armory]"]):not([data-to="[armory]"]){opacity:0.4}}Plunder PipelineCrewDeckHoldBelow DecksSpyglass FeedCrew: DeckCaptain's ConsoleCrew: DeckDivvy ServiceCrew: HoldBooty QueueCrew: HoldShip LedgerCrew: HoldArmorysightingsorderssuppliesentrieshaul
.sk-node:hover{filter:saturate(1.4) brightness(1.06)}.sk-node{transition:filter .12s ease, opacity .12s ease}@media (hover:hover){svg:has(.sk-node[data-node-id="sketch-node-1"]:hover) .sk-edge-group:not([data-from="sketch-node-1"]):not([data-to="sketch-node-1"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-2"]:hover) .sk-edge-group:not([data-from="sketch-node-2"]):not([data-to="sketch-node-2"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-3"]:hover) .sk-edge-group:not([data-from="sketch-node-3"]):not([data-to="sketch-node-3"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-4"]:hover) .sk-edge-group:not([data-from="sketch-node-4"]):not([data-to="sketch-node-4"]){opacity:0.4}svg:has(.sk-node[data-node-id="sketch-node-5"]:hover) .sk-edge-group:not([data-from="sketch-node-5"]):not([data-to="sketch-node-5"]){opacity:0.4}svg:has(.sk-node[data-node-id="[armory]"]:hover) .sk-edge-group:not([data-from="[armory]"]):not([data-to="[armory]"]){opacity:0.4}}Plunder PipelineCrewDeckHoldBelow DecksSpyglass FeedCrew: DeckCaptain's ConsoleCrew: DeckDivvy ServiceCrew: HoldBooty QueueCrew: HoldShip LedgerCrew: HoldArmorysightingsorderssuppliesentrieshaul
sketch Plunder Pipeline

tag Crew
  Deck
  Hold

Spyglass Feed shape: database, at: 0 0, crew: Deck
  -sightings-> con
Captain's Console as con at: 2 0, crew: Deck
  -orders-> bq
  -supplies-> armory
Divvy Service as dvy at: 4 0, crew: Hold
  -entries-> ledger

[Below Decks] at: 2 2, crew: Hold
  Booty Queue as bq shape: queue, at: 0 0
    ~haul~> dvy
  Ship Ledger as ledger shape: database, at: 2 0

[Armory] as armory at: 0 2, collapsed
  Powder Store at: 0 0
  Cutlass Rack at: 0 1

Error state

This block is intentionally invalidpiechart isn't a chart type (it should be pie). It's included to show how Diagrammo reports a mistake, so you know what to look for when a diagram doesn't render.

Couldn't render this diagramdgmo1 error — fix the lines below and re-renderLine 1Unsupported chart type: "piechart". Supported types: slope, wordcloud, arc, timeline, venn,quadrant, sequence1piechart Quarterly Revenue2 Q1 403 Q2 30Edit & fix this diagram at online.diagrammo.app ↗Browse the DGMO docs ↗
Couldn't render this diagramdgmo1 error — fix the lines below and re-renderLine 1Unsupported chart type: "piechart". Supported types: slope, wordcloud, arc, timeline, venn,quadrant, sequence1piechart Quarterly Revenue2 Q1 403 Q2 30Edit & fix this diagram at online.diagrammo.app ↗Browse the DGMO docs ↗
piechart Quarterly Revenue
  Q1 40
  Q2 30
  Q3 20
  Q4 10

Every diagram on this page is rendered at build time by vitepress-dgmo.