Show HN: I made a CMS that uses Git to store your data (outstatic.com)

203 points by AndreVitorio ↗ HN
I'm excited to finally launch Outstatic, an open source static website CMS that doesn't require a complicated setup or signing up to a third-party service!

You can access the documentation here: Outstatic Documentation.

I invite you to start by deploying our example blog to Vercel and giving it a try. I think you'll be pleasantly surprised at how easy and fun it is to use Outstatic.

Please, let me know what you think. This is the first public version of the project and all feedback is welcome.

If you dig the project feel free to leave a star on Github. I appreciate your support!

107 comments

[ 3.7 ms ] story [ 118 ms ] thread
Well done on getting such a good domain name. I like the idea too!
Looks nice but I am not sure how "does not require signing up to a third party service" is compatible with the get started page which starts with "requires a github account and a vercel account"
You're right. What I meant is, you don't need a third-party CMS provider. I suck at writing copy.

Some people have been using Outstatic without Vercel, and there's a section in the FAQs about it. But since this is the first version of the library and I haven't tested it with other services, I felt putting Vercel as a requirement would avoid people running into pitfalls with other services.

But oAuth is only setup with Github for now. So unfortunately that's pretty much a requirement.

I plan on adding support for other git providers in the future.

Neat project. Can you eventually just make it optionally self hosted with say gitlab or other software that is "self hostable" ?
Thanks. I think it can be done. But right now I'm mainly focusing on making this stable enough with the current Github setup before moving on to supporting other alternatives.
Gotcha, what you have looks great nonetheless. Congratulations! I'm just one of those who likes self hosting on cloud based solutions.
(comment deleted)
A bit off-topic, but out of interest, I noticed your GitHub readme states the below, accompanied with a large GIF of showing someone how to press the star button:

> The project is constantly improving with new changes being implemented on a daily basis. You can keep up by hitting the Star button!

I'm seeing this as a trend, but how does this actually work? Are you scraping user details from their profile pages, and are you sure that's allowed? Are you using some mechanism in GitHub to update users that have starred? Without understanding the actual mechanism used to keep users up-to-date, as hinted, it feels like misleading users to gain stars.

Probably Github itself gives stargazers updates on what they starred
it doesn't
it does, if you visit the "For you" tab in your dashboard you should see new releases from repos you've starred.
Misleading users for GitHub stars... that's a paddling!

Maybe it's like the YouTube Like and Subscribe, except for the part where they contact you for new releases. It's a lot less pushy to tell people to star your repo than asking them to subscribe to issues and become a contributor on equal footing.

You need something like "stars" or "project member" as part of your contributor ladder.

Did you know that YouTube channels cannot get a non-randomized URL or be searchable by the channel title unless you have 1000 subs? (How do you get 1000 subs when nobody can search for or find your channel unless you hand them a link? I guess by pounding pavement...)

As an OSS maintainer, I don't think that stars do anything except for number go up, but you'd be surprised the things that "number go up" can help with.

YMMV, but the “For You (beta)” tab on GitHub shows releases on repos I've starred (but not followed). The “Following” tab does not.
It did, and for a while my following tab was flooded with updates from repos I've starred. I've starred so many repos over the years it made it impossible to see updates related to my stuff. I think that is why the For You was created, I assume people complained.
(comment deleted)
Honestly, I'm not entirely sure how it works but on my Github feed I think I get updates from products I star. This is my first open source project and I saw some other popular projects doing it. I'm basically using it to measure interest in the idea/project so that I can decide to pursue working on it publicly or just keep it for myself.
(comment deleted)
Iirc netlify cms uses a similar way to store data?
This is awesome. I was looking for something similar (either fully static or a headless CMS) for using it on the Wasmer website blog [1], which is already using Next.js.

We'll give it a try... thanks for the great work!

[1]: https://github.com/wasmerio/wasmer.io

I always thought it would be cool to have a FOSS project that was wiki-based. People could submit edits which would be run through CICD, and accepted automatically if they improved performance (after passing tests). Contributing to projects has certainly gotten easier since the pathches-to-mailing-list era but it could certainly have less friction. As well I think it would feel more "competitive" especially if you're optimising individual functions (== wiki pages) for speed.
(comment deleted)
Looks amazing! Interesting to see the fully integrated approach. Working on gitpaper.com, which takes the bring-your-own-static-site-generator (byossg TM) route.

Really like the idea of keeping content in git, especially for smaller projects.

This is really cool. Not only is it great technically (combo of open source and git-powered is so convenient) - you’ve also done a stellar job of designing the UI. This looks like a CMS an individual would choose over others based on UX alone.
Does it directly (client side js) talk to github, or is there an intermediate layer like serverless functions involved?
Mainly client side. Some functions go through next's api folder.
Well done! How flexible is this when it comes to custom integrations such as custom previews, styles etc?
You can build your frontend as you wish. It is still very early so previews are not yet a thing.
The right way to manage documentation is to have some kind of a wiki, not to use git.

