Design Iterations & Visual Evolution#
This document chronicles the visual and UX design evolution of the Education Playground project, capturing the โwhyโ behind each design decision and the problems each iteration solved.
Design Philosophy#
Core Principles#
Education First - Design should enhance learning, not distract
Accessibility - Must work for all users, all abilities, all devices
Professional Polish - Suitable for both students and institutional buyers
Consistency - Unified experience across landing page and learning platform
Performance - Fast, responsive, no unnecessary complexity
Iteration 1: Original Jupyter Book (Functional Foundation)#
Design Characteristics#
Visual Style: Clean, minimal, academic
Color Scheme: Jupyter Book defaults (blue accents, white background)
Typography: Default system fonts
Layout: Standard Jupyter Book sidebar + content layout
Strengths#
โ Fast to implement โ Content-focused โ Familiar to developers โ Mobile responsive (default)
Weaknesses#
โ Generic appearance โ No brand identity โ Limited customization โ Not optimized for B2B marketing โ No onboarding for new users โ Dark mode not supported
User Feedback#
โThe content is great, but it looks like every other Jupyter Book siteโ โHard to know where to start as a beginnerโ
Iteration 2: Custom Styling + Onboarding (Personalization)#
Design Changes#
Added: Interactive onboarding modal with skill assessment
Custom CSS: 813 lines of custom styling
Color Palette: Introduced blue (#3A86FF) as primary color
Typography: Custom font stack with better hierarchy
Interactive Elements: Choice cards, progress tracking, badges
Key Features#
Welcome modal with 3-step onboarding flow
Skill level assessment (Never โ A Little โ Yes)
Personalized learning path recommendations
Continue Learning banner for returning users
Progress tracking with localStorage
โMark as Completeโ buttons on lessons
Visual Improvements#
/* Custom Onboarding Modal */
.onboarding-content {
border-radius: 16px;
max-width: 600px;
padding: 40px;
box-shadow: 0 8px 20px rgba(0,0,0,0.2);
animation: slideUp 0.4s ease;
}
/* Choice Cards */
.choice-card {
background: #f8f9fa;
border: 2px solid #e0e0e0;
border-radius: 12px;
transition: all 0.2s ease;
}
Strengths#
โ Unique, branded appearance โ Guides new users effectively โ Tracks user progress โ More engaging than defaults
Weaknesses#
โ Still no B2B marketing presence โ Blue color not distinctive โ No dark mode support โ Some layout inconsistencies
Iteration 3: Landing Page Integration (Professional Presence)#
The Problem#
How do schools discover and evaluate the platform? We needed:
Professional marketing presence
Clear value proposition for decision-makers
Course catalog visibility
Social proof (testimonials)
Easy contact/inquiry process
The Solution: CodeBridge Labs Landing Page#
Visual Design#
Hero: Gradient navy background with glowing orbs
Layout: Modern card-based sections
Typography: Bold headings, readable body text
CTAs: Prominent green buttons with hover effects
Design System#
:root {
--navy: #0D1B2A;
--sky-blue: #3A86FF;
--soft-gray: #F3F4F6;
--white: #FFFFFF;
}
Section Design Patterns#
Hero Section:
[Gradient Background]
โโโ Large Heading
โโโ Subheading
โโโ Primary CTA (solid)
โโโ Secondary CTA (outline)
Content Sections:
[White/Gray Background]
โโโ Section Heading
โโโ Subheading
โโโ 3-Column Card Grid
Visual Hierarchy#
Level 1: Hero - Immediate value proposition
Level 2: Problems - Pain points we solve
Level 3: How It Works - Simple 3-step process
Level 4: Courses - Detailed catalog
Level 5: Results - Social proof
Level 6: Pricing - Call to action
Strengths#
โ Professional B2B appearance โ Clear value proposition โ Complete course catalog โ Builds trust with testimonials โ Easy inquiry process
Weaknesses#
โ Color scheme not unified with Jupyter Book โ Card heights inconsistent โ Some alignment issues โ Dark mode causing mixed appearance
Iteration 4: Color Unification (Brand Consistency)#
The Color Problem#
Before:
Landing Page: Blue (#3A86FF) primary
Jupyter Book: Blue (#3A86FF) primary
Result: Generic โtech blueโ aesthetic
Design Question: What color represents education, growth, and success?
The Solution: Green + Purple#
/* New Unified Palette */
--primary-color: #4CAF50; /* Green - Growth, learning, success */
--primary-hover: #45a049; /* Darker green */
--secondary-color: #667eea; /* Purple - Creativity, innovation */
--secondary-dark: #764ba2; /* Deep purple */
--navy: #0D1B2A; /* Navy - Professional, trustworthy */
Color Psychology#
Green (#4CAF50)
Represents growth and progress
Positive, encouraging
Good contrast for accessibility
Less common in tech = more distinctive
Purple Gradient (#667eea โ #764ba2)
Creative and innovative
Luxurious, premium feel
Great for hero sections
Complements green without clashing
Navy (#0D1B2A)
Professional and trustworthy
Excellent readability
Corporate-friendly
Application#
Buttons: Green primary
Hero Sections: Purple gradient
Headings: Navy
Links: Green
Highlights: Purple
Visual Impact#
โ Distinctive brand identity โ Better accessibility โ Warmer, more approachable โ Consistent across both sites
Iteration 5: Layout Refinement (Perfect Alignment)#
The Alignment Problem#
Visual inspection revealed:
Cards in grid layouts had varying heights
Content floating awkwardly within cards
Testimonial author info not anchored properly
Inconsistent gap spacing (gap-12 vs gap-8)
The Solution: Flexbox Patterns#
Equal-Height Cards:
<div className="... flex flex-col h-full">
{/* Card content */}
</div>
Expandable Content:
<p className="flex-1">
{/* Content that expands to fill available space */}
</p>
Bottom-Anchored Elements:
<div className="mt-auto">
{/* Always sits at bottom of card */}
</div>
Before & After#
Before:
[Card 1 - Short] [Card 2 - Medium] [Card 3 - Tall]
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ
โ Content โ โ Content โ โ Content โ
โ โ โ โ โ โ
โ [Bottom] โ โ โ โ โ
โโโโโโโโโโโโโโ โ [Bottom] โ โ โ
โโโโโโโโโโโโโโ โ [Bottom] โ
โโโโโโโโโโโโโโ
After:
[Card 1] [Card 2] [Card 3]
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ
โ Content โ โ Content โ โ Content โ
โ โ โ โ โ โ
โ โ โ โ โ โ
โ โ โ โ โ โ
โ [Bottom] โ โ [Bottom] โ โ [Bottom] โ
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ
Gap Standardization#
Before:
gap-12 lg:gap-8(inconsistent)After:
gap-8(consistent across all breakpoints)
Visual Impact#
โ Perfect visual symmetry โ Professional appearance โ Predictable layout โ No awkward white space
Iteration 6: Dark Mode Implementation (Accessibility)#
The Dark Mode Problem#
Issue: CSS had dark mode styles but they were never activated
Variables defined but not applied
No
@media (prefers-color-scheme: dark)queriesNo JavaScript to set
data-themeattribute
The Solution: Automatic Detection#
CSS Architecture:
/* Light Mode (Default) */
:root {
--bg-primary: #ffffff;
--text-primary: #1a1a1a;
}
/* Dark Mode (Auto-Detect) */
@media (prefers-color-scheme: dark) {
:root {
--bg-primary: #1a1a1a;
--text-primary: #e0e0e0;
}
}
/* Manual Override Support */
html[data-theme="dark"] {
--bg-primary: #1a1a1a;
--text-primary: #e0e0e0;
}
Dark Mode Palette#
/* Dark Mode Colors */
--primary-color: #66bb6a; /* Lighter green for dark bg */
--bg-primary: #1a1a1a; /* Almost black */
--bg-secondary: #242424; /* Dark gray */
--bg-tertiary: #2d2d2d; /* Medium gray */
--text-primary: #e0e0e0; /* Light gray */
--text-secondary: #b0b0b0; /* Medium gray */
--border-color: #404040; /* Subtle borders */
Component Coverage#
โ Body and main content โ Onboarding modal โ Choice cards โ Code blocks โ Tables โ Sidebar navigation โ All interactive elements
Landing Page Decision#
Choice: Force light mode only Rationale:
B2B sites need consistent appearance
Professional/corporate environments expect light themes
Avoids mixed light/dark sections
Simpler A/B testing and screenshots
Visual Impact#
โ Reduces eye strain in low light โ Respects user system preferences โ Maintains readability in both modes โ Professional on Playground, consistent on Landing
Iteration 7: Layout Optimization (Content Excellence)#
The Layout Problem#
Content felt cramped or too wide depending on screen size:
No max-width constraint on main content
Inconsistent padding
Long lines hard to read on large screens
Images not properly centered
The Solution: Typography-Driven Layout#
Optimal Reading Width:
.bd-article {
max-width: 1000px; /* ~75 characters per line */
margin: 0 auto; /* Centered */
padding: 2rem; /* Breathing room */
}
Content Container:
.bd-container__inner.bd-page-width {
max-width: 1400px; /* Overall page width */
margin: 0 auto;
}
Section Spacing:
.bd-article > section {
margin-bottom: 3rem; /* Clear section breaks */
}
Image Handling:
.bd-article img,
.bd-article figure {
max-width: 100%;
height: auto;
display: block;
margin: 2rem auto; /* Centered with spacing */
}
List Improvements:
.bd-article ul,
.bd-article ol {
margin: 1.5rem 0;
padding-left: 2rem;
}
.bd-article li {
margin-bottom: 0.5rem; /* Breathing room */
}
Typography Standards#
Line Length: 45-75 characters (optimal readability)
Line Height: 1.7 for body text (comfortable reading)
Heading Hierarchy: Clear size differentiation
Paragraph Spacing: 1rem for visual breaks
Visual Impact#
โ Comfortable reading experience โ Professional typography โ Clear visual hierarchy โ Proper white space usage โ Responsive across all screens
Design System (Current State)#
Color Palette#
Primary Actions:
Green #4CAF50 (buttons, links, primary actions)
Green Hover #45a049 (hover states)
Green Light #e8f5e9 (backgrounds)
Secondary Highlights:
Purple #667eea (gradients start)
Purple Dark #764ba2 (gradients end)
Text:
Navy #0D1B2A (headings, important text)
Dark Gray #1a1a1a (body text light mode)
Light Gray #e0e0e0 (body text dark mode)
Backgrounds:
White #FFFFFF (primary)
Soft Gray #F3F4F6 (secondary)
Dark #1a1a1a (dark mode primary)
Dark Gray #242424 (dark mode secondary)
Typography Scale#
h1: 2.5rem (40px) - Page titles
h2: 2rem (32px) - Section headings
h3: 1.5rem (24px) - Subsection headings
h4: 1.25rem (20px) - Minor headings
body: 1rem (16px) - Body text
small: 0.875rem - Captions, metadata
Spacing Scale#
--spacing-xs: 0.25rem (4px)
--spacing-sm: 0.5rem (8px)
--spacing-md: 1rem (16px)
--spacing-lg: 1.5rem (24px)
--spacing-xl: 2rem (32px)
--spacing-2xl: 3rem (48px)
Border Radius Scale#
--radius-sm: 4px - Small elements
--radius-md: 8px - Cards, buttons
--radius-lg: 12px - Large cards
--radius-xl: 16px - Modals
--radius-2xl: 20px - Hero sections
Shadow System#
--shadow-sm: 0 2px 4px rgba(0,0,0,0.1) - Subtle elevation
--shadow-md: 0 4px 12px rgba(0,0,0,0.15) - Cards
--shadow-lg: 0 8px 20px rgba(0,0,0,0.2) - Modals, popovers
Responsive Breakpoints#
Mobile First Approach#
/* Base Styles (Mobile) */
/* 320px - 767px */
/* Tablet */
@media (min-width: 768px) { }
/* Desktop */
@media (min-width: 1024px) { }
/* Large Desktop */
@media (min-width: 1440px) { }
Key Responsive Patterns#
Grid Layouts:
/* Mobile: 1 column */
grid-template-columns: 1fr;
/* Tablet: 2 columns */
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
/* Desktop: 3 columns */
@media (min-width: 1024px) {
grid-template-columns: repeat(3, 1fr);
}
Typography Scaling:
/* Mobile */
h1 { font-size: 2rem; }
/* Tablet */
@media (min-width: 768px) {
h1 { font-size: 2.25rem; }
}
/* Desktop */
@media (min-width: 1024px) {
h1 { font-size: 2.5rem; }
}
Component Library#
Cards#
Standard Card:
<div className="bg-white rounded-xl p-8 shadow-md hover:shadow-xl
transition-shadow duration-300 border border-gray-100
flex flex-col h-full">
{/* Card content */}
</div>
Featured Card:
<div className="bg-gradient-to-br from-navy to-[#1a2f4a]
rounded-xl p-8 text-white shadow-xl">
{/* Featured content */}
</div>
Interactive Elements#
Choice Card:
<button className="bg-soft-gray rounded-xl p-6 border-2
border-transparent hover:border-primary-color
hover:shadow-lg transition-all duration-300
flex flex-col items-center gap-4">
<span className="text-4xl">{icon}</span>
<h3 className="font-bold">{title}</h3>
<p className="text-sm">{description}</p>
</button>
Design Metrics#
Before vs After#
Metric |
v1.0 |
v3.0 |
Improvement |
|---|---|---|---|
Load Time |
~1.2s |
~1.1s |
โ 8% faster |
Custom CSS |
0 lines |
1,247 lines |
โ Full customization |
Color Palette |
Default |
Unified 5-color |
โ Brand identity |
Dark Mode |
โ |
โ Auto-detect |
โ Accessibility |
Responsive |
โ Basic |
โ Optimized |
โ Better mobile |
Alignment |
โ ๏ธ Inconsistent |
โ Perfect |
โ Professional |
Typography |
Default |
Optimized |
โ Readability |
User Onboarding |
โ |
โ Interactive |
โ Guidance |
Design Principles Applied#
1. Visual Hierarchy#
โ Clear heading structure (h1 โ h2 โ h3) โ Size and weight communicate importance โ Consistent spacing creates rhythm โ Color draws attention to actions
2. Consistency#
โ Unified color palette across both sites โ Consistent spacing and sizing โ Predictable interaction patterns โ Reusable component patterns
3. Accessibility#
โ Sufficient color contrast (WCAG AA) โ Dark mode support โ Semantic HTML structure โ Keyboard navigation support โ Mobile responsive
4. Usability#
โ Clear CTAs with hover states โ Logical information architecture โ Intuitive navigation โ Fast load times โ Minimal cognitive load
5. Delight#
โ Smooth animations and transitions โ Satisfying hover effects โ Progress indicators โ Achievement feedback โ Polished micro-interactions
Lessons Learned#
What Worked Well#
Iterative approach - Small, focused improvements
User feedback - Identifying real pain points
Design systems - CSS variables for consistency
Flexbox patterns - Reliable layout solutions
Auto dark mode - No JavaScript required
What Weโd Do Differently#
Earlier brand identity - Should have unified colors from start
Mobile-first design - Some responsive issues required fixing
Accessibility testing - Should have tested dark mode earlier
Component library - Would benefit from earlier standardization
Key Insights#
B2B vs B2C design - Different needs (landing page vs app)
Color psychology matters - Green > Blue for education
Layout perfection - Alignment issues are very noticeable
Dark mode is complex - Many edge cases to consider
Typography is foundation - Good text = good design
Future Design Directions#
Potential Enhancements#
Custom illustrations for hero and sections
Animated icons and micro-interactions
Video background in hero section
Interactive course previews
Gamification elements (badges, achievements)
Personalized dashboard
Theme customization options
Print-optimized styles
Research Areas#
A/B test color variations
User testing for navigation
Heat map analysis
Conversion rate optimization
Accessibility audit (WCAG AAA)
Performance optimization
Animation performance testing
Maintained by: Mykolas Perevicius Last Updated: November 13, 2025 Current Design Version: 3.0 Status: Production Ready โ