websauna.org
Mikko Ohtamaa, Massachusetts Institution of Technology, 2016
@websauna9000
About myself
Web 1995
Python 2003
Plone 2004
CTO in few startups
@moo9000
Zope, Plone and Pyramid
community has come up with
some of the most productive
web development design
patterns.
Maintainability
Security
Extensibility
Lines of code ➡
Pyramid is for a
computer scientist -
"framework of
frameworks".
The patterns are not
accessible to wide
audience.
Session?
Migration?
CSS?
Form?
Sign up?Login?
Caching?
Theming?
Learnability ➡
Approachability ➡
Simplicity ➡
Marketing ➡
MAKE WEB DEVELOPMENT
GREAT AGAIN
FROM SAUNA WITH LOVE
Public sites: https://tokenmarket.net
First Websauna deployed in production May 2015,
Active community: https://gitter.im/websauna/websauna
Hugely popular in Twitter: https://twitter.com/websaunaa9000
C
rafta
fishing
rod
Lobster on
a
plate
Design goals
Easy to approach ➙ useful out of the box, popular components
Easy to understand ➙ documentation with type hinting
Simplicity ➙ standard package layout and workflow
Secure ➙ ACID, login, throttling, OWASP TOP 10
Create ecosystems ➙ Standard package layout, add-on architecture
Like Django without
too much Django in it
Integrated Websauna value
Standard package layout
Documentation
Sign up / sign in
Social auth
Admin
Layout
Core
Config files
HTTP 404, 403, 500
Session
View configuration
Traversal
Template engine
filters, variables
Admin
Automatic generation
for SQLAlchemy
models
Show, add, edit,
delete
Permissioned
Users and groups
Traversal -
breadcrumbs
Sign up and
social login
Single click sign up
Facebook, Google, Twitter
Passwordless magic link
Old school email +
password
Branding
Bootstrap 3 theming
Drop in CSS to scaffold
Configurable branding variables
Site name, logo, slogan, footer
Forms
Colander and Deform
CRUD
Automatic generation
from SQLAlchemy
models
Throttling
CSRF
Tasking
Celery 4.0
Delayed tasks
E.g. send SMS after
successful commit
Scheduled tasks
E.g. sync data from third
party service every 4 hours
HTTP request imitation
Email
HTML templated email
CSS styling
Base HTML template
Static media
Cache busting
Asset preprocess step
Generate MD5 stamped
static media copies
Forever stable URLs for CDN
Security
Passwordless
OWASP TOP-10
SQL injection protection
XSS injection proteciton
Race condition protection
Optimistic concurrency control
Secure deployment
Configuration
Includable INI files
Separate secrets file
Documentation
Type hinting
Sphinx
Automatic
Template reference
Template var reference
Template filter reference
Playbook variables
Deployment
Default playbook
Ubuntu 14.04
SSH
PostgreSQL
Redis
Nginx
uWSGI
See you in the sauna
@websauna9000
websauna.org
gitter.im/websauna/websauna
(also IRC)

Websauna - introduction to the best Python web framework