Git is terrible at managing documentation, it was designed for her bazaar-style software projects like the Linux kernel, which is very much a completely different use case.

Now you can mostly use any technology to do anything du maybe this software is great but I wouldn't mention git as more than an implementation detail personally.

I totally disagree. Git is a great way to store documentation. Also „Git“ and „Wiki“ are not opposites. You can have a wiki AND store content in git at the same time.
Great in which sense? I would argue that git is easy because you are already familiar with it, but it doesn't make shared documentation simple. How could he do that? Do you think that Linus Torvalds had a use case similar to Wikipedia in mind when he designed git? Sure you could build Wikipedia on top of git, it would just be shitload of unnecessary suffering compared to the hipster technology called PHP+MySQL.
This sounds cool. We wrote a git-based CMS[0] that is a little different. It has a nice-enough UI for creating and editing markdown documents, which are stored in git. And then it has a JSON API so that your main site can fetch the content and style / format however it likes. Users log in with OAuth or local passwords and their edits end up as git commits that are attributed to them.

[0]: https://github.com/frameable/junco-cms

The lack of options in this space really baffles me.

Statically generated websites are everywhere and have been popular for many years. Gatsby, Next, Hugo, Jekyll, 11ty, Astro, etc.

Yet, there is a lack of visual editing interfaces for Markdown/Frontmatter/MDX content.

Netlify CMS has been the best solution in this space, and despite many thousands of stars it’s abandoned now.

Tina CMS seems nice, but requires a subscription/cloud account.

Why are there not more alternatives?

Will take a closer look at Outstatic for sure.

NetlifyCMS is abandoned?
Check the commit history on the project. Last real commit was mid April.
> Netlify CMS has been the best solution in this space, and despite many thousands of stars it’s abandoned now.

I've noticed this too (https://github.com/netlify/netlify-cms/releases) with lots of open issues which makes me very nervous about using it for client projects. Netlify CMS is more than good enough for solo and small sites but it feels like it never took off like it should even with the backing of Netlify. Netlify's recent pricing changes to their hosting where they charge per Git user who trigger commits isn't great here either.

> Why are there not more alternatives?

Maybe it's hard to make money from? There's quite a few commercial offerings where some try to offer a slice of it as open source.

I'd love an active open source alternative to WordPress with a basic site builder i.e. you can drag and drop pre-built page sections to create new pages and get a live preview before you deploy. Unfortunately, WordPress is still the safe open source choice for ease-of-use of the editors for basic business sites.

Wordpress dominates the space, despite its record of security issues.
UX is the hardest thing. Drag and drop sucks IMO. Nothing that non-technical folks actually love, mostly be forced to use what orgs bought. for data entry, nothing beats spreadsheet .. I'm crying.
(comment deleted)
For anyone wanting to dig deeper, I think the term "flat file CMS" has been coined quite a while ago (and is what the author is aiming at with the Git-based flow). I'd agree that "lack of options for (accessible) visual editing UIs" is true, while flat-file-, database- or API-powered (which in the end is a wrapper over a DB, usually) CMS seem to exist for any reasonably popular programming language - with different levels of maintenance/recent development happening, granted.
What OP is building is not a typical "flat file CMS".

Flat File CMS are typical CMS systems (often times written in PHP) that run on the server, but use files (often Markdown/Frontmatter) as their data backend (instead of a DB like Wordpress, Drupal, etc.) – if you're looking for a really nice Flat File CMS take a look at Kirby (https://getkirby.com) or Statamic.

What OP is building (I think) and what others like Netlify CMS and Tina CMS do, are Frontend Applications (typically SPA) that output a set of content files, which can then be fed into a static site generator (like Next.js, Astro, Hugo, Jekyll), which will built a website from it. Often these content files live on Git – so the common interface between a SSG and the "static CMS" is often Git (or a local folder on your file system). So it's a "smaller" concept than flat file CMS. Typically these "static CMS" only care about content and have nothing to do with templating, etc.

When I started building Outstatic I haven't had heard about Netlify CMS, Tina CMS, nor any other alternatives... thought I was being original with the idea of a UI to manage .md files on Git lol

After I've launched people pointed the existence of those CMSs. I really built this as something to scratch my own itch, halfway through I decided it could be a library.

But as someone else mentioned, it's quite hard to think of a business model around this. I'll keep working on it just so that I can use it in my own blog. If other people want to use it, that's great.

Gitit is another one in this space
I wonder how people deal with a situation where they build a platform like this and it gets adopted by e.g. political group opposing current regime in their country. A friend of mind built a pretty nice platform, until these groups started using it. He just didn't want to end up in the ditch somewhere so he closed the platform. The money from ads wouldn't even pay for servers, not to mention legal aid or hiring staff to deal with "unwanted" content. Even if you build an open source platform that anyone can self host, you can still run a risk someone being upset about it, that you are making it "easy" for certain groups to spread their propaganda.

