Show HN: MDV – a Markdown superset for docs, dashboards, and slides with data
53 points
5 hours ago
| 8 comments
| github.com
| HN
kevinkoning
3 hours ago
[-]
Markdown is a beautiful demonstration that document structure syntax can/should be simple. What most people do in Word is better done by just adjusting the document rendering/style, not the document structure...

I love the idea of extending markdown to include more visual elements, but if you're not careful you just reinvent HTML.

Here's my personal take on extending table syntax for charts. Easy to write, and if a renderer/parser understands the syntax you get a beautiful chart, and if it doesn't you get a table with slightly weird headings:

  | Month::x | Revenue::y1 | Cost::y2 |
  | -------- | ----------: | -------: |
  | Jan      | $82,000     | $51,000 |
  | Feb      | $91,000     | $56,000 |
  | Mar      | $95,000     | $58,000 |
reply
rao-v
2 hours ago
[-]
Tables are the one thing in markdown where I’d prefer to emphasize edit ergonomics over good looking unrendered text. Making a quick manual change like adding column to a markdown table is just unfun. I’ve always thought a json like format that a linter can organize would be better.

Which is all to say I really like the table proposal here - adding an optional linter to make the data look tabular in unrendered markdown will make it even better

reply
freedomben
53 minutes ago
[-]
> Making a quick manual change like adding column to a markdown table is just unfun.

This is one of those moments where I realize that the vim life spoils me. It's so easy to do this in vim that I don't even think about. I probably use it a dozen times per day such as commenting out code.

Ctrl + v, select where you want the character, then hit I (shift + i), type your thing, hit escape, and Bob's your uncle.

reply
jez
28 minutes ago
[-]
Even in Vim, the editing experience falls over when making markdown tables that have non-trivial content in their cells (multiple paragraphs, a code block, etc.). I recently learned that reStructuredText supports something called "list tables":

https://docutils.sourceforge.io/docs/ref/rst/directives.html...

Where a table is specified as a depth-2 list and then post processed into a table. Lists support the full range of block elements already: you can have multiple paragraphs, code blocks, more lists, etc. inside a list item.

This syntax inspired the author of Markdoc[1] (who came from an rST background) to support tables using `<hr>`-separated lists[2] instead of nested lists (to provide more visual separation between rows).

I have found various implementations of list table filters for Pandoc markdown[3][4], but have never gotten around to using any of them (and I've tossed around ideas of implementing my own).

[1] https://markdoc.dev

[2] https://markdoc.dev/docs/tags#table

[3] https://github.com/pandoc-ext/list-table

[4] https://github.com/bpj/pandoc-list-table

reply
nine_k
37 minutes ago
[-]
Same in Emacs, and, I suppose, in any editor with enough self-respect to support vertical blocks.
reply
cush
17 minutes ago
[-]
Any editor plugin makes it easy though
reply
esafak
3 hours ago
[-]
What's the : in the divider?
reply
microflash
3 hours ago
[-]
That's header alignment marker. If it's on right, the header cell is aligned to right.
reply
amcaskill
2 hours ago
[-]
I work on a dashboarding / BI solution that is also built around markdown and clickhouse. www.evidence.dev

We moved to stripe's Markdoc variant for the component syntax last year and have been really happy with it. Models are good at writing it, people are good at reviewing it.

Here's an area chart that would issue a SQL query for weekly revenue totals:

``` {% area_chart data="my_table" x="date" y="sum(revenue)" date_grain="week" /%} ```

reply
sieste
1 hour ago
[-]
I was expecting to find a link to a github pages site where I can see the rendered examples, but only found a link to the html sources in examples/out. Am I missing something?
reply
bthallplz
3 minutes ago
[-]
I was curious to see them, too, so I uploaded the HTML examples here: https://tacticaltypos-tools.pgs.sh/mdv/examples/out/
reply
garyfirestorm
42 minutes ago
[-]
nope this is becoming a theme. many showhn posts that are about visualizations do not have any renderings of said visualizations. especially in github readme.
reply
nzoschke
2 hours ago
[-]
Looks cool.

I continue to love Markdown and always push it a bit further than Commonmark, with frontmatter, schemas, code fence metadata too.

I've been enjoying https://djot.net/ as a superset of Markdown that is feels very well designed and extensible too.

You may look into its syntax and tooling for prior art or some extra lift.

I'm trying to get a djot extension in Zed for syntax highlighting if anyone minds adding a to help signal some community interest.

https://github.com/zed-industries/extensions/pull/5206

reply
remywang
2 hours ago
[-]
All of these are supported in pandoc markdown:

> .mdv is strict CommonMark plus four additions:

> YAML front-matter for title, theme, named styles, and dataset references.

> Fenced blocks for data/visuals: ```chart type=bar x=region y=sales.

> ::: containers for styled regions and layout: ::: callout / ::: columns.

> ::: toc for an auto-generated table of contents.

reply
woodydesign
2 hours ago
[-]
Very cool.

I’m a product designer, and I could totally see this fitting into my workflow for design briefs, strategy, review, and crit docs. Markdown is too simple, and Figma is too visual. This feels like a great middle ground.

reply
phyzix5761
3 hours ago
[-]
Nice project. But at what point does Markdown just become Emacs Org-Mode? At least with Emacs you can write Lisp to make your document do anything you want.
reply
arikrahman
2 hours ago
[-]
I'm struggling to figure out why I wouldn't just use Emacs Org or even Typst for this use case.
reply
AlecSchueler
2 hours ago
[-]
Deepening on who your users are you might also say "at least with markdown they write Lisp and make their documents do whatever they like."
reply
ifh-hn
2 hours ago
[-]
I'm using quarto for this sort of thing.
reply