DEV Community

Cover image for Dev Log: 2026-06-28
Nasrul Hazim Bin Mohamad
Nasrul Hazim Bin Mohamad

Posted on

Dev Log: 2026-06-28

TL;DR

  • Centred a sidebar brand mark in the collapsed rail (open-source starter kit) — pure CSS, no JS.
  • A CRM app got a "daily cockpit" dashboard (hot leads + overdue follow-ups) plus a full favicon/PWA icon set.
  • An analytics product's ingest pipeline learned to handle messy uploads — files with no date column and no numeric measure — and a nasty metrics bug got squashed.

A spread day across three repos. Quick tour.

Centring a collapsed sidebar logo (CSS only)

Kickoff, my open-source Laravel starter kit, had a small visual snag: when the sidebar collapses to a narrow rail, the header switches to a column — but the brand mark sat off-centre. The content area is ~72px, yet the logo kept its width and a leftover space-x margin, nudging it left of the nav icons.

No JavaScript needed. Make the logo and toggle full-width, centre their content, and zero the leftover child margins when collapsed:

[data-flux-sidebar][data-collapsed] .sidebar-header .app-logo {
    width: 100%;
    justify-content: center;
    padding-inline: 0;
}
/* kill the leftover space-x margin pushing it off-centre */
[data-flux-sidebar][data-collapsed] .sidebar-header .app-logo > * {
    margin: 0;
}
Enter fullscreen mode Exit fullscreen mode

Lesson: when a flex container changes direction, old horizontal margins don't disappear — they just push things in the new axis. Tag the element, scope the override to the collapsed state, done.

A CRM "daily cockpit"

A CRM app I work on got a dashboard rebuild: instead of a generic landing screen, the first thing you see is what needs action today — hot leads and overdue follow-ups. The cockpit framing matters more than the widgets: surface the work, don't make people hunt for it. Also shipped a full favicon/PWA icon set and a branded responsive landing page, with feature tests so the brand pass didn't quietly break routing.

Ingest that survives real-world files

The bigger chunk of the day went into an analytics/dashboard product's ingest pipeline. Real uploads are messy, so the pipeline now copes with the awkward shapes:

Awkward file Handling
No date/period column Derive the snapshot period from the filename (report-2026-06.xlsx2026-06), else ask or use upload time
No numeric measure Let the user choose the aggregation (e.g. count rows) instead of failing
Dirty columns A data-quality panel flags blanks, near-duplicate "variant clusters" (A & B vs A And B), and encoding mojibake before anything reaches a dashboard

The upload flow also got simpler: drop a file → instant clean dashboard, with column mapping tucked behind an Advanced step for the cases that need it.

And the bug of the day — a metrics query that summed across every series in a dataset and turned an 819 KPI into 163 billion. That one earned its own write-up: "When a KPI reads 163 billion instead of 819."

What's next

More ingest edge cases (filename date formats, transforms), and rolling the centred-rail fix into the other apps that share the sidebar.

Top comments (0)