Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marcanuy/keraban
An inflexible, opinionated CMS.
https://github.com/marcanuy/keraban
cms django dynamic-website wagtail
Last synced: 6 days ago
JSON representation
An inflexible, opinionated CMS.
- Host: GitHub
- URL: https://github.com/marcanuy/keraban
- Owner: marcanuy
- License: mit
- Created: 2018-05-14T21:07:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-10-18T11:18:59.000Z (about 1 year ago)
- Last Synced: 2023-10-19T10:02:39.976Z (about 1 year ago)
- Topics: cms, django, dynamic-website, wagtail
- Language: Python
- Homepage: http://keraban.marcanuy.com
- Size: 1.96 MB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: contributing.md
- License: LICENSE
Awesome Lists containing this project
README
# keraban
An inflexible, opinionated CMS based on Wagtail.Design a corporate website and give your client an user to
keep the content they desire up to date.See it live! http://keraban.marcanuy.com/
The Keraban website is an example of what a typical site looks like,
the site itself its made with it.**Table of Contents**
- [keraban](#keraban)
- [Goals](#goals)
- [Design Principles](#design-principles)
- [Explanation](#explanation)
- [Features](#features)
- [Notes](#notes)
- [Installation](#installation)
- [Running locally](#running-locally)
- [Admin](#admin)
- [Customize content](#customize-content)
- [Deploy](#deploy)
- [1. Set up production webserver](#1-set-up-production-webserver)
- [Webfaction](#webfaction)
- [2. Customize production environment](#2-customize-production-environment)
- [How to](#how-to)
- [Add a Page to main menu](#add-a-page-to-main-menu)
- [Add a feature](#add-a-feature)
- [Change Business info](#change-business-info)
- [Change business data](#change-business-data)
- [Add business social network](#add-business-social-network)
- [Models](#models)
- [To do](#to-do)
- [Credits](#credits)
- [Ideas and Questions](#ideas-and-questions)# Goals
- Build and deploy websites that **can be easily maintained by non
developer users**.
- Implementation of web best practices with special focus on Google's
supported schema.org content types and [enhancements](https://developers.google.com/search/docs/guides/search-gallery#enhancements).## Design Principles
- Consistent look & feel through all web pages
- *Semantic web*: Schema.org meta tags and html5
- Optimized for Search Engines (SEO, Google's richsnippets)
- Fully responsive
- Add / Remove / Edit pages from Backend by end users# Explanation
Most corporate websites shares the same content structure, their needs
typically consist of the following pages:- homepage
- photo gallery
- features
- testimonials
- contactThis structure is most seen in websites for:
- Clinics
- Dentists
- Business
- Any organization that has a physical address and offer some kind of
service.# Features
- Based on Wagtail (Django CMS)
- Amazing back-end
- Fully Responsive (Bootstrap 4 grid system)
- Icons (FontAwesome )
- SEO
- Using Schema.org
- Social Markup
- Knowledge Graph card with details about the business
- Implementation of Google's advised [enhancements](https://developers.google.com/search/docs/guides/search-gallery#enhancements)
- **Corporate Contact** - Your corporate contact information
displayed in the Google Knowledge panel.
![panel](https://developers.google.com/search/docs/data-types/images/corporateContacts01.png)
- **Logo** - Your organization's logo in search results and Google Knowledge Graph.
![logo](https://developers.google.com/search/docs/data-types/images/logo01.png)
- **Social Profile** - Your social profile information displayed on Google Knowledge panels.
![social](https://developers.google.com/search/docs/data-types/images/social-profiles01.png)
- **Breadcrumbs** - "Breadcrumb trails on a page indicate the page's position in the site hierarchy. "
![breadcrumb](https://developers.google.com/search/docs/data-types/images/breadcrumb.png)
- Local Business Content Type
- Business details displayed prominently in the Knowledge Graph card.
![business](https://developers.google.com/search/docs/data-types/images/local-business02.png)
- SASS with Bootstrap variables available
- Contact form with (doesn't need email server
configuration)
- Google Maps in Location page
-
- Autogenerated sitemap with all pages available: */sitemap.xml*
-
- meta tags and OpenGraph, Twitter, and Google Plus properties by **django-meta**# Notes
- static files: **whitenoise**
- locally with `runserver` and
- in production
- environment variables: **django-dotenv**
- media: **django-storages**
- google analytics: **django-analytical**
- database
- develoment: sqlite3
- production: [dj-database-url](https://github.com/kennethreitz/dj-database-url)
# Installation1. Create a virtual environment:
python3.6 -m venv ~/.virtualenvs/keraban/
2. Clone the repo:git clone [email protected]:marcanuy/keraban.git
3. Use new site:
cd keraban
echo `pwd` > ~/.virtualenvs/keraban/.project
source ~/.virtualenvs/keraban/bin/activate4. Install deps
pip3 install -r requirements.txt
5. Generate site CSS
make compile-sass
6. Generate database./manage.py migrate
7. Load website data with a fixture
./manage.py load_initial_data
# Running locally
./manage.py runserver
## Admin
Super admin credentials:
- user: admin
- pass: mypass1234## Customize content
1. Adjust your site hostname at http://localhost:8000/admin/sites/
2. Edit pages with your content# Deploy
## 1. Set up production webserver
Considering you have already customized your website locally, this
section describes how to set up your webserver with the new site.Skip it to next step if you already use another one.
### Webfaction
[Webfaction](https://www.webfaction.com/?aid=28835) is a shared
hosting environment with support for Python and Django.1. Create a new
[app](https://my.webfaction.com/new-application?aid=28835).
- Fill form data:
- Name: myapp_keraban
- App Category: mod_wsgi
- App type: Django 2.0.5 (mod_wsgi 4.6.4/Python3.6)
- Hit Save button
2. Access server through SSH after looking up your server address
ssh webfactionserver
cd webapps/proaprado_keraban3. If you are installing it Create a virtualenv
python3.6 -m venv ~/.virtualenvs/myapp_keraban
4. Remove the Python interpreter installed by default to use the one
from virtualenv and the default django apprm -r lib/
rm -r myproject/myproject/
5. Set up Apache to serve your website, edit
**~/webapps/myapp_keraban/apache2/conf/httpd.conf** and change
these keys (add the first one and modify the second one). Change
**myuser** with your webfaction user:WSGIPythonHome /home/myuser/.virtualenvs/myapp_keraban
WSGIDaemonProcess myapp_keraban processes=2 threads=12 python-path=/home/myuser/webapps/myapp_keraban/myproject
WSGIScriptAlias / /home/myuser/webapps/proaprado_keraban/myproject/keraban/wsgi.py
- **Python version should match the modwsgi used by Apache or it
won't work**6. Copy the contents of your local modified keraban instance to **webfaction:webapps/myapp_keraban/myproject/**
7. Restart Apache
./myapp_keraban/apache2/bin/restart
## 2. Customize production environment
Adjust server after getting the files on the server:
1. Copy `/_env.skeleton` to `/.env` (or set up environment variables)
2. Customize `/.env` with your environment variables values
- `.env` is processed by
- Choose to use `keraban.settings.production` as the `DJANGO_SETTINGS_MODULE`
- Adjust ALLOWED_HOSTS by setting `DJANGO_ALLOWED_HOSTS`
- Set up Amazon S3:
- Create an user with programmatic access
- Create group for that user with **AmazonS3FullAccess** as the
attached policy
- generate a key with IAM
)
- Then you can fill the following keys for handling media
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_REGION
- AWS_STORAGE_BUCKET_NAME (will be created if not exists)
- Get Google maps api key
to fill GOOGLE_MAP_API_KEY and restrict its usage accepting
requests from your website at# How to
## Add a Page to main menu
In **Admin** go to **Page / Edit / Promote** and select **Show in menus**.
## Add a feature
In **Admin** go to **Page / Home**, locate the **Features index page**
and **Add Child Page**.## Change Business info
### Change business data
In **Admin** go to **Business Misc / Organization** and **Edit**
Business info.### Add business social network
In **Admin** go to **Business Misc / Social Networks** and locate the
button **Add Social Profiles**.# Models
![models](docs/keraban_models.png?raw=true)
# To do
- change featurettes to a flexible streamfield of alternating pages
- add boostrap form classes to contact form template
- make carousel on homepage hero items
- add business opening hours snippet
- business data and social profiles as settings?
- add sharing on social buttons
- footer with icons and list (similar to
and )
- Possibility to use any numbers of featurettes pages in homepage (ListBlock)
implementing it as a StreamBlock
- add favicon
- extend support for more specific Organization types
- better integration of location page and business data address/location
- submit it to# Credits
- Powered by https://wagtail.io
- Inspired by the amazing Wagtail Bakery Demo
- Galleries layout based on
# Ideas and Questions-
-