Giter Site home page Giter Site logo

python-web-dev's Introduction

This is a starter repo for python web development that aims to use clean architecture and DDD principles to separate core business logic from implementation details such as data sources and web frameworks.

This repo aims to use Django and FastAPI as examples of 2 different frameworks that could depend on the same core domain entities & abstractions

The Goal

Decouple the high level policy that is your business logic from all other details in your system. Web frameworks, APIs, UIs, data sources & even cloud platforms are all details that your business logic should not have to depend on.

The Benefits

  • core domain logic can become reusable across your entire software ecosystem
  • improve testability, extensibility & readability of your core domain implementation
  • enhance the versioning & release capabilities of your domain logic
  • plug in different infrastructure details (UIs, APIs, data sources etc.) without affecting your core domain
  • adjust your architecture between monolith, SOA or microservices more easily

The Motivation

Some might find this architectural approach an overkill for smaller, self-contained projects. However, in my experience I have seen time and time again that even the smallest business critical application can eventually grow to become unmanageable with bad architectural design. Following clean architecture and DDD principles early on can help prevent this.

Sources Of Inspiration:

https://www.youtube.com/watch?v=o_TH-Y78tt4

https://www.youtube.com/watch?v=DJtef410XaM https://rhodesmill.org/brandon/slides/2014-07-pyohio/clean-architecture/

https://medium.com/21buttons-tech/clean-architecture-in-django-d326a4ab86a9

https://sdediego.hashnode.dev/django-clean-architecture

https://breadcrumbscollector.tech/python-the-clean-architecture-in-2021/

python-web-dev's People

Contributors

rynoterblanche avatar

Watchers

 avatar

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.