I tried zoxide, but at the end settled for using fzf to quickly find and enter directories:
qcd () {
local d
dirs=$(fd -t d -t l --ignore-file ~/.gitignore . $@)
d="$(echo ${dirs} | fzf +m --height=50%)" && cd "${d}"
}
alias hd="qcd ${HOME}"