Will Strapi ever support a flat file database?

I’m interested in knowing whether Strapi either does or ever could support a flat file database / architecture.

I ask because my portfolio sites have always ever been flat files (aside from WordPress) and with static site solutions it’s easy to manage project resources as a single markdown file and a folder of images.

I’m really interested in using Strapi, but curious to know whether this could be achieved (perhaps writing a new database driver) and even if it’s a good idea / what the tradeoffs would be.

Any experts here?

Thanks.

Potentially but it’s unlikely to be build by us. Later on this year we plan to modify the strapi-database package to accept 3rd party strapi-connector- packages meaning users can build their own DB connectors.

I will admit though, flat file can very easily get out of hand, and would be extremely annoying with relations. It would also be much slower as the number/size of files increases since you have no index.

1 Like

Hey,

Thanks for replying!

Yeah, thought that might be the case regarding writing one.

I don’t know enough to comment on relations, but suspect if markdown, then frontmatter could be used.

There’s nothing to stop adding a file watcher and rebuilding indices when things change though, I suppose?

I’ve solved my problem for now by using VuePress, but want to get to know Strapi this year, so looking forward to learning the ins and outs, and hopefully I will be in a better position to contribute in future.

It’s more so like reinventing the wheel. Certain applications of a CMS make sense to store data in flat files (blogs, ect) but for the bulk of use-cases flat file is either not advanced enough, or would be either practically impossible or practically too slow to really get any kind of benefit.

The same logic applies to using SQLite in production vs an actual database. SQLite has some great use-cases, they are just few and far between.

Funnily enough Notion.so uses SQLite for its production Mac and iOS client apps. It really depends on the usecase!