hexagonal architecture javascript