Pacharapol Withayasakpunt Pacharapol Withayasakpunt
Mon, June 1, 2020

Only flat file CMS and serverless functions are enough for my needs

This also obliviate the need to monitor your own database or entrust a third party to do it for you.

Still, you might need some functions you cannot rely on clients' web browser, such as adding search. Downloading indexes to client's machine is expensive and bad for SEO.

https://www.gatsbyjs.org/docs/adding-search/

So, I use lunr.js instead.

https://github.com/olivernn/lunr.js

I built two essential files on the fly, before starting up a Nuxt server.

  • db.json created by JSON.string(glob)
  • idx.json created by JSON.stringify(lunr)

See,

https://github.com/patarapolw/polv/blob/1d569576d26d4332b47592054f2900f7eb9c5571/scripts/init.js

Do you know that you can rollup a temporary server, potentially needed by gatsby build or nuxt generate? Such solutions are

https://github.com/marmelab/json-graphql-server

https://github.com/typicode/json-server

I still have an editor / CMS, though; but it specifically targets a flat file folder,

https://github.com/patarapolw/superflat

Did I mentioned that I think I was wrong in thinking that I need a CMS? The truth is I still need a CMS, but I don't want to monitor a database.

One more thing I need is commenting engine. Indeed, an option is just use Disqus, but in the end, I hosted by own using Remark42, with a little tweak to make it work with SPA.

https://github.com/umputun/remark42