Django API Domains
Style guides for the API age
Version | Author(s) | Date |
---|---|---|
1.2.1 | Paul Hallett [email protected] | 25-09-2019 |
1.2 | Paul Hallett [email protected] | 10-06-2019 |
1.1 | Paul Hallett [email protected] | 09-04-2019 |
1.0 | Paul Hallett [email protected] | 01-02-2019 |
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
more 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.
Read the styleguide
The styleguide is now published as a readable documentation site. You can view it at https://phalt.github.io/django-api-domains/ or view the docs folder directly.