My approach is a flat date-based file structure with a markdown-based Zettelkasten on top:
File are mostly in a flat structure. In ~/, I have directories like documents, photos, videos that directly contain all the files. For certain topic, I create separate directories (e.g., PhD, major projects). The filenames always start with an ISO date (yyyy-mm-dd). For documents, it could be like 2024-03-24_inv_google.pdf. Here, inv means it's an invoice and Google is the organization where the invoice comes from. After the date, there's always a three letter code that tells me the type of document. All physical documents are scanned and OCRed and put in the same structure.
On top of that I curate a Zettelkasten. It's just a directory with a set of markdown files (also a flat hierarchy). This Zettelkasten is layer of information on top of the remaining filesystem. The markdown files link to external resources (e.g., on the web) and also to internal files (e.g., (something)[../docuemnts/something.pdf]). This way I can browse my personal information like it's the web.
This file structure is my single source of truth. I try to export all other information as text files there (e.g., emails, contacts). I'm using restic to backup my entire home folder. I don't use any sophisticated tools, just a basic PDF reader, vim, Gimp, and other standard tools of the Linux ecosystem. I used to sync my home directory using unison but currently, I'm just using a single one.