Comment: Cookie cutter templates should be used for a seed. different social authentication library is used by cookie cutter. Local settings files should be committed. Where environment files should be stored? Django-environ should be used to work with .env files. django-model-utils to handle common patterns like TimeStampedModel At all costs, everyone should avoid multi-table inheritance (see warning above) since it adds both confusion and substantial overhead. Instead of multi-table inheritance, use explicit OneToOneFields and ForeignKeys between models so you can control when joins are traversed. In our combined 20+ years of doing Django we’ve never seen multi-table inheritance cause anything but trouble. Use squashmigrations to merge migrations. Always back up your data before running a migration. ModelManager use_in_migrations = True https://docs.djangoproject.com/en/3.0/topics/migrations/#model-managers RunPython.noop for reverse migrations, when no action has to taken. RunPython.noop does nothing but allows reverse migrations to occur 5-10 models in models.py is max per app. One simple sentence with max one and to describe the purpose of and app (small focused apps). check that you can rollback migrations. Make data backups before data copying and major data migrations. Terminology for settings: local/development, staging, production and not aws. Make Locust test with pre defined user behavior to determine the throughput of infrastructure. Migrations on real data can take much, much, much more time than anticipated How do you design for performance without optimizing prematurely? When to use null=True for charfields: when unique constraint and multiple not set values are present.