Git Product home page Git Product logo

quokka's Introduction

Travis CI Coverage Status Twitter Join Slack Chat Slack Code Health Small Acts Manifesto

wercker status Launch on OpenShift

Quokka project

Flask and MongoDB powered CMS

quokka cms

Quokka is a flexible content management platform powered by Python, Flask and MongoDB.

quokka cms admin content dashboard

Quokka runs on Python 2.7 (Python 3 support is being developed)

Get Quokka Master and enter in to its root directory

git clone https://github.com/quokkaproject/quokka --branch master --single-branch
cd quokka

if you are cloning to contribute to the project just clone it without the "--branch=master --single-branch" part

Run Quokka (for development)

You have 2 options RUN NORMAL or RUN IN DOCKER

RUN NORMAL

Install needed packages in your local computer

You can install everything you need in your local computer or if preferred use a virtualenv for Python

Mongo

  • Quokka requires a MongoDB instance running to connect.

    1. If you don't have a MongoDB instance running, you can quickly configure it:

      • Download from here
      • Unzip the file
      • Open a separate console
      • Run it inside the MongoDB directory:
      ./bin/mongod --dbpath /tmp/

      WARNING: If you want to persist the data, give another path in place of --dbpath /tmp

    2. If you already have, just define your MongoDB settings:

      $ $EDITOR quokka/local_settings.py
      ===============quokka/quokka/local_settings.py===============
      MONGODB_DB = "yourdbname"
      MONGODB_HOST = 'your_host'
      MONGODB_PORT = 27017
      MONGODB_USERNAME = None
      MONGODB_PASSWORD = None
      DEBUG = True
      DEBUG_TOOLBAR_ENABLED = True
      =============================================================
    3. (optional) If you have Docker installed you can simply run the official Mongo image

      cd quokka
      docker run -d -v $PWD/etc/mongodata:/data/db -p 27017:27017 mongo

O.S Requirements (optional)

  • O.S Requirements (for media conversions) you may need the following requirements on your operating system

    1. Ubuntu/Debian
      sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev
    2. Alpine Linux
      apk add gcc python py-pip libjpeg zlib zlib-dev tiff freetype git py-pillow python-dev musl-dev

Python requirements

Install all needed python packages

activate your virtualenv if you want

pip install -r requirements.txt

Create admin user, sample data and run!

  • Initial data, users and running commands

    1. Create a superuser (required to login on admin interface)

      $ python manage.py accounts_createsuperuser
      [email protected]
      P4$$W0Rd
    2. Populate with sample data (optional if you want sample data)

      $ python manage.py populate
      

      credentials for /admin will be email: [email protected] passwd: admin

    3. Run

      $ python manage.py runserver --host 0.0.0.0 --port 5000

RUN IN DOCKER

  • Run pre built docker images with everything pre-installed
  • You will need docker and docker compose installed in your machine
  • Once in Docker all data is stored behind quokka/etc folder

Install Docker and docker-compose

Ensure that local port 27017(mongo) is not being used on your computer

  • Run with docker-compose

    1. Easiest way is just running the following command in quokka root folder
    docker-compose up

    use -d on above to leave it as a daemon

    1. You can create a new admin user to login and start posting
    docker-compose run shell python manage.py accounts_createsuperuser
    1. Or populate with sample data (optional)
    docker-compose run shell python manage.py populate

    credentials for /admin will be email: [email protected] passwd: admin

    1. You enter Quokka Shell (in a separate console) or run any other command in place of *shell
    docker-compose run shell python manage.py shell
  • Run standalone containers

(each in separate shells or use -d option)

1. run mongo container
```bash
docker run -v $PWD/etc/mongodata:/data/db -p 27017:27017 --name mongo mongo
```

2. run quokka web app container
```bash
docker run -e "QUOKKA_MONGODB_HOST=mongo" -p 5000:5000 --link mongo:mongo -v $PWD:/quokka --workdir /quokka -t -i quokka/quokkadev python manage.py runserver --host 0.0.0.0

```

