Skip to main content
Models define your database schema using SQLAlchemy. Feather adds mixins for the columns and behaviour most models need.
models/post.py

Mixins

Ordering for drag-and-drop

OrderingMixin maintains a position column. __ordering_scope__ makes positions relative to a parent, so cards are ordered within their own column rather than globally.
models/card.py
Reordering
Pair this with an island using the draggable config and optimistic updates, so the card moves instantly and the server call reconciles behind it.

Generating a model

Migrations stay manual so you can review the model first:

Next: how to lay out users, accounts and billing

The schema mistake that makes team plans and profile switching impossible later.