# π¨ UI/UX Design Mastery Guide for QuickPost
**Compiled:** 2026-02-05
**Purpose:** Build beautiful, modern web designs before starting MVP
---
## π CORE DESIGN PRINCIPLES (2026)
### 1. **Mobile-First, Always**
- Start with 320px width (smallest phone)
- Progressive enhancement for larger screens
- Breakpoints: 576px (phone), 768px (tablet), 992px (laptop), 1200px (desktop)
- Single-column layout default, expand only when space allows
### 2. **Visual Hierarchy**
**The Goal:** Guide user attention to what matters most
**Techniques:**
- **Size:** Larger = more important (H1 > H2 > body text)
- **Color:** Bright/contrasting = attention (CTAs should pop)
- **Whitespace:** More space around = more emphasis
- **Proximity:** Related items grouped together
- **Contrast:** Dark on light or light on dark (never low contrast)
**Reading Patterns:**
- **Z-pattern:** Logo (top-left) β CTA (top-right) β Content (middle-left) β Final CTA (bottom-right)
- **F-pattern:** Scan headline, then first line of each section
### 3. **Whitespace is Your Weapon**
**Never fear empty space.** It's not wastedβit's intentional.
**Rules:**
- More whitespace = premium feel (Apple, Stripe vibes)
- Crowded design = stress, cheap, overwhelming
- Space elements in multiples of 8px (8, 16, 24, 32, 48, 64)
- Breathing room between sections: 48-64px minimum
- Padding inside cards: 24-32px
**Hick's Law:** More choices = slower decisions. Use whitespace to limit visual noise.
---
## π¨ COLOR SYSTEM
### The Formula
Build a **primary color scale** (50-900) for consistency:
**Example: Blue Primary**
```
blue-50: #eff6ff (lightest, backgrounds)
blue-100: #dbeafe
blue-200: #bfdbfe
blue-300: #93c5fd
blue-400: #60a5fa
blue-500: #3b82f6 (base brand color)
blue-600: #2563eb
blue-700: #1d4ed8
blue-800: #1e40af
blue-900: #1e3a8a (darkest, text on light backgrounds)
```
**Palette Structure:**
1. **Primary:** Your brand color (CTAs, links, active states)
2. **Neutrals:** Grays 50-900 (text, backgrounds, borders)
3. **Success:** Green (confirmations, checkmarks)
4. **Error:** Red (warnings, destructive actions)
5. **Warning:** Yellow/Orange (alerts)
**Modern 2026 Trends:**
- **Soft gradients** as backgrounds (not loud 2015 gradients, subtle ambient color shifts)
- **Cinematic color fields** (inspired by lighting/fog effects)
- **High saturation for CTAs** (makes them unmissable)
**Tools:**
- Huevy.app (generates complete palettes)
- Coolors.co (palette generator)
- Adobe Color (harmony rules)
---
## π TYPOGRAPHY
### Scale (8px baseline)
Use a **modular scale** for consistent hierarchy:
```
text-xs: 12px / 16px line-height
text-sm: 14px / 20px
text-base: 16px / 24px (body text default)
text-lg: 18px / 28px
text-xl: 20px / 28px
text-2xl: 24px / 32px
text-3xl: 30px / 36px (section headers)
text-4xl: 36px / 40px
text-5xl: 48px / 1 (hero titles)
```
### Font Pairing
**2 fonts max:**
1. **Sans-serif** for UI (buttons, labels, body) β Inter, SF Pro, Geist
2. **Serif** (optional) for headings if premium feel β Playfair, Merriweather
**Safe System Stack (no web fonts, blazing fast):**
```css
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
Roboto, "Helvetica Neue", Arial, sans-serif;
```
### Readability Rules
- **Line length:** 50-75 characters per line (anything longer = hard to read)
- **Line height:** 1.5x for body text, 1.2x for headings
- **Letter spacing:** Tight for headings (-0.02em), normal for body
---
## ποΈ LAYOUT PATTERNS
### CSS Grid (Page Structure)
Use for **2D layouts** (header, sidebar, main, footer):
```css
.dashboard {
display: grid;
gap: 1rem;
/* Mobile: stack everything */
grid-template-areas:
"header"
"nav"
"main";
/* Tablet: side nav */
@media (min-width: 768px) {
grid-template-areas:
"header header"
"nav main";
grid-template-columns: 250px 1fr;
}
/* Desktop: three columns */
@media (min-width: 1024px) {
grid-template-areas:
"header header header"
"nav main sidebar";
grid-template-columns: 250px 1fr 300px;
}
}
```
### Flexbox (Components)
Use for **1D layouts** (rows/columns within cards):
```css
/* Card with image + content side-by-side */
.card {
display: flex;
gap: 1rem;
align-items: center; /* vertically center */
}
/* Responsive: stack on mobile */
@media (max-width: 576px) {
.card {
flex-direction: column;
}
}
```
### Responsive Grid (Auto-fit)
**No media queries needed** for simple grids:
```css
.grid {
display: grid;
gap: 1.5rem;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}
```
Auto-wraps when items don't fit!
---
## β‘ MICRO-INTERACTIONS
Subtle animations that make UI feel alive (not distracting).
### When to Use
- **Hover:** Buttons scale up 1.05x (feels clickable)
- **Click:** Buttons scale down to 0.95x (tactile feedback)
- **Loading:** Skeleton screens or pulse animations
- **Success:** Checkmark fade-in, confetti (for big wins)
- **Error:** Shake animation (subtle, 2px left-right)
### Framer Motion (React)
```jsx
```
### Screen Reader Testing
- Install NVDA (Windows) or VoiceOver (Mac)
- Navigate your UI with screen reader on
- Fix anything confusing or unlabeled
---
## π¨ SHADCN/UI + TAILWIND STACK
### Why This Combo?
- **Shadcn/ui:** Pre-built, accessible components (buttons, modals, dropdowns)
- **Tailwind CSS:** Utility-first styling (no custom CSS files)
- **Radix UI:** Unstyled, accessible primitives (under the hood)
### Setup (Next.js)
```bash
npx create-next-app@latest quickpost --typescript --tailwind --app
cd quickpost
npx shadcn@latest init
```
Choose:
- **Style:** Default
- **Base color:** Blue (or custom)
- **CSS variables:** Yes
### Adding Components
```bash
npx shadcn@latest add button
npx shadcn@latest add card
npx shadcn@latest add dialog
npx shadcn@latest add calendar
```
Components appear in `components/ui/` β **you own the code, customize freely.**
### Component Structure
```
/components
/ui # Shadcn components (button, card, etc.)
/layout # Navbar, footer, sidebar
/features # Upload, calendar, post-preview
/shared # Reusable custom components
```
### Tailwind Best Practices
**Use design tokens (not arbitrary values):**
```jsx
// β Bad (arbitrary)