GraceSoft Core, Day 9: File Uploads Are More Dangerous Than I Thought
I already had an attachments system. It worked across all modules: reusable, clean and flexible.
But I hadn’t thought deeply about one thing: privacy.
The risk
Files can contain personal data, sensitive documents and things that should never be public. Handled badly, they become a liability.
What I changed
I redesigned attachments with privacy in mind.
Private by default. Files are private unless they’re explicitly made public.
Signed URLs. Access links are temporary and expire after a set time.
Transparency. Each file shows who uploaded it and where it’s used.
The insight
Files aren’t just assets.
They are data.
And they need the same level of care.
The bigger picture
My attachments system isn’t just reusable now. It’s safe by design, which means every future module benefits automatically.
Final thought
At this point, something clicked. I’m no longer just building features. I’m building:
defaults that shape behaviour.
Part of the GraceSoft Core build-in-public series. Originally published on DEV.