MDX Presenter allows you to create slides easily with React and MDX.
With this tool, you can:
- Write your presentations in Markdown.
- Use React components, or even build your own.
- Create a consistent look and feel with Theme-UI.
- Present on any computer with a (modern) browser, by using the onepage build mode.
- Integrate it in any of your favourite web bundlers, static site generators, ...
Under the hood
This is very much an entry level explanation. If you are a seasoned web developer, all you need to know is that this project consists of a few react packages to help you build your presentation, which you write using MDX.
This project also has a package with some plugins for transpiling MDXAST/MDXHAST and a basic template for getting started, which sets up a Webpack environment to develop and build your slide deck.
While it is not really necessary to understand all this in order to use MDXP, I believe that it is always helpful to understand how your code gets transformed into the end result you see.
This is the task of a bundler, like Webpack.
With Webpack, you can include any file format, as long as you provide a way to process those files to your end bundle.
This allows us to import images and videos, and Webpack will process those files according to our pipeline.
Feel free to look inside your
webpack.onepage.js files, if you build your presentation with our template.
How is this different from MDX-Deck
I started using MDX-Deck and immediately loved the concept of writing your presentations with MDX.
However, I found one big flaw with it and that is that it builds your presentation as a Gatsby website.
I have two reasons for disliking this:
- When presenting at conferences, you are sometimes obliged to present on a given computer and thus it is not feasible to present with a local server on your computer. While you could host your presentation somewhere and just browse to it, that has the downside that you are at the mercy of internet speeds at the conference, which might be a serious issue if you have lots of images and/or videos. The best solution would be to have a single file, like a
.ppt, that you can just open on any computer. MDXP allows to build your presentation in
onepagemode, which means you end up with one
index.htmlfile (+ any videos or huge images), which you can open in any (modern) browser, without the need for a server.
- The fact that it uses Gatsby adds a whole layer of complexity. Gatsby is not a small tool and learning to use it takes some time. This also means that the threshold for someone being able to contribute to the project becomes much higher. The core of MDXP is just a react library and thus it is easier to learn and contribute to this repository. If need be, you can still integrate MDXP into a Gatsby project, thus having the best of both worlds.
I would like to express my gratitude towards the MDX-Deck project and the team behind it!
I took a lot of inspiration and even some code from it, and would not have been able to build MDXP without it.
This project is setup as a monorepo with lerna and yarn workspaces.
After installing yarn, you can clone this repository and run the following commands to set everything up and start developing:
yarn installlerna bootstrap