12 April 2024
These are the design principles of Spina CMS, a flexible CMS built with Ruby on Rails. The team behind Spina has strong opinions about what a good CMS should be like and has applied them to their product. This set of design principles represents the ideas that the team behind Spina CMS has boiled down.
Source: Spina Design Principles
This one should be obvious, but it's worth repeating. Keep in mind who the end user is and build accordingly. Cut away the cruft. Not everything has to be editable.
Web design is often criticized for being too boring and similar. Traditional CMSs make it difficult to create complex editable layouts, discouraging exciting design. Spina provides flexible content fields for everything you need – nothing more – and then goes out of your way.
HTML belongs in source code, not in a CMS. The end user shouldn't need to know what HTML is to edit their website.
What you see is what you get is a promise that fails to deliver. Instead, Spina includes easy to use page editing forms with clear labeling. It uses Trix for rich text fields. Page forms in Spina have zero optional fields so users don't have to guess.
Everything a developer has to configure should be done in Ruby, not in Spina. Configuration rarely changes, storing it in version control is better than storing it in a database.
Slow websites kill the user experience. Spina uses Postgres' JSONB-type to store all content as JSON. This makes pages screaming fast without having to worry about cache expiration. It's better to embed content directly on a page than to reference a different table.
More dependencies equals harder maintenance. Spina tries to stick with the vanilla Rails stack as much as possible. That way there's little risk of getting trapped in dependency hell when upgrading down the line.
This one should be obvious, but it's worth repeating. Keep in mind who the end user is and build accordingly. Cut away the cruft. Not everything has to be editable.
Web design is often criticized for being too boring and similar. Traditional CMSs make it difficult to create complex editable layouts, discouraging exciting design. Spina provides flexible content fields for everything you need – nothing more – and then goes out of your way.
HTML belongs in source code, not in a CMS. The end user shouldn't need to know what HTML is to edit their website.
What you see is what you get is a promise that fails to deliver. Instead, Spina includes easy to use page editing forms with clear labeling. It uses Trix for rich text fields. Page forms in Spina have zero optional fields so users don't have to guess.
Everything a developer has to configure should be done in Ruby, not in Spina. Configuration rarely changes, storing it in version control is better than storing it in a database.
Slow websites kill the user experience. Spina uses Postgres' JSONB-type to store all content as JSON. This makes pages screaming fast without having to worry about cache expiration. It's better to embed content directly on a page than to reference a different table.
More dependencies equals harder maintenance. Spina tries to stick with the vanilla Rails stack as much as possible. That way there's little risk of getting trapped in dependency hell when upgrading down the line.