Colocated (or "bare repo + worktrees") pattern is one of the most popular and cleanest way to organize git worktrees. Here's how it works:
myproject/ # Parent directory (not a checkout itself)
├── .bare/ # The bare git repo (the actual .git data)
├── .git # A file (not dir) pointing to .bare