I’m currently in the planning stage of a new project which is a content management system.
The basic requirements are somewhat straight forward:
- Rich text capability ✅
- Real-time collaboration ✅
- Subject-based search and indexing ✅
- Scalable (possible multi-server deployment in future)
- Online/offline sync
- Roll-back capability
The last few is where I’m a bit hung up on the plan. The way the requirement is, git or something extremely similar would be the ideal. Lossless, lightweight, and storage space efficient.
So I started doing some research looking to see whether anything “git-like” was available as a back-end plugin. I was looking specifically at mongoDB capabilities at first and pretty much found that building my own methodology from scratch was what I’d have to do to get everything I want.
Then I found this article from 2016 describing a way to create a no-SQL database with git itself. https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/
Thinking this through it seems very doable and interesting, and I’d get to use git directly which comes with familiarity on my part, a huge amount of documentation and utilities, and a buttload of features. That being said, I am wondering about the scalability of this method.
If I went with this route, then I was asked to deploy to a multi-server cluster with active-active capabilities would there be any way to do that? I could simply setup a master repository and sync all nodes with git pull before accessing the on-demand content rollback features; or setup a hook based sync between server nodes (something like what’s outlined here https://blog.tinned-software.net/git-repository-cluster-setup/).
However, I’m not sure if I’m trying to make something work in a way that it really shouldn’t be and I should just sigh, make peace with my lot, and start building the roll-back system from scratch.
Any advice or thoughts would be appreciated.