Here is the structure of my project:
├─── applications
│ ├─── about
│ │ ├─── admin.py
│ │ ├─── api
│ │ │ │ └─── __init__.py
│ │ │ ├─── apps.py
│ │ ├──── __init__.py
│ │ ├─── libs
│ │ │ │ └─── __init__.py
│ │ │ ├─── migrations
│ │ │ │ └─── __init__.py
│ │ ├─── models.py
│ │ │ ├─── services
│ │ │ │ └─── __init__.py
│ │ ├─── templates
│ │ ├─── tests.py
│ │ │ └─── views.py
│ ├─── account
│ │ │ ├─── admin.py
│ │ ├─── api
│ │ │ │ └─── __init__.py
│ │ │ ├─── apps.py
│ │ ├──── __init__.py
│ │ ├─── libs
│ │ │ │ └─── __init__.py
│ │ │ ├─── migrations
│ │ │ │ └─── __init__.py
│ │ ├─── models.py
│ │ │ ├─── services
│ │ │ │ └─── __init__.py
│ │ ├─── templates
│ │ ├─── tests.py
│ │ │ └─── views.py
│ ├─── blog
│ │ │ ├─── admin.py
│ │ ├─── api
│ │ │ │ └─── __init__.py
│ │ │ ├─── apps.py
│ │ ├──── __init__.py
│ │ ├─── libs
│ │ │ │ └─── __init__.py
│ │ │ ├─── migrations
│ │ │ │ └─── __init__.py
│ │ ├─── models.py
│ │ │ ├─── services
│ │ │ │ └─── __init__.py
│ │ ├─── templates
│ │ ├─── tests.py
│ │ │ └─── views.py
│ ├─── middlware
│ ├─── order
│ │ ├─── admin.py
│ │ ├─── api
│ │ │ │ └─── __init__.py
│ │ │ ├─── apps.py
│ │ ├──── __init__.py
│ │ ├─── libs
│ │ │ │ └─── __init__.py
│ │ │ ├─── migrations
│ │ │ │ └─── __init__.py
│ │ ├─── models.py
│ │ │ ├─── services
│ │ │ │ └─── __init__.py
│ │ ├─── templates
│ │ ├─── tests.py
│ │ │ └─── views.py
│ └─── product
│ ├─── admin.py
│ ├─── api
│ │ │ └─── __init__.py
│ ├─── apps.py
│ ├─── __init__.py
│ ├─── libs
│ │ │ └─── __init__.py
│ ├─── migrations
│ │ │ └─── __init__.py
│ ├─── models.py
│ ├─── services
│ │ │ └─── __init__.py
│ ├─── templates
│ ├─── tests.py
│ └─── views.py
├─── configs
│ ├─── asgi.py
│ ├─── __init__.py
│ ├─── settings.py
│ ├├─── urls.py
│ └─── wsgi.py
└─── manage.py
configs - project settings
applications - apps:)
middleware - middleware:)
application/app/libs - python libraries (I think it's better to use the standard interface for python libraries and add them to site-packages, even if they are written by me)
application/app/api - third-party api (I think it's better to put the api on the top level)
application/app/templates - templates
application/app/services + models.py - business logic
application/app/views.py - views
What is better to change and is this structure “good” for an average team?
P.S I’m also wondering how the interaction between django applications should be handled if, for example, order uses models from account and product (I got the idea to put a reference to models in settings like AUTH_USER_MODEL).
I’ve read many articles about effective patterns for building web applications in django, but I haven’t figured out the best way to go about it