Просто мысли. Судя по описанию, это вполне себе стандартная задачка на вложенные структуры. В данном случае у тебя есть сущность — документ, который находися в папке (в так называемой категории), которая хранится в ячейке (в родительской категории), которая, в свою очередь, может находиться в шкафу (то есть являться потомком какой-то другой категории). С решением задач со вложенными категориями хорошо справляется
эта библиотека. В остальном всё максимально просто: поиск документов делается через обычную форму с дополнительными полями для родительских категорий, все CRUD-операции выполняются через обычные ресурсные контроллеры