VaporCMS - The greatest content management system that will never exist

Related tags

CMSVaporCMS
Overview

VaporCMS

The greatest content management system that will never exist

Overview

WordPress is a huge success but could it be done better? Maybe being more opinionated would help with consistency and / or simplicity. I don't really like PHP so that's gonna go. This initial sketch is going to use Python / Go but it's just a PoC. PostgreSQL is going to be the database (no ORM, but will have a storage facade). All state lives in the DB, nothing lives on the file system (stateless web servers, caching will play a role). In general, HTML rendering will be handled by the server.

Design

The core system is nothing more than a bare-bones set of relationships between the primitives described below. The expected "baseline" functionality of the CMS will be implemented as a set of pre-defined plugins that ship with the system. This ensures that the plugin design is flexible enough to meet most requirements. The page builder, plugin manager, user manager, etc will all be implemented as plugins.

Wouldn't that create a chicken and the egg problem? It would if these baselines plugins didn't ship with the application. They can always be replaced by others if desired (a diff page builder, for example). These are some intense dog-fooding goals but I think they are critical to get right. This project strives to achieve a similar level of design efficiency and orthogonality as the level design in Dark Souls 1.

Primitives

These are super important and should be selected with great intention. In no particular order:

  • Page
    • flexible
    • open-ended
    • what combo of HTML / CSS / JS?
    • how can they refer to other "partial" page templates?
    • how do you link up the jinja template data?
    • default set + custom models as needed?
    • page "types" like django? DetailView, ListView, etc? map to a model?
  • Form
    • represents data to be sent to the application
    • independent of a particular design / layout
    • just the field names, types, etc
  • Route
    • maps URLs to Pages
  • Model
    • Record type of data that the site cares about
    • User, page, form, route, etc (defined by core plugin)
    • Relationship as separate primitive? Or defined within models?
    • Should I leverage an ORM based on this? SQLA? Peewee? GORM?!?
  • Plugin
    • allow for near-arbitrary customization of appearance and behavior
    • can be dragged and dropped in as a bundle (like WP)
    • written in Python / Go
    • can contain static files (HTML / CSS / JS)?
    • can plugins define pages at all? or just models / behavior?
    • isolated: separate / sub process? container w/ a REST API?
    • require Dockerfile / plugin.yml to be in repo root?

Plugin API

Super rough sketch:

  • GET / - Return plugin metadata: name, version, models, implemented endpoints, etc

Model API

This is based on Kong's DAO concept. Each custom model definition will generate the following endpoints:

  • POST / / - Create a new record
  • GET / / - Get all records
  • GET / /:id - Get a record by primary key
  • PUT / /:id - Update an existing record
  • DELETE / /:id - Delete an existing record

References

asyncpg
starlette
uvicorn
Docker SDK for Python
Django-based CMS
Kong Plugin Structure
Kong Plugin DAOs
Kong Plugin DAO API
Kong Plugin Basic Example

Setup

This project uses PostgreSQL for persistent storage. To develop locally, you'll an instance of the database running somehow or another. I find Docker to be a nice tool for this but you can do whatever works best.

The following commands start the necessary containers and define environment variables that the app will look for:

docker compose up -d
export VAPORCMS_DATABASE_URL=postgresql://postgres:[email protected]:5433/postgres

You'll need to run the initial migrations, too:

psql $VAPORCMS_DATABASE_URL < create.sql

These containers can be stopped via:

docker compose down
Owner
Andrew Dailey
Andrew Dailey
LOOKING FOR NEW MAINTAINER - Quokka is a Content Management System - `docker run --rm -it -p 5000:5000 quokka/quokka`

