Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: I made a CMS that uses Git to store your data (outstatic.com)
203 points by AndreVitorio on Oct 23, 2022 | hide | past | favorite | 96 comments
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!




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


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.


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


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.


> 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.


For the PHP folks there are a few options.

Ones that I've used include:

- Statamic https://statamic.com

- Jigsaw https://jigsaw.tighten.com/


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.


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.


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.


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/


Wordpress dominates the space, despite its record of security issues.


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?


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.


Crafter CMS is a git backed CMS. https://craftercms.org/


NetlifyCMS is abandoned?



Geez the first few responses of that forum thread is just an exhausting read of "We've relayed your message to $SOMEWHERE_ELSE and we are waiting for a response.".


Check the commit history on the project. Last real commit was mid April.


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.


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


Awesome, let me know how it goes!


Will do! Tomorrow we are trialing it :)


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.


I found something similar but more flexible while looking for alternatives: https://frontaid.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.



Congrats on building and shipping Outstatic :-)

I built something similar a fews back, mainly for myself: UI for creating/editing content and generated static output. It fully integrated Git into the workflow and handled publishing to your own subdomain (free hosting). It was pretty minimalist but worked fairly well. Originally I built it for desktop, then later decided I needed it available anywhere and rebuilt it as a web app.

I eventually stopped working on it though because I ran into problems with the browser implementation of Git provided by the library Isomorphic-Git (it could only handle simple merges). I also stopped writing, and since I had no users besides myself I lacked motivation to resolve outstanding issues

The app still exists and even very recently it crossed my mind to revisit it. You might just have inspired me to do so.

Edit: fix typo


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


I think that it was very good idea to make post edit interface very similar to Wordpress one - plenty of people will be familiar with it right away!


You're the first person to mention it! I love Wordpress, that's where a lot of the ideas for Outstatic came from.


Iirc netlify cms uses a similar way to store data?


The fact that you can update and check in a single page at a time seems to make svn without needing to pull the whole repo seems to make subversion rather well suited to wikis in my mind. Not to mention you don't usually need the more advanced git or mercurial features.

I wonder if anyone has tried that.


Not only that, but SVN (mod_dav_svn) is the reference, or only, implementation for full-featured WebDAV, an HTTP extension protocol for resource-/file-based CMS to live at the same endpoint as your site. Though git doesn't require a full clone anymore for access to a single file since about two years.


Ah? Narrow/shallow work well now? I can just grab one file and edit/check in without grabbing the rest or having history issues? Good to know. Had tried it a few years ago without success.


> update and check in a single page at a time

Git also enables this, so I don't understand your point.


You can work on and commit your article page A all day long without having to update the rest of the wiki while your fellow author works on page B and does the same.

Apparently git now has better narrow/shallow support though. Will have to check that piece out again. I wonder if the large file support is a bit less hackish now. It always felt like such a kludge compared to mercurial.


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.


This is awesome, nice work. I was able to get an example deployed and working in a few minutes!


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.


Thank you! I really appreciate it :)


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.


Does this mean that writers use a branch and merge based workflow?

That would be amazing and it is the one major thing missing from other options like Statamic.

Nobody understood my needs around this when I was looking for solutions.


Have you seen Gitamic? (https://statamic.com/addons/simonhamp/gitamic)

I'm planning to add branching and merging soon


Right now Outstatic pushes straight to your main branch. I built it for personal use so I didn't get that far, but you are not the first to suggest this.

If you want to chat about how this may work in terms of UI/UX, please let me know. I think the idea is interesting. I'm @AndreVitorio on twitter.


Well done on getting such a good domain name. I like the idea too!


Cool concept.

Does anyone know of something like Datomic but that runs on top of Postgres? ie. Postgres + change history/management.


One of these Postgres-based implementations of SQL:2011's temporal versioning might get you close enough:

- https://github.com/nearform/temporal_tables

- https://github.com/xocolatl/periods

- https://github.com/scalegenius/pg_bitemporal

- https://github.com/arkhipov/temporal_tables

I haven't used any of them but I work on https://xtdb.com which is also implementing SQL:2011's temporal features :)


I believe datomic does theoretically run on top of Postgres.

Do you mean something with sql query syntax?


The on-prem version can use PostgreSQL as a backing store, but it’s essentially blob storage of serialized data: the schema in Postgres isn’t the logical representation of the corresponding Datomic schema.


love the design of this, nice work!


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.


"Own your data"

But it seems to require a Github and a Vercel account: https://outstatic.com/docs/getting-started


https://outstatic.com/docs/faqs#can-i-host-my-outstatic-webs...

From the above Outstatic FAQ:

> Can I host my Outstatic website on a provider other than Vercel?

