Learning about Mermaid

Jan 13, 2025

TinaCMS is designed to empower content creators with an intuitive and flexible editing experience, and our markdown support is no exception. Whether you're managing a simple blog or a complex documentation site, TinaCMS seamlessly integrates markdown, combining the power of structured content with the ease of real-time editing. From headings and links to images and custom syntax, TinaCMS ensures your markdown files are easy to manage and customize while maintaining complete control over your content.

Flowcharts

Use a flowchart to visualize processes, decision trees, or workflows. It’s ideal for simplifying complex systems or explaining logic visually.

flowchart TD
    A(Napoleon's Aspirations) --> B{Skills Needed?}
    B -->|"Nunchuck Skills"| C[Nunchucks Training]
    B -->|Computer Hacking Skills| D[Hacking Practice]
    B -->|Bow Hunting Skills| E[Archery Club]
    C --> F[Become a Martial Arts Master]
    D --> G[Create the Ultimate Chat Program]
    E --> H[Win a Hunting Trophy]
    F --> I{Impress Girls?}
    G --> I
    H --> I
    I -->|Yes| J[Date Deb]
    I -->|No| K[Draw Ligers]
    K --> L[Become Awesome Anyway]

Sequence Diagram

Use a sequence diagram to illustrate interactions between components or systems over time, particularly for APIs, workflows, or system interactions.

sequenceDiagram
    participant Frodo
    participant Sam
    participant Ring
    Frodo->>Sam: "We need to destroy it."
    Sam->>Ring: Carries the burden
    Ring-->>Sam: "It's too heavy!"
    Sam-->>Frodo: "I can't carry it, but I can carry you!"
    Frodo-->>Ring: Throws it into Mount Doom

Class Diagram

Use a class diagram for object-oriented system design, showing the structure of classes, attributes, and their relationships.

classDiagram
    class Jedi {
        +String name
        +String lightsaberColor
        +useForce()
    }
    class Sith {
        +String name
        +String lightsaberColor
        +useDarkSide()
    }
    Jedi <|-- Sith

State Diagram

Use a state diagram to represent different states of a system or object and transitions between those states.

stateDiagram-v2
    [*] --> TheShire
    TheShire --> Rivendell: Begin the journey
    Rivendell --> Moria: Pass through the mines
    Moria --> Gondor: Battle forces of evil
    Gondor --> Mordor: Approach Mount Doom
    Mordor --> [*]: Mission complete

Entity Relationship Diagram

Use an ER diagram to model database structures, showing entities, attributes, and relationships.

erDiagram
    AVENGER ||--o{ MISSION : participates
    MISSION ||--|{ ENEMY : targets
    AVENGER {
        string name
        string superPower
    }
    MISSION {
        int id
        string location
    }
    ENEMY {
        string name
        string weakness
    }

User Journey

Use a user journey diagram to track user interactions with your product or service and identify pain points or areas for improvement.

journey
    title Star Wars User Journey
    section Discover
      Learn the Force: 5: Luke
      Train with Yoda: 4: Luke
    section Conflict
      Face Vader: 5: Luke
      Resist the Dark Side: 5: Luke
    section Triumph
      Redeem Vader: 4: Luke
      Save the Galaxy: 5: Luke

Gantt Chart

Use a Gantt chart to visualize timelines and project schedules, tracking progress and dependencies.

gantt
    title Build the Death Star
    dateFormat  YYYY-MM-DD
    section Planning
    Acquire Funds        :done, a1, 2025-01-01, 2025-01-15
    Blueprints Approval  :active, a2, 2025-01-16, 2025-01-30
    section Construction
    Build Core Structure :b1, 2025-02-01, 2025-03-31
    Install Laser Cannon :b2, 2025-04-01, 2025-06-30

Pie Chart

Use a pie chart to represent data proportions visually, such as resource allocation or survey results.

pie
    title Avengers Assemble
    "Iron Man" : 25
    "Thor" : 20
    "Hulk" : 15
    "Captain America" : 30
    "Black Widow" : 10

Quadrant Chart

Use a quadrant chart to prioritize tasks or visualize elements across two dimensions.

quadrantChart
    title Reach and engagement of campaigns
    x-axis Low Reach --> High Reach
    y-axis Low Engagement --> High Engagement
    quadrant-1 We should expand
    quadrant-2 Need to promote
    quadrant-3 Re-evaluate
    quadrant-4 May be improved
    Campaign A: [0.3, 0.6]
    Campaign B: [0.45, 0.23]
    Campaign C: [0.57, 0.69]
    Campaign D: [0.78, 0.34]
    Campaign E: [0.40, 0.34]
    Campaign F: [0.35, 0.78]

Requirement Diagram

Use a requirement diagram to track project requirements and their relationships.

    requirementDiagram

    requirement test_req {
    id: 1
    text: the test text.
    risk: high
    verifymethod: test
    }

    element test_entity {
    type: simulation
    }

    test_entity - satisfies -> test_req

Gitgraph (Git) Diagram

Use a Gitgraph diagram to visualize Git workflows and branching strategies.

gitGraph
    commit
    branch feature
    checkout feature
    commit
    branch hotfix
    checkout hotfix
    commit
    checkout main
    merge feature
    merge hotfix

C4 Diagram

Use a C4 diagram for software architecture, showing system contexts, containers, components, and code.

    C4Context
      title System Context diagram for Internet Banking System
      Enterprise_Boundary(b0, "BankBoundary0") {
        Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.")
        Person(customerB, "Banking Customer B")
        Person_Ext(customerC, "Banking Customer C", "desc")

        Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.")

        System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.")

        Enterprise_Boundary(b1, "BankBoundary") {

          SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.")

          System_Boundary(b2, "BankBoundary2") {
            System(SystemA, "Banking System A")
            System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.")
          }

          System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
          SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.")

          Boundary(b3, "BankBoundary3", "boundary") {
            SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.")
            SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.")
          }
        }
      }

      BiRel(customerA, SystemAA, "Uses")
      BiRel(SystemAA, SystemE, "Uses")
      Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
      Rel(SystemC, customerA, "Sends e-mails to")

      UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red")
      UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5")
      UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10")
      UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50")
      UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20")

      UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")

Mindmaps

Use a mindmap to brainstorm ideas or visually organize information hierarchically.

mindmap
  root((mindmap))
    Origins
      Long history
      ::icon(fa fa-book)
      Popularisation
        British popular psychology author Tony Buzan
    Research
      On effectiveness<br/>and features
      On Automatic creation
        Uses
            Creative techniques
            Strategic planning
            Argument mapping
    Tools
      Pen and paper
      Mermaid

Timeline

Use a timeline to show events chronologically, such as milestones or historical data.

timeline
    title Harry Potter Timeline
    1991 : Harry starts Hogwarts
    1992 : Chamber of Secrets opened
    1993 : Sirius Black escapes Azkaban
    1994 : Triwizard Tournament
    1998 : Battle of Hogwarts

Sankey Diagram

Use a Sankey diagram to show the flow of resources, energy, or data between stages.

---
config:
  sankey:
    showValues: false
---
sankey-beta

Agricultural 'waste',Bio-conversion,124.729
Bio-conversion,Liquid,0.597
Bio-conversion,Losses,26.862
Bio-conversion,Solid,280.322
Bio-conversion,Gas,81.144
Biofuel imports,Liquid,35
Biomass imports,Solid,35
Coal imports,Coal,11.606
Coal reserves,Coal,63.965
Coal,Solid,75.571
District heating,Industry,10.639
District heating,Heating and cooling - commercial,22.505
District heating,Heating and cooling - homes,46.184
Electricity grid,Over generation / exports,104.453
Electricity grid,Heating and cooling - homes,113.726
Electricity grid,H2 conversion,27.14
Electricity grid,Industry,342.165
Electricity grid,Road transport,37.797
Electricity grid,Agriculture,4.412
Electricity grid,Heating and cooling - commercial,40.858
Electricity grid,Losses,56.691
Electricity grid,Rail transport,7.863
Electricity grid,Lighting & appliances - commercial,90.008
Electricity grid,Lighting & appliances - homes,93.494
Gas imports,Ngas,40.719
Gas reserves,Ngas,82.233
Gas,Heating and cooling - commercial,0.129
Gas,Losses,1.401
Gas,Thermal generation,151.891
Gas,Agriculture,2.096
Gas,Industry,48.58
Geothermal,Electricity grid,7.013
H2 conversion,H2,20.897
H2 conversion,Losses,6.242
H2,Road transport,20.897
Hydro,Electricity grid,6.995
Liquid,Industry,121.066
Liquid,International shipping,128.69
Liquid,Road transport,135.835
Liquid,Domestic aviation,14.458
Liquid,International aviation,206.267
Liquid,Agriculture,3.64
Liquid,National navigation,33.218
Liquid,Rail transport,4.413
Marine algae,Bio-conversion,4.375
Ngas,Gas,122.952
Nuclear,Thermal generation,839.978
Oil imports,Oil,504.287
Oil reserves,Oil,107.703
Oil,Liquid,611.99
Other waste,Solid,56.587
Other waste,Bio-conversion,77.81
Pumped heat,Heating and cooling - homes,193.026
Pumped heat,Heating and cooling - commercial,70.672
Solar PV,Electricity grid,59.901
Solar Thermal,Heating and cooling - homes,19.263
Solar,Solar Thermal,19.263
Solar,Solar PV,59.901
Solid,Agriculture,0.882
Solid,Thermal generation,400.12
Solid,Industry,46.477
Thermal generation,Electricity grid,525.531
Thermal generation,Losses,787.129
Thermal generation,District heating,79.329
Tidal,Electricity grid,9.452
UK land based bioenergy,Bio-conversion,182.01
Wave,Electricity grid,19.013
Wind,Electricity grid,289.366

XY Chart

Use an XY chart to compare data points across two dimensions, such as performance vs. cost.

xychart-beta
    title "Sales Revenue"
    x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
    y-axis "Revenue (in $)" 4000 --> 11000
    bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
    line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]

Packet Diagram

When to use: Use a packet diagram to describe network communications and data flows.

packet-beta
0-15: "Source Port"
16-31: "Destination Port"
32-63: "Sequence Number"
64-95: "Acknowledgment Number"
96-99: "Data Offset"
100-105: "Reserved"
106: "URG"
107: "ACK"
108: "PSH"
109: "RST"
110: "SYN"
111: "FIN"
112-127: "Window"
128-143: "Checksum"
144-159: "Urgent Pointer"
160-191: "(Options and Padding)"
192-255: "Data (variable length)"

Kanban

Use a Kanban board to visualize work items and their statuses in workflows.

kanban
  Todo
    [Create Documentation]
    docs[Create Blog about the new diagram]
  [In progress]
    id6[Create renderer so that it works in all cases. We also add som extra text here for testing purposes. And some more just for the extra flare.]
  id9[Ready for deploy]
    id8[Design grammar]@{ assigned: 'knsv' }
  id10[Ready for test]
    id4[Create parsing tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
    id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }

Architecture Diagram

Use an architecture diagram to represent high-level system components and their interactions.

flowchart LR
    User --> StarkServer[Iron Man's AI Server]
    StarkServer --> Database[Mission Logs]
    StarkServer --> AIModel[Jarvis AI]