/marmalade

Another opinionated JAMstack static site starter (powered by Next.js) ๐ŸŠ

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

โš ๏ธ Update 21/06/2020: I've left this project on the backburner for a bit whilst revamping joebell.co.uk.
I've changed strategy on a few things, but once I find the time I'll add them back.
This project is still a work in progress

marmalade ๐ŸŠ

Another opinionated JAMstack starter with static optimization.

Powered by Next.js and friends:

Features

  • ๐ŸŽจ Theme UI (with a default theme)
  • ๐Ÿ“ MDX (via next-mdx-enhanced)
  • โšก๏ธ Preact
  • ๐Ÿ” TypeScript
  • ๐Ÿ—‚ Multiple "posts" directories (with index pages)
  • ๐Ÿท Tagging (with index pages)
  • ๐Ÿ“ก RSS feed generation
  • โš™๏ธ Manifest generation
  • ๐Ÿ’ Extended front matter
  • ๐Ÿšข Deploy to Netlify or your platform of choice
  • โŒจ๏ธ ESLint, Prettier and Commitizen

To do

  • โ„น๏ธ Favicon generation (including updating the repo's meta info)
  • ๐Ÿ— Customisable layouts
  • ๐Ÿงฑ Customisable components (including a nicer dark mode button and less B&Q-esque theme)
  • ๐Ÿ‘ทโ€โ™€ GitHub Actions
  • ๐Ÿงช Tests (I know I'm sorry)
  • ๐Ÿ† Performance audits and optimisation
  • โ™ฟ๏ธ Accessibility testing and optimisation

Feature candidates

  • ๐Ÿ’ฌ Webmentions
  • ๐Ÿ’ง Mimic 11ty cascading data? (e.g. .json file in folder to configure layouts for all pages)
  • ๐Ÿš‡ Offline support
  • ๐Ÿ“ Netlify CMS

Getting started

Head over to the "Getting started" guide on the demo site.

Q&A

Why does this project exist?

It's how I like to build things right now. You might like it too or you might not; and that's totally fine.

This project was born out of a polarization on "how things should be built" in the current Front End climate. Specifically, a comment stating "stop wasting time perfecting your personal site's tech stack". Tweaking my tech stack pushes me to leave my comfort zone and broaden my knowledge; I'd actively encourage others to try new tools where possible.

Build what you love and don't feel disheartened to try something new or go down a different route.

Why not just use Gatsby? I love Gatsby, I use it for my personal site. I like the fact I can install a plugin and let it magically solve my problems, but I equally think it's important to understand what goes on behind the scenes. I heard about Next.js' static export feature just after finishing my personal site and felt like it was worth an explore.
Why do you use CSS-in-JS (specifically Theme-UI)? It feels right. I was a SASS advocate, but now it just feels cumbersome and outdated. With CSS-in-JS I can make the most of a theme schema to reinforce design tokens.
Why not use Chakra-UI? Chakra-UI is bound to the Styled System Theme Specification and Emotion, so unfortunately not an option for this project ๐Ÿ’”

Acknowledgements