kubectl apply -k deploy/
You can create an app that creates other apps, which in turn can create other apps. This allows you to declaratively manage a group of apps that can be deployed and configured in concert.
App of Apps Pattern Documentation
To delete the app of apps pattern, the deletion finalizer needs to be applied to each child of the app of apps, because needs to have this in order to achieve the delete in cascade
for i in $(kubectl get applications -n argocd | awk '{print $1}' | grep -v NAME); do kubectl patch app $i -n argocd -p '{"metadata": {"finalizers": ["resources-finalizer.argocd.argoproj.io"]}}' --type merge; done
kubectl delete app dev-env-app-of-apps -n argocd