Limitations

Illustrated drawing of Amadeus Maxmimilian StadlerIllustrated drawing of Amadeus Maxmimilian Stadler

Amadeus Stadler

Published July 30, 2021

Like Mattrbld itself, this article is still a work in progress. So please excuse any missing links or unfinished content. Thank you! 😊

Transparency matters, that’s why I want to be upfront about what Mattrbld cannot do yet and what it will likely never be able to do. There are two types of limitations: technical limitations and missing features. This article goes over both, so you can ensure that Mattrbld is the right tool for you before you jump into it.

This article will be updated as time goes on as missing features are added, or new limitations are discovered. So if you ever stumble over something, check here first—there might be a workaround.

Technical Limitations

CORS Proxies Required

Unfortunately, many Git providers didn’t anticipate that anyone would ever want to access their content via a web browser. As such, they have not configured their servers with the right CORS-headers necessary for the browser to be able to talk to them, which is why requests may fail.

While some providers have listened to their users and implemented permissive CORS headers that would make it possible to use something like Mattrbld with them out of the box, the big three—Gitlab, GitHub and Bitbucket—have not done so, often referring to their proprietary APIs instead.

To mitigate this issue, a proxy server can be used, which is why it’s possible to define a CORS proxy server URL in Mattrbld. This proxy server will then make the request to the Git provider on the browser’s behalf and send the data back to it. Unfortunately, this also means that all requests directed at your Git provider (clone, pull, push) including your authentication information are piped through that proxy server—which to some might justly so present a privacy issue.

The main Mattrbld instance comes pre-configured with its own proxy server, which you are free to use for small-scale, private projects. If you plan on using Mattrbld for larger projects causing a lot of traffic, please host your own. You can learn more about how to do so in this article on CORS handling.

No Post Scheduling and other Automation

Since Mattrbld only runs when you’re actively using it, there’s no way to implement common automation functions such as publishing content on a certain date. That would require some sort of always-active service running on a server somewhere.

There are ways to achieve such functionality with certain static site generators for example by hiding content which has a publishing date in the future—but such solutions might not be suitable if there should be no trace of the hidden content in the generated bundle.

Most, if not all, actions within Mattrbld require direct user interaction. This has its advantages, but needs to be kept in mind.

Browser Storage Constraints

Web browsers, especially on mobile devices, heavily constrain how much data can be stored by a website / progressive web app to avoid abuse. Unfortunately, this also means that you might run into these limitations if the projects you import into Mattrbld are large and include many big files.

Mattrbld will try to keep an eye on how much of your allotted storage quota you are using in the Home-screen, but unfortunately this data is inherently inaccurate to avoid browser fingerprinting and might not be available at all in certain browsers. Should you ever run into errors something like “Storage Quota Exceeded”, try clearing up space on your device or removing old projects from Mattrbld—as long as they don’t have local changes, you will simply be able to re-import them whenever you need them.

An Account for the Git Provider Required

Since it’s unlikely you would want just about anyone modifying your project, you and your collaborators have to have the permission to read and modify the Git branch you import into Mattrbld.

If the repository / branch is public, anybody will be able to import it as a project into Mattrbld, but they won’t be able to push any changes without signing in. If it’s private, they will be asked to log into their account at the respective Git provider to confirm that they do indeed have access to the project, before they can import it.

This means two things:

  • You will have to add people you wish to be able to work on the project with to the project on your Git provider’s site, e.g. on GitHub

  • All project members need an account at that Git provider, e.g. a GitHub account

To learn more about this system, how it works and why it’s necessary, please refer to the article on authentication.

Missing Features

No Support for YAML, TOML, etc. Files for Content

At the moment, Mattrbld only supports JSON and Markdown files with YAML frontmatters for content. Support for plain YAML files is planned, but not yet implemented.

No Graphical Way to Add Images in Rich Text Editors

For the time being, it’s not possible to add images to rich text editor fields, even if that would be allowed by the Schema. Support for it is under construction—until then you can manually enter images in HTML / Markdown syntax using the editors “raw” mode when enabled.

No Conflict Resolution

At the moment, Mattrbld is not able to resolve merge conflicts, i.e. cases where the same line in a file was edited by multiple users at the same time. Since this is not very likely to happen in small scale projects that are synced frequently and is hard to implement in a user-friendly fashion, this feature didn’t have a high priority. As the rest of Mattrbld matures, this will of course be added (in fact, the foundational work has already been laid).

Should you run into any errors while syncing, you might have to identify which file has the conflicting changes and discard them locally before trying again.

No Support for Git LFS

A major blocker for content with a lot of binary data (such as images, movies, archives, pdfs, etc.) is the fact that Git LFS, a system to deal with these types of data without using massive amounts of storage space, is not compatible with Mattrbld. There are efforts of making it work with the library used by Mattrbld to handle interactions with Git, but due to the complexity involved support might not arrive any time soon. Especially since even if it were to work, the storage limitations imposed by the browser mentioned above might make it impossible to import projects with gigabytes of data.

This means that unfortunately, Mattrbld isn’t suitable for content with a lot of binary data, such as media heavy websites, at the moment. To work around this you could host those types of files outside of the Git repository and link them to your content via external URLs, although you will miss out on the convenience features the Mattrbld Media Library provides.

The same is true for importing a project with LFS enabled—which will work, but not as you might expect. You will be able to see binary files in the Media Library, but since they are just pointers, there won’t be any preview und uploading new data would cause these files to not be handled appropriately by Git LFS.

Using Mattrbld for small sites with a few images, such as personal blogs or small company websites and landing pages shouldn’t be an issue though.


Closing Thoughts

At this point, you should have gotten a broad overview of how Mattrbld works, its philosophy and what it can and cannot (yet) do, which concludes the Getting Started section. If you think Mattrbld would be a good fit for your project, or you would simply like to try it out, the next section will go into more details about what the term “project” refers to in Mattrbld and how you can import, set up and work with projects using this tool.