Map.
Map is a macos application for wardley mapping. It lets you use text to create and update maps quickly.
Map is distributed under the GPLv3 license. The code and license text are available in git.r.bdr.sh, or mirrored in sourcehut.
You can also install map via homebrew running:
brew tap rbdr/apps git@git.sr.ht:~rbdr/homebrew-apps brew install --cask map
Features
- Draw nodes, connect them, group them, add notes, add blockers and evolution arrows.
- Live preview.
- Adjust the size of each stage of evolution.
- Export to PNG.
Screenshots
Here's some screenshots of the app and example diagrams generated with it.
Horizontal Layout, Light Mode | Vertical Layout, Light Mode | Horizontal Layout, Dark Mode | Vertical Layout, Dark Mode | Map Output |
---|---|---|---|---|
Language Reference
Nodes
Nodes should be of the format Name (x,y)
. The name can contain spaces and \n
, and the x/y can be integers or
decimals.
All dimensions go from 0 - 100, so 50 means 50% of the way through. You can also specify the shape by appending `[Square]`,
`[Triangle]`, or `[x]`. eg.
Node (1,2)
My Cool Node (10.0,21.0)
A (1, 2.0) [Square]
Rose Wall (44.3, 50.0) [x]
Edges
Edges connect two nodes. They use the format Node -- Node
(line only) or Node -> Node
(with arrowhead). eg.
Node -- My Cool Node
A -> Node
Blockers
You can place a blocker in front of a node by using [Blocker] Node
. eg.
[Blocker] My Cool Node
[Blocker] A
Evolution
You can draw evolution arrows by using [Evolution] Node +x
or [Evolution] Node -x
. eg.
[Evolution] My Cool Node -10
[Evolution] A +15
Notes
You can add notes [Note] (x, y) Text
where x and y are numbers, and Text is any text with spaces or \n
[Note] (30, 45) Here we want to call out an explanation or context.
[Note] (90, 25) We're close to the edge \n so we can multiline it.
Groups
You can group nodes together by using [Group] NodeA, NodeB...
[Group] Tinker, Tailor, Soldier
[Group] Two Words, Three Words Here
Modifying the axes
If you need more space for one of the four segments you can use [I] x
, [II] x
, or [III] x
,
[I] 15
[II] 35.5
[III] 80
The parser doesn't enforce position, so if you put axis iii before axis i, you'll get some rendering issues.
Changelog
3.1.0
- Adds search to the source.
- Moves export to the menu bar.
3.0.1
- Fixes groups not detecting nodes with spaces.
3.0.0
- Uses files instead of iCloud.
- Horizontal and Vertical layout switching.
- Introduces [Group] directive.
- App store no longer supported.
2.0.0
- Introduces [Note] directive.
- New icon and map style.
1.2.0
- Performance improvements.
1.1.0
- Adds syntax highlighting.
1.0.0
- Initial release.