Introduction
This styleguide combines domain-driven design principles and Django's apps pattern to provide a pragmatic guide for developing scalable API services with the Django web framework.
This styleguide tries to tackle two big problems:
- Design philosophies and design patterns work in "ideal" situations, and most real life problems do not represent this ideal world. Therefore we need to develop a flexible pattern that can adjust to support different situations.
- The original design and documentation of Django is geared heavily towards server-side-rendered-view applications, yet most modern Django applications are built to serve APIs for a separate frontend application. Therefore, Django's patterns are outdated for today's trends.
In order to overcome these problems, this styleguide tries to achieve the following five goals:
- Treat Django's
apps
like softwaredomains
. - Extend Django's
apps
implementation to support strong bounded context patterns betweendomains
. - Enable separation of domains to happen when it makes sense for increased development velocity, not just for business value.
- Design a styleguide that reduces the effort involved in extracting the code for large domains into separate application servers.
- Make sure the styleguide compliments API-based applications.
Current Version
CURRENT VERSION: VERSION 1.2.1
Previous Versions
All previous versions can be found under the docs/
folder when looking at a specific tag.
CHANGELOG
Please see CHANGELOG.md