Quokka The Happiest CMS in the world Quokka is a Content Management Framework written in Python. A lightweight framework to build CMS (Content Managem

Quokka Project 2.2k Jan 01, 2023
Open Source CRM based on Django

Django-CRM Django CRM is opensource CRM developed on django framework. It has all the basic features of CRM to start with. We welcome code contributio

MicroPyramid 1.4k Dec 31, 2022
Backend routes and database for an abstract theoretical app that relates a database of courses, users, and assignments.

Backend routes and database for an abstract theoretical app that relates a database of courses, users, and assignments.

Sean Wiesner 0 Dec 27, 2021
LibreLingo๐Ÿข ๐ŸŒŽ ๐Ÿ“š a community-owned language-learning platform

LibreLingo's mission is to create a modern language-learning platform that is owned by the community of its users. All software is licensed under AGPLv3, which guarantees the freedom to run, study, s

Daniel Kantor 1.4k Jan 09, 2023
A Django-based CMS with a focus on extensibility and concise code

FeinCMS - An extensible Django-based CMS When was the last time, that a pre-built software package you wanted to use got many things right, but in the

FeinCMS 847 Jan 07, 2023
An encylopedia that runs on Django as part of CS50w's coursework

Django Wiki As part of the CS50w course, this project aims to apply the use of Django together with HTML and CSS to replicate an encyclopedia. Require

Beckham 1 Oct 28, 2021
Indico - A feature-rich event management system, made @ CERN, the place where the Web was born.

Indico Indico is: ? a general-purpose event management tool; ? fully web-based; ? feature-rich but also extensible through the use of plugins; โš–๏ธ O

Indico 1.4k Dec 31, 2022
Python scripts to interact with the CakeCMS API.

Python scripts to interact with the CakeCMS API. Installation of the python module Prerequisites The cakecms module has to be installed first. Install

Fabian Thomas 3 Jan 31, 2022
Django e-commerce website with Advanced Features and SEO Friendly

MyTechยฎ - Your Technology Django e-commerce website with Advanced Features and SEO Friendly Images and Prices are only used for Demo purpose and does

28 Dec 21, 2022
CMS for everyone, easy to deploy and scale, robust modular system with many packages.

Django-Leonardo Full featured platform for fast and easy building extensible web applications. Don't waste your time searching stable solution for dai

97 Nov 17, 2022
E-Commerce Platform

Shuup Shuup is an Open Source E-Commerce Platform based on Django and Python. https://shuup.com/ Copyright Copyright (c) 2012-2021 by Shoop Commerce L

Shuup 2k Jan 07, 2023
Link aggregator community organised by tags in python3/django3 + sqlite3.

sic Link aggregator community organised by tags in python3/django3 + sqlite3. Public instance at https://sic.pm and Tor hidden service.

Manos Pitsidianakis 97 Dec 30, 2022
Crypt Wiki - VimWiki with added support for encryption/decryption

Crypt Wiki - VimWiki with added support for encryption/decryption This project is meant to solve an issue I have ran into recently. I wanted to have a

Adrian Costin 6 Dec 18, 2022
CMS framework for Django

Created by Stephen McDonald Overview Mezzanine is a powerful, consistent, and flexible content management platform. Built using the Django framework,

Stephen McDonald 4.6k Dec 29, 2022
A python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs

CMSmap CMSmap is a python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs. The main purpose of

RazzorBack 1 Oct 31, 2021
Django content management as it should be

Django content management as it should be. Documentation Read the full documentation or get a quick brief below. Install $ pip install djedi-cms Confi

5 Monkeys 75 Dec 13, 2022
django blog - complete customization and ready to use with one click installer

django-blog-it Simple blog package developed with Django. Features: Dynamic blog articles Blog pages Contact us page (configurable) google analytics S

MicroPyramid 220 Sep 18, 2022
A plugin for Wagtail CMS, to have Icon Blocks (Fontawesome support)

WAGTAIL ICONIFY Library developed for Wagtail CMS, its purpose is to provide icon blocks from various libraries Special thanks to Alex Gleason, as wel

2 Jun 07, 2022
ConnectLearn is an easy to use and deploy Open-Source Project meant to make it easier for the right students to find the right teachers online.

ConnectLearn ConnectLearn is an easy to use and deploy Open-Source Project meant to make it easier for the right students to find the right teachers o

Aditya 5 Oct 24, 2021
CSM: Construction Safety Management system

CSM: Construction Safety Management system 1. ์„œ๋น„์Šค ์†Œ๊ฐœ ๊ฐœ์š”: ๊ณต์‚ฌํ˜„์žฅ์—์„œ์˜ ์ตœ์ ์˜ ์•ˆ์ „์ง„๋‹จ๊ธฐ์ˆ ์„ ํ†ตํ•œ ๊ณ ๋„ํ™”๋œ ์‹œ์Šคํ…œ์œผ๋กœ ๊ฐœ์„ ํ•˜๊ณ ์ž ํ•จ ๋ชฉํ‘œ: ์•ˆ์ „ ๊ด€๋ จ ์ฃผ์š” ์‹œ๊ฐ๋ฐ์ดํ„ฐ๋ฅผ Cross-Domain์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ ํ†ตํ•ฉ ์•ˆ์ „ ๊ด€๋ฆฌ๊ธฐ์ˆ ์˜

5 Jul 29, 2022