DEV Community

Cover image for Day 15 – Turning a Plain File List into a Real User Experience
Nader Fkih Hassen
Nader Fkih Hassen

Posted on

Day 15 – Turning a Plain File List into a Real User Experience

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
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

🔧 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 },
});
Enter fullscreen mode Exit fullscreen mode

💡 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 👋

FullstackDev #NestJS #NextJS #LegalTech #LuraApp #LearningInPublic #UXDesign

Top comments (1)

Collapse
 
adarshdotdev profile image
Adarsh Gupta

I'm a developer Iike you, need some help, can we connect on linkedin?