We think the best way to keep documentation is along side code and in code, as a docstring. Both to make it more likely that it's updated and also because writing documentation along side code makes it more likely to capture little details that might be missed downstream.
For long form documentation like design, architecture and business considerations writing markdown files and keeping it alongside the section of code it documents works well and is pretty common.
Keeping the docs deployed and updated is a different story and as a lot of people here are doing they're suggesting building CI pipelines to do it.
We decided that's messy so we link in directly to the development flow both with git hooks and IDE integrations.
We then use Github to link what documentation should be allowed to be managed by us and we're working on integrating SSO to manage user onboarding and permissions.