Vivran v2 shipped a dashboard that could show you almost everything: six KPI cards, a difficulty donut, a radar chart of your study time, activity and speed charts, mock trends, and a pacing panel. It was complete. It was also loud. When every number gets a colored icon and every breakdown gets its own chart, nothing on the page tells you what actually matters.
Chintan is our current phase of work, focused on security, performance, and interface quality, and this dashboard rework ships as the first release of Chintan v1. Its brief was simple: keep every insight, lose the noise. This post is what changed and why.
Four numbers, not six
The KPI row used to hold six cards: Questions, Solved, Success Rate, Mistakes, Avg Q Time, and Avg Q per Session. The last two were the kind of numbers you glance at once a month, yet they claimed the same visual rank as your success rate.
The new top row keeps the four that drive daily decisions: Questions, Solved, Success Rate, and Mistakes. They sit in a compact column beside the activity heatmap, so the first screenful now answers the two questions you actually open the dashboard for: how much am I doing, and how well is it going. The retired numbers are not gone from the app's data model, they just no longer occupy prime real estate, and the rendering code guards for their absence so nothing breaks if a card comes back later.
The little colored icon chips are gone too. One ink color, per our site-wide type and ink system. If something on this page is bright, it should be because your data earned it, not because the template came that way.
Charts that were decoration are now text
Two charts got retired outright, and both replacements are honest improvements rather than compromises.
The difficulty donut (easy, medium, hard split of your rated questions) became a short set of text rows: rated total, then each level with its count and percentage. A three-slice donut communicates exactly three numbers. The rows communicate the same three numbers, load instantly, read unambiguously at any size, and need no legend, no hover, and no SVG arc math.
The study-time radar went the same way. It plotted your hours across Lectures, Practice, Countdown, and Stopwatch on a four-axis web, which looked impressive and answered nothing precisely. It is now four labeled rows in hours, computed the same way as before: practice time summed from your per-question log, timer time split by mode, lecture hours from the Logbook, all of it respecting the subject filter. Filter to Chemistry and the rows show Chemistry's hours; the radar used to redraw a slightly different quadrilateral and leave you to guess.
Accuracy over time, the mistake breakdown, mock trends, and the weak chapter leaderboard survive, because those genuinely need a time axis or a ranking to make their point.
The right rail, and what phones get instead
Pacing and session stats now live in a right-hand rail beside the main column. On desktop it is simply there, always visible, no tab to remember.
Below tablet width there is no room for a left sidebar, a centered content column, and a right rail all at once, so two things happen. The right rail becomes a slide-in drawer behind a small "Pacing" button in the header, with a scrim behind it. And the left navigation sidebar auto-collapses under 1200px, with one deliberate subtlety: the auto-collapse writes only the class, never your saved preference, so when the window widens again you get back whatever state you had chosen yourself.
No more empty-page flash
If you signed into LairsFlow on a fresh device and went straight to the dashboard, there used to be an awkward second where the page rendered from an empty localStorage before the cloud pull landed: zero questions, blank charts, and then everything popped in. Technically harmless, but it looked like data loss every single time.
The dashboard now holds a sync cover over itself on load, the same orb animation the Advisor uses while initializing, labeled "Syncing your data". It is dismissed only after the cloud pull resolves and the page has repainted with real numbers, with a safety timeout as a backstop so a slow network can never trap you behind it. A fresh device now goes from cover straight to your actual dashboard, with no empty state in between.
The idea underneath
Every change in this pass is one idea applied repeatedly: a dashboard is for reading, not for admiring. Charts stay when a shape genuinely carries information. Numbers go back to being numbers when they do not. And the page should never show you a state, empty, partial, or misleading, that your data does not actually have.
The Advisor got its own, much deeper round of Chintan work at the same time. That is a separate post, because almost none of it is visible on the surface.