3. run quokka shell if needed
```bash
docker run -e "QUOKKA_MONGODB_HOST=mongo" -p 5000:5000 --link mongo:mongo -v $PWD:/quokka --workdir /quokka -t -i quokka/quokkadev python manage.py shell

```

Deployment

Check wsgi.py, wsgi_gunicorn.py and scripts under /etc folder for deployment options or check documentation

DOCS

Documentation is not complete yet, but is being written at:

http://quokkaproject.org/documentation

If you want to help writing the docs please go to https://github.com/quokkaproject/quokkaproject.github.io

Also there is a Wiki

NOTE: the content from wiki will be moved to /documentation

Hosting

You can host a Quokka website in any VPS or cloud which supports Python and Flask + MongoDB access, a good option is to host the database in MongoLab if your hosting server does not provide Mongo.

  • PythonAnywhere can run Quokka with Mongo hosted at MongoLab
  • DigitalOcean is a good option for a VPS
  • Jelastic Cloud has the easiest Quokka deployment - http://docs.jelastic.com/ru/quokka-cms

Is it any good?

Yes!

python   flask   mongo   pythonhub

FAQ

Why another CMS?

There is a large number of great CMS's in Python ecosystem (Plone, Opps, Mezannine, DjangoCMS etc), each one has its own patterns for extension development and theme management. A CMS can take a its role as "Product" or as "Platform" and for Quokka the idea is to play in both scenarios, The CMS should be easy to deploy, extensions and themes should be "drop-in", it should be easy to develop extensions and also it should use a "schema-free" database. Until Quokka there was no CMS filling all these needs.

Why Flask?

Because Flask is Pythonic! In my research + experience it is the best framework to develop applications which rely on "pluggable features" thanks to its Blueprints and Extension patterns, also Flask plays well with any DB/ORM of choice. (see next question)

Why MongoDB?

Because database scheme migrations are no-happy for CMS and a Quokka CMS must be always happy to work with, so no-schema-migrations is needed with MongoDB! and Mongo is the easiest, flexible and most suitable NoSQL for CMS, also there is excellent extensions for Flask (MongoEngine and Flask-Admin) which supports MongoDB!

Why the project is named "Quokka?"

Because it is the happiest animal in the world!

20 FACTS ABOUT QUOKKAS

    1. Happiest animal in the world because they are known for how much they smile.
    1. They are marsupials
    1. They live on rottnest island named after quokkas because a Dutch guy thought they were large rats. Rottnest means "rats nest"
    1. They can climb trees
    1. Herbivores-they eat leaves,stems,grass,etc;
    1. They are nocturnal
    1. They can live for long periods of time, living off of the fat stored in their tails lol
    1. Females usually give birth once a year
    1. Quokkas are old enough to have babies at 1.5 years old!!
    1. Live 5-10 years
    1. Declining population—logging, pollution, killed by foxes,pet dogs, pet cats, humans,etc;😭😭
    1. They live in tall grass near water
    1. Btw if you meet a quokka don't feed it anything due to declining population because it could affect them
    1. Quokkas highest speed is 20mph
    1. They don't chew food.they just swallow it
    1. Closely related to the Rock Wallaby (in the picture^^^)
    1. Scientific name is Setonix Brachyurus
    1. Joey stays with mom for 35 weeks
    1. Quokkas recycle a small amount of their bodies waste products
    1. They create their own trails and paths to get food and runaway from predators.

License

This project is licensed under the MIT license, see LICENSE for more details.

quokka's People

Contributors

rochacbruno avatar ellisonleao avatar alexandre avatar jniltinho avatar felipevolpone avatar itsnauman avatar realli avatar blakev avatar xiaohanyu avatar imgxx avatar avelino avatar guswidrig avatar matheusbrat avatar hgraubit avatar drgarcia1986 avatar abnerpc avatar 030io avatar bitdeli-chef avatar diegoyungh avatar hersonls avatar yasoob avatar smurfix avatar seanhussey avatar rturk avatar

Watchers

James Cloos avatar Wagner Trindade avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.