• Stars
    star
    321
  • Rank 130,752 (Top 3 %)
  • Language
    JavaScript
  • Created over 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The opinionated ecosystem for MDX powered NextJS apps for blogs, documentation, and more.

mdnext

MDNEXT is an ecosystem of tools to get your NextJS + MDX projects blasting off 🚀




Quick start 🚀

Looking to start a new project?

# Using NPX we'll start up the mdnext CLI prompts --
npx mdnext

# You will first be prompted with.. --
What is the name of your project?

# Then you will choose which template to use
Select which template to use ...

Just want to access components in your MDX based apps?

# Even though we're a Next based ecosystem, our `MDX` components should be usable in most React based applications

yarn add @mdnext/components

or

npm i @mdnext/components

What is MDNEXT? 🤔

mdnext is an ecosystem of tools to empower working with NextJS + MDX.

The mdnext CLI surfaces a collection officially maintained and community submitted templates to choose from. Once chosen, the project is cloned locally with a clean commit history and you're ready to build your next project.

@mdnext/components delivers accessible (thanks ChakraUI) and extendable components for working with MDX. These include things you've seen like Code components for styling code blocks or Iframes for embedding rich content to MDX

The mdnext template collection are NextJS based projects with opinions around how to style, handle MDX (and other data sources), deliver media, and handle your most usual workflows (ecomm / blogs / product pages). While there is an officially maintained collection of templates, I was excited to see and share what the community has created. I know there's many different opinions and comfortabilities as a web developer and want our ecosystem to be accessible.

Understanding MDNEXT 📓

The basic structure of the mdnext-starter can be seen throughout all other templates at it's core of how it utilizes MDX and Next.

Getting to know this structure will help inform you of the current best practices that are being followed (which are free to interpretation!) and easy enough to plug and play. Let's dive into the starter:

jsconfig.js

NextJS lets us configure absolute paths for our app. We use this to easily import all of our functions and utilities inside of our src directory

pages

The pages directory defines your routing. Lifecycle methods like getStaticProps / getStaticPaths / getServerProps are available at the page level. This is where we consume our MDX content as data to pass to our components.

  • *_app.js* NextJS allows you to override the App component, which is used to initialize pages. More here
  • *_document.js*: Allows you to augment our application's <html> and <body> tags.
  • all-data/index.js: This page is an example of displaying links to all of your individual MDX data pages. Here we use getStaticProps to feed the frontmatter of our MDX files for our components.
  • data/[slug].js: Here we utilize NextJS dynamic routing. By using getStaticPaths we're able to feed a dynamic slug, handling all of the logic once and applying it to each MDX data that we load. This allows us to then match to our data in getStaticProps and display that to the page and our components.
  • index.js: Our page at the root of our app, lives inside of the pages directories index.js.

src  Our src directory holds all of our client code. Our components, custom hooksutility functions, and our MDX files all live here, with the first three available for absolute path imports 👍

next.config.js For custom configuration around things like environment variableswebpackpageExtensions, and many more, you can utilize next.config.js

Each template will have it's own README with explicit documentation pertaining to the additions that make up the new configuration. Otherwise, you will find each template at it's core, starts similarly to mdnext-starter

Templates 🏗️

The templates inside of mdnext were made to alleviate the friction when starting a new website. Blogs, personal sites, client work, etc can always feel very daunting to get started on.

What do we have to accomplish?

How do we handle styling?

How am I going to handle data?

What's the best way to integrate authentication?

The opinions in these templates will get you started quickly and allow you to customize however you see fit.

Our currently maintained templates:

  • mdnext-starter This is the least opinionated template, that all templates are created from. It houses very minimal configuration and opinion outside of an example of sourcing MDX inside of getStaticProps/Paths
  • mdnext-blog The blog templates adds features on top of our mdnext-starter . Specifically using Chakra-UIfor styling. Configuration for blogs posts at the page and content level using our MDX files as routes. FuseJS for filtering our blogs posts. Check this template out in action!
  • mdnext-overlays When becoming a new streamer you are met with many challenges. Eventually you're going to want to setup your own Scenes, animations, and interactions for your stream and it's viewers. Why not use the tools you love to create them? With this configuration you're set up with a base layer for configuring each new scene as a route. Each route contains ways to interact with Twitch API's, your Twitch chat, and information surrounding your stream and it's events!

