Code Monkey home page Code Monkey logo

django-api-domains's Introduction

⚠️ Currently stable and unlikely to change much, provide feedback here ⚠️

Check out my new project for OpenAPI Clients: Clientele

logo.png

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:

  1. 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.
  2. 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:

  1. Treat Django's apps more like software domains.
  2. Extend Django's apps implementation to support strong bounded context patterns between domains.
  3. Enable separation of domains to happen when it makes sense for increased development velocity, not just for business value.
  4. Design a styleguide that reduces the effort involved in extracting the code for large domains into separate application servers.
  5. 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.