A small application may start with one bucket.
Later, that bucket can contain thousands of unrelated files.
A better storage structure makes growth easier.
Separate Different Content
For example:
avatars
product-images
documents
attachments
Each category can have its own access requirements.
Public and Private Content
Public content and private content often have different security models.
Keep them clearly separated when appropriate.
File Naming
Avoid random, confusing structures.
A path such as:
products/123/main-image.webp
is easier to understand than an unstructured collection of files.
User Files
For user-specific content:
users/{user_id}/...
can provide a clear ownership model.
Deletion
When a database record is deleted, decide what happens to its associated files.
For example:
Delete product
↓
Delete product images
Otherwise, unused files can accumulate.
Storage Policies
Each bucket should have policies appropriate to its purpose.
Do not make an entire storage system public simply because one bucket contains public images.
Final Thoughts
Storage architecture is easy to ignore when an application is small.
It becomes much harder to fix after years of accumulated files.
A simple structure from the beginning can save time later.