Our community submitted templates:

  • mdnext-tailwind Want to get up and running quickly with a Tailwind + mdnext project? This is the answer. A proper config alongside a collection of resources to get those new to Tailwind feel comfortable!
  • mdnext-twin-macro This starter is configured with twin.macro as it's choice of styling. This allows you to utilize Tailwind's utility classes and emotion's css method for one off styles.
  • mdnext-graphcms Utilizing GraphCMS as our datasource, we setup the basics for a blog. It starts you off with a simple example of how you can pull Markdown from GraphCMS and feed it to our UI with our MDX
  • mdnext-reflexjs Reflexjs is a styling library built for speed and excellent developer experience. You can style your components using style props and constraints based on the System UI specifications.

Want to submit a new template? Head over to our Contributing section and check out mdnext-starter

More Repositories

1

use-cloudinary

Lightweight hooks for generating URLs of your cloudinary assets and adding transformations
JavaScript
44
star
2

generate-media-templates

A UI for adding transformations to your Cloudinary images and generated templates.
JavaScript
6
star
3

next-portfolio-workshop

This serves as the base repository for the UI.dev portfolio workshop!
JavaScript
6
star
4

mdnext-blog

JavaScript
5
star
5

discord-forum-to-website

Scrape your active and archived threads inside of your Forums channel to an SEO configured website.
Astro
5
star
6

cloudinary-graphql-wrapper

A wrapper for the Cloudinary Node SDK, fed into a graphql endpoint
JavaScript
4
star
7

unstack-cloudinary-workshop

The repository to follow along w/ my unstack Africa workshop for uploading media to Cloudinary using NextJS
JavaScript
3
star
8

react-query-xstate

Upcoming Egghead Lessons for building React apps with state management from React Query, Xstate, and out of the box React hooks.
JavaScript
3
star
9

use-cloudinary-docs

JavaScript
2
star
10

mdnext-starter

JavaScript
2
star
11

react-query-graphql

An example of the React Query tool used with graphql-request.
JavaScript
2
star
12

soundcloud_api

Implementing the soundcloud API for a basic music player
Ruby
1
star
13

serverless-conf-nextjs-cloudinary

Upload and transform your media using NextJS, MDX, and Cloudinary to generate dynamic OG Images for your websites.
JavaScript
1
star
14

mdnext-tailwind

JavaScript
1
star
15

starter-gatsby-blog

JavaScript
1
star
16

practice-with-hooks-docs

Using React Hooks documentation to show off using hooks.
JavaScript
1
star
17

wrangling-data-react

Teaching the meetup how to fetch and use data inside of React
JavaScript
1
star
18

RDK-v2

Red Queen's Rune Development Kit
JavaScript
1
star
19

egghead-react-query

JavaScript
1
star
20

mdnext-overlays

JavaScript
1
star
21

reactadelphia

TypeScript
1
star
22

next-clerk-planetscale

TypeScript
1
star
23

domitrius.dev

CSS
1
star
24

mdnext-fullstack-template

This is a test run of a configuration possibility for a fullstack `mdnext` project. Only serving as a playground, but keeping the progress of it open.
JavaScript
1
star
25

anime-watchlist

Create a backlog of anime shows you'll never watch. Favorite other user's backlogs and create a larger line of shows to watch.
JavaScript
1
star
26

playlists-workshop

Apollo: One giant leap for Full-stack
JavaScript
1
star
27

edge-function-cache-example

Astro
1
star
28

gatsby-theme-esports

A theme dedicated to bringing a beautiful experience to every esports organizations website or up and coming content creator.
JavaScript
1
star
29

definitely-not-11ty

A personal template for 11ty
Nunjucks
1
star
30

cloudinary-hooks

JavaScript
1
star
31

domitrius-dot-dev

Personal site and playground for me to put all the stuff you should know about what I'm up to.
Astro
1
star
32

cra-template-react-apollo

Template for CRA that adds Apollo/Emotion/React router
JavaScript
1
star
33

mdnext-dot-dev

The main website for the mdnext ecosystem
JavaScript
1
star