Let me be honest — today’s task wasn’t particularly glamorous.
No AI models, no fancy dashboards. I spent the day working on how documents appear after upload inside Lura. Basically: I took a raw, functional file list… and made it not suck.
🧩 Why This Mattered
Lura is a lawyer management system. That means our users — mostly legal professionals — live inside cases and documents. They don’t care about our database schema or component trees. They care about clarity.
Before today, here’s what document display looked like:
- 1248dd9_contract.pdf
- meeting_notes_final_final_2.docx
- IMG_23423.jpg
That was it. Not great.
⚙️ What I Did
I redesigned the component to show:
- File type icon (PDFs, Word docs, images, etc.)
- Human-readable file sizes using pretty-bytes
- Timestamps like “uploaded 3 hours ago”
- Image previews on hover (for supported types)
- Conditional delete button based on user role
On the frontend, I used useRouter()
and useUser()
to grab the active user’s role and decide what actions they could perform.
{canDelete && (
<button onClick={() => deleteFile(file.id)}>🗑️ Delete</button>
)}
<span>{prettyBytes(file.size)}</span>
<span>{dayjs(file.createdAt).fromNow()}</span>
🔧 Backend Cleanup
In NestJS, I made sure each upload stored:
- File name
- Size
- MIME type
- Case & Workspace linkage
- Uploading user
Then I cleaned up the file retrieval route to send everything needed to the UI without extra processing.
return await this.prisma.document.findMany({
where: { caseId },
include: { uploadedBy: true },
});
💡 Reflections
This wasn’t a big, technical challenge. But I think it’s one of the most important things I’ve done so far.
Why?
Because it reminded me that good software is about humans. Not code. Not complexity. People.
Our users don’t care if the backend is elegant. They care if they can see their contract at a glance. That’s it.
And now? They can.
❓Question:
How do you turn “boring” features into something thoughtful in your projects?
Would love to hear about how others think about UX in places nobody notices — until it’s done wrong.
See you tomorrow 👋
Top comments (1)
I'm a developer Iike you, need some help, can we connect on linkedin?