Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/joe-bell/marmalade

Another opinionated JAMstack static site starter (powered by Next.js) ๐ŸŠ
https://github.com/joe-bell/marmalade

jamstack nextjs nextjs-starter preact react theme-ui typescript

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

        

> โš ๏ธ **Update 21/06/2020:** I've left this project on the backburner for a bit whilst revamping [joebell.co.uk](https://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](#to-do)**

# marmalade ๐ŸŠ

Another opinionated **JAM**stack starter with static optimization.

Powered by [**Next.js**](https://nextjs.org) and friends:

## Features

- ๐ŸŽจ [**Theme UI**](https://theme-ui.com/) (with a default theme)
- ๐Ÿ“ [**MDX**](https://mdxjs.com/) (via [next-mdx-enhanced](https://github.com/hashicorp/next-mdx-enhanced))
- โšก๏ธ [**Preact**](https://preactjs.com/)
- ๐Ÿ” [**TypeScript**](https://typescriptlang.org/)
- ๐Ÿ—‚ Multiple "posts" directories (with index pages)
- ๐Ÿท Tagging (with index pages)
- ๐Ÿ“ก RSS feed generation
- โš™๏ธ Manifest generation
- ๐Ÿ’ Extended front matter
- ๐Ÿšข Deploy to [Netlify](https://netlify.com/) or your platform of choice
- โŒจ๏ธ [ESLint](https://eslint.org/), [Prettier](https://prettier.io/) and [Commitizen](https://github.com/commitizen/cz-cli)

### 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](https://marmalade.joebell.co.uk/blog/getting-started) 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

- [**@mxstbr**](https://github.com/mxstbr) - _["mxstbr.com"](https://github.com/mxstbr/mxstbr.com)'s architecture was a fundamental resource for the start of this template. I owe Max massively for this._
- [**@robertcoopercode**](https://github.com/robertcoopercode) - [_"Using ESLint and Prettier in a TypeScript Project"_](https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project)