The hexagonal architecture, or ports and adapters architecture, is an architectural pattern used in software design. It aims at creating loosely coupled application components that can be easily connected to their software environment by means of ports and adapters. This makes components exchangeable at any level and facilitates test automation.
Setup
###Local Local setup
docker-compose up -d
- Django orm models
- Django rest framework
- Cors
- Repository pattern
- Repository Create, Get, Update, Delete, All, Search (Criteria/Specification pattern )
- Entities
- Mapped orm entities
- Bundle context
- Abstract unit of work
- Domain Events
- Domain bus events
- Domain event handlers
- Commands
- CQS
- CQRS pattern
- Command bus handlers
- Command handlers
DJANGO_READ_DOT_ENV_FILE=True
# PostgreSQL
# ------------------------------------------------------------------------------
POSTGRES_HOST=had_postgres
POSTGRES_PORT=5432
POSTGRES_DB=hexagonal_django
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_DATA=~/Documents/Projects/docker/hexagonal_django/postgres
POSTGRES_BACKUPS=~/Documents/projects/docker/hexagonal_django/postgres_backups
POSTGRES_EXTERNAL_PORT=5432
POSTGRES_LOCALHOST=127.0.0.1
# Redis
# ------------------------------------------------------------------------------
REDIS_PORT=6379
REDIS_HOST=localhost
REDIS_DATABASE=0
REDIS_URL=redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_DATABASE}
REDIS_DATA=~/Documents/projects/docker/hexagonal_django/redis
# Celery
CELERY_BROKER_URL=redis://localhost:6379/0
# Rabbitmq
RABBITMQ_HOST=had_rabbitmq
RABBITMQ_USER=rabbitmq
RABBITMQ_PASS=password
RABBITMQ_VHOST=app
RABBITMQ_MANAGEMENT_PORT=15672
RABBITMQ_PORT=5672
RABBITMQ_DIR=~/Documents/projects/docker/hexagonal_django/rabbitmq