Pre-recorded lessons. Live lectures with specific times. Assignments. Attendance tracking. And that little "wait, when is my class again?" panic that shows up the moment things pile up. The mindbodygreen Health Coach Certification is a 20-week, cohort-based program with real-time participation, so students needed one place to keep their entire experience from turning into a chaotic Google Drive folder.
As Lead Product Designer, I designed and built the student dashboard from the ground up: the central hub where students track progress, open lessons, manage coursework, and join live lectures, all while the experience juggles both self-paced and scheduled learning behind the scenes. No existing foundation to tweak. Just a blank canvas and a clear mission: turn potential chaos into something structured, intuitive, and actually motivating to come back to.
This was never just a content library. It was a lot of things trying to live under one roof: recorded lessons you watch whenever, live lectures that happen at a fixed time, assignments with deadlines, and participation requirements that quietly count toward certification. Toss all of that on one screen with equal weight and the experience gets overwhelming fast.
The starting point: a flat course outline where a 3-minute intro lesson, a writing assignment, a downloadable syllabus, and a 220-lesson module all sat at the same visual weight. Comprehensive, technically. But it answered "what exists?" and left students to work out "what should I do?" entirely on their own.
The dashboard wasn't only a place to learn. It was a retention and growth tool. If students stayed oriented and felt momentum, they finished the program and discovered the next one, which is exactly how lifetime value grows (without ever feeling sold to mid-lesson).
If everything on the dashboard looked equally important, then nothing would feel actionable. That sounds obvious written down, but it reframed the entire project. I shifted the experience from "here is all your stuff" to "here is what you should do next." Hierarchy first, action second, everything else after that. Suddenly a dense pile of features felt like a guided path instead of a to-do graveyard.
Because there was no framework to inherit, I got to define what a student dashboard should actually do. So I mapped how students would enter, navigate, and return over a 20-week stretch, then traced the moments where the experience needed to behave differently. A first visit needs orientation. A returning session needs continuity. An upcoming live class needs urgency. A looming deadline needs a clear, calm nudge. Same dashboard, four very different jobs.
Lessons, lectures, and assignments all competed for attention equally. When nothing is prioritized, the user has to do the prioritizing, every single time they log in.
Live lectures happen at a fixed time and deadlines don't wait. But on a flat layout, "happening in 10 minutes" looked identical to "available whenever."
In a 20-week program, a progress tracker can quietly become a guilt machine. Log in, see everything you haven't done, feel behind, log off. Not great for finishing.
Opening the dashboard answered "what exists?" but not "what should I do right now?" That gap is where momentum goes to die.
The hard part was that the dashboard had to flex across genuinely different kinds of content, each with its own sense of time and its own right action.
Fixed times, real-time participation, attendance that counts. These need urgency cues and a "join now" moment that's impossible to miss.
Self-paced and watch-whenever. These need resume patterns and progress indicators so continuity carries across sessions.
Assignments with deadlines. These need timing surfaced clearly and prioritized visually, so students stay on track without feeling chased.
I turned every finding into a job the interface had to do. That mapping became the brief, and it gave me the principles I'd hold every later decision against.
That reframe was the whole unlock. The dashboard wasn't just a place to display content. It needed to be a navigation system and a state-aware system at the same time: not only showing content, but showing the right state of that content at the right time. Every decision after that got held against three principles.
The next step should be obvious without anyone having to hunt for it. If a student has to decode the screen, the screen hasn't finished its job.
Progress should create a sense of "I'm moving," not "I'm failing a checklist." Encouraging beats punitive, especially across 20 weeks.
The experience should feel responsive to where the student is in their journey, so returning always feels like picking up, never like starting over.
The solution was a fully custom, state-driven dashboard built from the ground up: UX strategy on top of a scalable UI foundation that adapts to whatever the student is in the middle of. The screens below are the real thing, each one tucked into a scrollable browser viewport. Tap the tabs to switch states, scroll inside to explore, and click any screen to zoom in.
The dashboard didn't arrive fully formed. It started as a teal-branded concept and got sharper with each pass: status started doing more work, the layout reflowed around priority, and the whole thing eventually grew into a calmer, mindbodygreen-branded system. Step through the iterations below.
Each pass pushed the same idea further: let state and priority drive the layout. By the final design, the brand had shifted to mindbodygreen, the palette calmed down, and the busiest moments (a live session about to start) had a single obvious action.
Live lectures were the most time-sensitive thing in the whole program, so the hero had to react to them. The same module shows two scheduled time options with countdowns when a session is still upcoming, then flips to a bright Join Now the moment it goes live. Same component, different state, zero guesswork about what to do.
Notice the supporting pieces too: a "Continue" action that drops you back into the current week, a 2/20 segmented progress strip, and quiet links to the student community forum and a teaching assistant. Helpful context, none of it shouting over the one thing that matters right now.
State-awareness ran all the way down. Each week shows whether it's completed, missed, or in progress, with a progress bar to match. Drill into a week and every item tells you exactly what to do: rewatch, get started, download, or take the quiz. Switch between the views below.
Because every surface speaks the same state language, students build one mental model and trust it everywhere. A "missed week" reads the same on the overview as it does in the sidebar, and a deadline is surfaced early instead of discovered late.
A 20-week program lives in people's pockets, so the mobile layout mattered as much as the desktop one. The tricky part on a small screen is the secondary stuff: progress, notifications, and support links all want room they don't have. I explored a few ways to handle it, and the prototypes below are the real mobile screens. Tap the tabs to switch, scroll inside each phone, and tap to zoom.
The drawer idea earned its own quick check, because a collapse only helps if opening it feels obvious. Toggle it open and closed.
Browsing all 20 weeks on a phone raised its own question: how much header to keep when someone is in scan-the-whole-program mode. I compared keeping the quick-nav header against stripping it back.
Across every one of these, the same rule held that ran through the desktop work: let state and priority drive the layout, and give the secondary stuff a home without letting it shout over the next step.
Progress tracking is one of those things that either motivates people or quietly stresses them out. In a 20-week program, the last thing I wanted was for students to log in and feel like they were falling behind every time. So I made a deliberate choice: emphasize what's been accomplished and what's next, instead of dumping every undone thing on the screen. Same underlying data, completely different feeling. Flip between the two framings below and watch the bar (and the vibe) change.
It's a subtle shift, but it changes everything. The punitive version leads with the gap and a wall of red. The encouraging version, the one that shipped, leads with the wins, points to the single next step, and keeps the deadline visible without making it feel like a threat. Supportive, not a checklist you're constantly failing.
To make the whole thing feel alive, I built a strong layer of visual feedback and interaction states: progress bars, completion markers, hover and active states, urgency cues. None of it is just polish. Each piece helps students stay oriented and engaged across very different kinds of content. By designing both the UX and UI from the ground up, the dashboard became a scalable foundation that adapts to class types, responds to behavior, and quietly drives ongoing engagement. Instead of a static hub, it works as an active guide through the learning journey, clearly, confidently, and with a real sense of momentum.
"Here is all your stuff"
A flat hub that shows everything with equal weight. Comprehensive, technically. Also the fastest path to a student feeling lost and quietly drifting away.
"Here is what you should do next"
A state-aware system that surfaces the right action at the right time and keeps progress feeling like momentum across the full 20 weeks.
A couple of decisions were real close calls, the kind where two options both look reasonable on paper and taste alone is a terrible tiebreaker. Rather than argue it out, I built the competing versions, put them in front of real students, and watched how each one read. Both tests stayed qualitative: I paid attention to what felt clearer, what felt motivating, and where people hesitated. Their reactions, not my preferences, picked the winners.
Progress is the emotional core of a long program, so the way it's drawn matters more than it looks like it should. I tested a classic percentage bar against a segmented strip that breaks the 20 weeks into individual blocks. Toggle between them and see which one you'd rather open to.
Winner: the segmented strip.Shipped Students found the blocks easier to read at a glance and a lot more motivating. Seeing "2 of 20" as discrete, fillable squares felt like measurable progress they could chip away at, where a lone percentage felt vague and easy to ignore. It became the course-progress strip in the final design.
The top of the dashboard is the most valuable real estate on the screen, so whatever claims it sets the tone for everything below. I tested leading with the live session, the most time-sensitive thing in the program, against leading with the welcome-and-progress card. Flip between the two layouts.
Winner: lead with the live session.Shipped Students reacted most to the time-sensitive moment. With the upcoming session and its countdown out front, people felt on top of the one thing they could miss, while progress stayed perfectly glanceable on the right. Leading with progress, by contrast, quietly buried the urgent stuff. The final design keeps the live session front and center.
The dashboard took a genuinely messy mix of live, recorded, and due-dated learning and gave it structure, hierarchy, and a pulse. Because the experience surfaces the next step and frames progress as momentum, students spend less energy figuring out what to do and more energy actually doing it, which is exactly what a multi-week certification needs to get people across the finish line.
Flexible UI patterns that flex across live, recorded, and due-dated content. New scenarios inherit consistent behavior instead of getting designed from scratch.
Core interaction patterns, layout structure, and reusable components, all established for a product that had no existing foundation to build on.
A progress system tuned for the long haul, framed around momentum and accomplishment rather than everything left undone.
A scalable base the product can keep building on, with course discovery woven in to support retention and lifetime value over time.