> We specified Vercel on the documentation as it is the only platform we've tried Outstatic on. I don't see why it wouldn't work on other platforms such as Netlify or your own preferred setup.

Doesn't seem like deploy is baked into the library, it's just in the documentation as an example (a bit misleading and had to read the FAQ to figure this out). They are helping you setup Vercel's "deploy" from github that's available to any github repo, not specific to Outstatic CMS. You can setup a Github action to deploy anywhere you want.

As many people here have mentioned in this thread, Netlify CMS was a big player in this space but has since been abandoned. If a project like that, backed by a company with resources, can get abandoned so easily, it doesn't give me confidence that a self-proclaimed side-project will have longevity.


If you add code to Github and host it on Vercel, isn't ownership still yours?


Seeing that Github is exploiting FOSS for its own commercial interests and possibly violating licenses (Copilot), it's not exactly the kind of ownership that I envision when somebody says "own your data".

Don't know much about Vercel, but I'd be skeptical.

I think it'd be an improvement over this project to make those dependencies optional. For example, if I wanted to self-host. I'm using NetlifyCMS for a project and I agree with others that the whole space could use a bit of innovation.


In my opinion, code I add to Github is still mine. Guess we'll have to agree to disagree here.

Self-hosting would be awesome indeed, but I think doing it would be quite complicated because of the authentication part, which is needed to push changes to a git provider.


I don't know how much you want to get into this, but since we're already on this topic:

https://www.netlifycms.org/docs/external-oauth-clients/ https://docs.gitea.io/en-us/oauth2-provider/

NetlifyCMS allows you to define your own backends, and Gitea now has OAuth2 support. Should be able to adopt a similar strategy and allow Gitea to be used as a backend.


Thanks for the references. I'm definitely interested in adding more options to Outstatic. Haven't heard of Gitea before. It looks cool :)


But the HN post says:

> doesn't require a complicated setup or signing up to a third-party service!


What is "your data".

Is it (a) "Your Content", (b) all the data that Github gets from hosting "Your Content" or (c) both.

With respect to people who upload data to Github, under the Github Terms of Service,^1 specifically the license that these people grant to Github, there is almost nothing that Github cannot do with "Your Content".^2^3

Anything that falls under "applications, software, products and services" is fair game. If the product is [whatever], they have granted Github a license to use their content for it. If the service is [whatever], they have granted Github a license to use their content for it. No one knows what products or services Microsoft may choose to pursue through Github in the future.

1. https://docs.github.com/en/github/site-policy/github-terms-o...

2. The one potential prohibition is the sale of "Your Content." But, as in the case of Facebook, it would make little sense to sell user generated content. It is the company's largest asset. Of course, nothing prohibits Github from giving away or otherwise transferring Your Content to a third party, not as part of a sale. As long as this activity is part of "applications, software, products or services" offered by Github, it is permitted. As above, that could be anything, and we have no way to predict what Microsoft may choose to do in the future.

3. However Github is explicitly permitted to transfer "Your Content" to "partners" such as

      Internet Archive
      Software Heritage
      The Long Now
      piql
      Stanford University
      Bodleian Libraries
      GH Torrent
      GH Archive
      Microsoft Research
      Bibliotheca-Alexandrina
We have no idea what if any terms Github requires of its partners with respect to "Your Content".

You may have no direct relationship with those partners and thus no means of limiting what they can do with "Your Content".

To be truthful, some of those partners may have fewer commercial incentives than Microsoft, hence the risk of objectionable uses may be lower. But then we are left wondering why Microsoft needs to be an intermediary between the content owners and the "partners" who can store Your Content for future generations, at no cost to you, e.g., Internet Archive.

No doubt, by acting as an (unnecessary) intermediary, sitting in between "Your Content" and anyone who wishes to access it, Microsoft is collecting and generating vast amounts of data that fall outside of "Your Content". Obviously, this data is outside of your control. Do you "own" it.


Interesting. Thanks for the info. Ownership of data can be tricky, if you consider things like Google cache and the Internet Archive, then anything you make public on the internet isn't really yours.


Well, the RIAA would probably disagree the next time they issue a DMCA request. That's just not how copyright law works. Your opinion is not uncommon, though; I don't know why people adopt such a defeatist approach when corporations fuck us up.


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.


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.


The For you feed [1] (currently in beta) supposedly does that, one of the things it will populate with is, updates about your starred repos.

[1]https://docs.github.com/en/account-and-profile/setting-up-an...


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.


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.


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.


The best CMS is your native filesystem and using web pages that are and use files.


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


Can you speak a bit more as to how you are extracting the data from Apple Notes / iCloud into next?


You mean like gollum?


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.


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.


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.


> 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.


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.


You're right my bad


> 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.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: