Project Website | Documentation | Get Free Help | YouTube Channel | Install | Slack Channel
Cosmos is an open-source CMS that runs in multiple modes depending on your need:
- Static - All content hosted on a static website with content automatically refreshed. High performance, stability and ease of operation.
- Headless - Content is delivered via API. This is best where content is consumed in many channels, such as web, mobile and desktop.
- Decoupled - Content is delivered via separate, dedicated website. Use this mode to achieve performance that is close to static, yet what "back-end" functionality.
The objectives behind Cosmos are as follows:
- Out perform classic CMS's in terms of speed, capacity and stability.
- Easy to use by web developers and non-technical content editors alike.
- Easy to administer, and low cost to operate.
- Offer the ability to easily run in static, decoupled and headless modes.
- High capacity websites such as those use by governments during emergencies.
- Content-heavy websites like: New York Times, National Geographic, Hulu, Condé Nast, TikTok, Spotify for Artists.
- Efficient content delivery with minimal bytes and handling sudden bursts.
- Multi-regional redundancy with minimal administration.
- User-friendly for non-technical contributors with little training.
We aimed to create a system that is user-friendly for both web developers and non-technical content editors. Our goal was to enable content editors to create and maintain web pages with minimal training. To achieve this, we assembled the best collection of web content tools available.
CKEditor is a widely-used "no-code" or WYSIWYG (What You See Is What You Get) HTML text editor that allows users to create and edit web content with ease, without needing to write HTML code. It is highly popular due to its robust features, including rich text formatting options, a customizable interface, and extensive documentation 1. CKEditor supports a wide range of plugins, enabling users to extend its functionality to meet specific needs. Its frequent updates and large community also contribute to its reliability and versatility, making it a preferred choice for developers and content creators alike 2.
GrapesJS is a free, open-source web builder framework designed to help developers and designers create and customize web pages and HTML templates with ease. It features a visual editor with a drag-and-drop interface, allowing users to build complex web pages without needing extensive coding knowledge 3. GrapesJS is popular due to its flexibility, extensive customization options, and a wide range of pre-designed templates and components 4. It was initially developed to be integrated into Content Management Systems (CMS) to speed up the creation of dynamic templates, making it a versatile tool for both beginners and experienced developers 4. The ability to export designs in various formats and its active community support further contribute to its widespread adoption 3.
See our YouTube video that shows GrapesJS at work with Cosmos.
The Monaco Editor is a powerful, open-source code editor that powers Visual Studio Code, Microsoft's popular code editor. It is designed to provide a rich editing experience with features like syntax highlighting, IntelliSense, and code navigation 5. Monaco Editor is highly popular due to its versatility and performance, supporting a wide range of programming languages and being easily embeddable in web applications 6. Its robust API allows developers to customize and extend its functionality to suit specific needs, making it a preferred choice for many web-based development tools 6. The active community and continuous updates further enhance its reliability and appeal 5.
Our implementation of Monaco includes a DIFF tool and Emmet Notation.
Filerobot Image Editor is a versatile, easy-to-use image editing tool designed to be seamlessly integrated into web applications. It allows users to perform a variety of image transformations such as resizing, cropping, flipping, fine-tuning, annotating, and applying filters with just a few lines of code 7. Its popularity stems from its simplicity, extensive functionality, and the ability to enhance user experience by providing powerful editing capabilities directly within web platforms 7. Additionally, its open-source nature and active maintenance ensure it remains up-to-date and reliable for developers 8.
FilePond is a versatile file upload library designed for web applications, offering a sleek and customizable interface for handling file uploads. It supports features like image previews, drag-and-drop functionality, and file validation, making it user-friendly and efficient 9. FilePond's popularity stems from its ease of integration, extensive customization options, and the ability to handle various file types seamlessly 9. Its active community and continuous updates ensure it remains a reliable and up-to-date solution for developers looking to enhance their web applications with robust file upload capabilities 9.
Cosmos is a cloud-native application that uses a modern tech stack.
Cosmos CMS uses Azure Cosmos DB, which is a fully managed, globally distributed NoSQL and relational database service provided by Microsoft. It is designed to offer high availability, low latency, and seamless scalability.
Cosmos stores static assets uploaded as content to the website in a blob storage with a static website. This is key to how Cosmos can perform so well. Hosting website assets this way offers several benefits:
- Blob storage with a static website improves performance by reducing server load and latency.
- Cost-effective and scalable for storing large amounts of unstructured data (images, videos, documents).
- Ensures high availability and durability, protecting against data loss.
- Simplifies deployment and maintenance by eliminating server-side processing.
The Editor, Publisher, and API are all ASP.NET Core applications that are Linux Docker containerized. We deploy each in Web App Services, hosted by App Service plans. The publisher application also comes in as NodeJS application that is deployed via code, and uses the Cosmos API service.
Almost 70% of the code base is JavaScript, and much of that is from CKEditor, GrapesJS, Monaco, Filerobot, and Filepond. Back-end logic is written in ASP.NET Core (C#), and that accounts for only 9%. What remains is CSS, HTML, SCSS and TypeScript.
Most of what makes up Cosmos is NPM and NuGet package-based.
The Editor, API and the ASP.NET Core-based Publisher are deployed as Docker containers. Each can be found on Docker Hub:
- Editor Docker Container
- API Docker Container
- Publisher Docker Container
- NodeJS Publisher code deploy
Cosmos and all its components are installed using a Azure Resource Manager (ARM) template. The source code for these templates are located in the ArmTemplates folder of this repository.
Go to the documentation website to install Cosmos.