It feels like today it is a too risky water to dip toes into.

Can't believe Netlify CMS has been dropped. That was a really smart little project. For sites of a certain size (which seems to be a great number of webapps), it's an almost ideal solution. Hope any fork picks up sufficient traction.

Bugs do appear to still be tracked and tagged though, so it's a confusing state of affairs.

Publii [1] is still an excellent option in the Hugo-but-graphical space. It has a desktop app and allows hosting on GitHub Pages, AWS S3, Netlify or just plain old FTP.

[1] https://getpublii.com/

Because it is not much simpler than just git + the editor of your choice for developers, and it is still harder to use than Wordpress for non-developers.
Agreed. I built https://sitepress.cc/ that uses git + files to manage content in Rails, but it needs an editor.

I’m not sure if the right thing to do is build a web editor or smooth out git workflows so that non-technical people can open content files with desktop software to make changes to the content.

Pardon my ignorance, but i've recently been trying to decide on a cms service and it seems like there are too many options (strapi, prismic, contentful, ghost, cockpit, forestry, etc...) What am i missing here?
This is awesome, nice work. I was able to get an example deployed and working in a few minutes!
(comment deleted)
The best CMS is your native filesystem and using web pages that are and use files.
(comment deleted)
Gave it a shot and seems really nice and lightweight. Tried running it off the example blog but suddenly all the collections just disappeared. Even though everything was in git. Will keep trying it out but will obviously not do anything production worthy until it's a bit more stable and thoroughly tested.
Hey, Thanks for trying it out!

Yes, at this stage I wouldn't advise anyone to try using this in production, it's the first version of a side project after all. But I'm really surprised by the response so far. I'll definitely keep improving it.

Let me know if you manage to figure out what went wrong, and if you get any error messages/logs. I'm available on twitter @AndreVitorio

You mean like gollum?
(comment deleted)
Mine is always the same combination, but Apple Notes instead of GitHub[1].

So it's Apple Notes, Next.js and Vercel.

[1] https://montaigne.io

(comment deleted)
Can you speak a bit more as to how you are extracting the data from Apple Notes / iCloud into next?
Anytime I see something that's in JavaScript that doesn't have to be, I immediately close the page.

There's literally a hundred languages you can choose.

What makes JavaScript such a terrible fit compared to the other 100 languages you have in mind?
Async by default. Promise chains. Strange unpredictable typing. Many more strange things.

It was half ass browser language originally with improvements bolted on.

> Uses Git to store your data

I think you meant "Uses GitHub to store your data"?

Git is not a data store but a version control system, it can't store data. Data is stored on your disk or on your Git server. In the case of your CMS it seems like it requires GitHub specifically, other Git servers won't work.

> Git is not a data store but a version control system, it can't store data. Data is stored on your disk

By the same theory, you don't store data in MySQL, you store it on a disk.

Oh yeah didn't think about it this way, you're right my bad.
This is so unbelievably wrong.

Git absolutely is a data store. It just so happens that its primary use-case is version-controlled code.

There's no reason why it can't be other data - even binary. Other text that isn't code is absolutely fine.

Also, if it's in GitHub, it's almost certainly is using Git. Though I haven't tried this service out yet, my guess is GitHub is being used as a known central Git repo source with a reasonably well developed ecosystem and security mechanics as well as being the most widely adopted Git VCS platform on the market.

But in theory you could use any Git repo on any platform (or no platform)... it sounds like it will just need to end up on GitHub currently to make use of the orchestration this service provides.

love the design of this, nice work!
Really glad to see this coming. Sharing my experience of using Git for rendering docs and blog at Iterative. We've build a similar engine for the https://dvc.org/doc and https://iterative.ai/blog (internally it's Git + DVC for images + Gatsby + Markdown deployed on Heroku (only for APIs) + Cloudflare + S3).

It's been working really great. GitHub PRs + preview applications give a very powerful collaboration / review framework. It works extremely well for folks who understand Git / GitHub enough - engineers, technical writers, etc.

It's starts breaking unfortunately for the marketing team, less tech savvy folks. I was trying to find a solution CMS that would work for them, but haven't seen so far something that would satisfy our needs. Two things that we are usually missing:

- we need a way for people to come and review it (ideally GitHub / Notion / GoogleDoc style). Where you would be able to comment on a line, suggest and edit, etc, etc - we need a way to handle assets better (using Git for blog was not scalable - started breaking the workflow). So far we ended up using DVC for this, but it complicates the workflow.

- there are merge conflicts that are happening - that's not easy to resolve in CMS

Nonetheless, even a tool that would prepare and generate a PR using an online editor is already a very decent step to my mind. Eager to try the tool.