Package: quokka
quokkaThe Happiest CMF in the worldQuokka is a Content Management Framework written in Python.A lightweight framework to build CMS (Content Management System) as
websites, portals, blogs, applications and anything related to
publishing content to the web.Quokka is not limited to CMS area, it is also possible to create Quokka
extensions to provide any kind of web application based on Python and
Flask.Quokka can also (optionally) generate a static website from the contents
generated in its admin interface.FeaturesWeb based content management admin interfaceMultiple content formats (markdown, rst, html, plaintext)Compatibility with any of thePelican ThemesFlat file NoSQL databaseTinyDBor optionallyMongoDBfor
scale deploymentsHost the Quokka server or generate a static websiteExtensible via modules/pluginsPowered by Python, Flask, Flask-Admin, TinyMongo and Pelican ThemesQuick StartInstall and run for development modegitclonehttps://github.com/rochacbruno/quokkacdquokkapython3-mvenvvenv.venv/bin/activatemakeinstallmakedevserverOr install quokka from PyPIpython3-mvenvvenv.venv/bin/activatepip3installquokkaNOTE:QuokkaCMSrequiresPython3.6+Start a project$quokkainitNewWebsite--theme=flex--modules=gitpages,heroku...🐹Quokkaprojectcreated🐹📝Name:NewWebsite📁Location:/tmp/newwebsite📚Template:default🎨Themes:flexthemeinstalled🚚Modules:[gitpages,heroku]installed🔧Config:Configfilewrittenin/tmp/newwebsite/quokka.yml➡Goto/tmp/newwebsite⚙run`quokkarunserver`tostart!📄Checkthedocumentationonhttp://quokkaproject.org🐹HappyQuokka!🐹YES!itoutputsemojis🐹The above command will generate your project inmyprojectfolder as:.├──databases# TinyDB database files (gitignored)├──modules# Custom modules to load on EXTRA_EXTENSIONS├──static_build# output static site├──themes# Front-end Themes (Pelican and Quokka Themes supported)├──uploads# Media uploaded via admin├──.gitignore# gitignore to exclude sensitive files├──quokka.yml# Project settings├──.secrets.yml# To store keys, tokens and passwords (gitignored)└──wsgi.py# To deploy `gunicorn wsgi:app`You can optionally pass arguments:Choose existing theme (the default isMalt)quokkainitmywebsite--themehttp://github.com/user/themeInstall modulesquokkainitmywebsite--themehttp://github.com/user/theme--modules="commerce,foo"theabovelooksfor``quokka_commerce``and``quokka_foo``inPyPIandinstallsitSet important configurationsquokkainitmywebsite--themehttp://github.com/user/theme--config="auth_enabled=false"Thatisoptional,youhavetoedit``quokka.yml``totuneyoursettings.Run your websitequokkarunserver--port5000Access admin interfacehttp://localhost:5000/adminAccess your sitehttp://localhost:5000DeployYou can deploy your Quokka Website in a WSGI serverCheck thewsgi.pyand refer to it when deploying in wsgi servers.cdmyprojectgunicornwsgi:app-w4-b"0.0.0.0:8000"An example ofsupervisordconfig[program:quokka]command=/myproject/venv/bin/gunicorn wsgi:app -w 4 -b "0.0.0.0:8000"directory=/myprojectFor more information readGunicorn
documentationPublish Static HTML websiteNOTE: To generate a static website all user management, keys and
passwords will be removed from settings.You can generate a static HTML website to host anywhereOnce you have your website running locally you can easily generate a
static HTML website from it.$quokkapublish--static[--outputpath]GeneratingstaticHTMLwebsiteon./static_buildfolderOnce you have a ./static_build folder populated with static website you
can deploy it using SCP, FTP or git, it is a full static website.Deploying to github pages from command lineNOTE: You need either ssh key access to github or it will ask
login/passwordquokkapublish--static--git=rochacbruno/mysite--branch=gh_pagesTheaboveisalsoavailableinadminunder'publish'menu.Deploying via SCPquokkapublish--static--scp--dest='me@hostname:/var/www/mysite'[--sshkey~/.ssh/key][--passwordxyz]password:...Deploying to HerokuThis requiresherokuclient installed, ifProcfileis not
found it will be generatedquokkapublish--static--heroku--optionsDeploying via FTPquokkapublish--static--ftp--host='ftp://server.com'--dest='/var/www/mysite'Load database from remote deployment (only for TinyDB)When you publish a static website along with the static files the
database also goes to the server under the databases/ folder only as a
backup and snapshot.You can load that remote database locally e.g: to add new posts and then
re-publishquokkarestoredb--remote--git=rochacbruno/mysiteCreatingabackupoflocaldatabase...DownloadingremotedatabaseRestoringdatabase..Done...Now you can runquokka runserveropen yourlocalhost:5000/adminwrite new content and thenPublishwebsite again using command line
or admin interface.NOTE: If you want to restore a local database use--localand--pathpath/to/dbUsing MongoDBYou can choose to use MongoDB instead of TinyDB, That is useful
specially if you deploy or local instance has more than one admin user
concurrently and also useful if you want to install plugins which
support MongoDB only (because it relies on aggregations and gridfs)You only need a running instance of Mongo server and changequokka.yml:DBon your project from:quokka:DB:system:tinydbfolder:databasesto:quokka:DB:system:mongodbname:my_databasehost:127.0.0.1port:2600Then when runningquokkaagain it will try to connect to that Mongo
Server.With that you can deploy your site onwsgiserver or can also
generatestaticwebsite.Running mongo in a Docker containercdyour_quokka_project_folderdockerrun-d-v$PWD/databases:/data/db-p27017:27017mongo# wait some seconds until mongo is startedquokkarunserverContributing to Quokka CMS DevelopmentDo you want to be part of this open-source project?Take a look atContributing GuidelinesSetup a contributor environmentEnsure you havePython3.6+clone this repo and:gitclonehttps://github.com/$YOURNAME/quokka_ngcdquokka_ng# create a Python3.6 virtual envmakecreate_env# activate the venv.venv/bin/activate# install Quokka in --editable mode (using flit)makeinstall# run quokkamakedevserverAccesshttp://localhost:5000/adminandhttp://localhostROADMAPThis list is available onhttps://github.com/rochacbruno/quokka_ng/issuesThis is the list of tasks to be completed until1.0.0can be
released. support 100% coming only formaltandbootstrap3themes