Files
2026-04-11 00:04:09 -05:00

10 KiB

URL State Example - Navigation Flow

📍 Visual Journey Through URL Changes

Step 1: Page Load

URL: https://yoursite.com/
State: Fresh start, no parameters
Bit Value: 0
┌─────────────────────────────────┐
│  What are you looking for?      │
│  ┌─────┐  ┌─────┐               │
│  │ 🚪  │  │ 🪟  │               │
│  │Door │  │Window│              │
│  └─────┘  └─────┘               │
└─────────────────────────────────┘

Step 2: User Selects "Door"

URL: https://yoursite.com/?b=1&q=q-door-type
                              ↑
                              Bit 0 set (Door)
State: Door selected
Bit Value: 1 (binary: 1)
Bits Active: Door
┌─────────────────────────────────┐
│  What type of door?             │
│  ┌──────────┐  ┌──────────┐    │
│  │Storm Door│  │Patio Door│    │
│  └──────────┘  └──────────┘    │
└─────────────────────────────────┘

Step 3: User Selects "Storm Door"

URL: https://yoursite.com/?b=16385&q=q-material-storm-door
                              ↑
                              16385 = 1 (Door) + 16384 (Storm Door)
State: Door + Storm Door selected
Bit Value: 16385 (binary: 100000000000001)
Bits Active: Door, Storm Door subtype

Calculation:
  Bit 0 (Door)       = 1
  Bit 14 (Storm Door)= 16384
  Total             = 16385
┌─────────────────────────────────┐
│  Select Material                 │
│  CONDITIONAL: Only showing       │
│  because some storm doors have   │
│  multiple materials              │
│  ┌─────────┐  ┌─────────┐       │
│  │Aluminum │  │  Vinyl  │       │
│  └─────────┘  └─────────┘       │
└─────────────────────────────────┘

Step 4: User Selects "Aluminum"

URL: https://yoursite.com/?b=16401&q=q-color-storm-door
                              ↑
                              16401 = 1 + 16 + 16384
State: Door + Aluminum + Storm Door
Bit Value: 16401 (binary: 100000000010001)
Bits Active: Door, Aluminum, Storm Door subtype

Calculation:
  Bit 0 (Door)       = 1
  Bit 4 (Aluminum)   = 16
  Bit 14 (Storm Door)= 16384
  Total             = 16401
┌─────────────────────────────────┐
│  Select Color                    │
│  ┌───────┐ ┌───────┐ ┌───────┐ │
│  │ Black │ │ White │ │Bronze │ │
│  └───────┘ └───────┘ └───────┘ │
└─────────────────────────────────┘

Step 5: User Selects "White"

URL: https://yoursite.com/?b=16529&q=q-dimensions
                              ↑
                              16529 = 1 + 16 + 128 + 16384
State: Door + Aluminum + White + Storm Door
Bit Value: 16529 (binary: 100000010010001)
Bits Active: Door, Aluminum, White, Storm Door

Calculation:
  Bit 0 (Door)       = 1
  Bit 4 (Aluminum)   = 16
  Bit 7 (White)      = 128
  Bit 14 (Storm Door)= 16384
  Total             = 16529
┌─────────────────────────────────┐
│  Enter Dimensions                │
│  Width:  [______] inches         │
│  Height: [______] inches         │
│  [Continue →]                    │
└─────────────────────────────────┘

Step 6: View Results

URL: https://yoursite.com/?b=16529&q=results
State: Showing filtered products
Bit Value: 16529
Products Matched: All doors that are:
  ✓ Storm Door type (bit 14)
  ✓ Aluminum material (bit 4)
  ✓ Available in White (bit 7)
┌─────────────────────────────────┐
│  Found 3 Products               │
│  ┌─────────────────────────┐   │
│  │ STAR 6100 FULL VIEW     │   │
│  │ Code: 6100I             │   │
│  │ Aluminum, White, Bronze  │   │
│  │ [View Details]          │   │
│  └─────────────────────────┘   │
│  ┌─────────────────────────┐   │
│  │ COLUMBIA COBRA          │   │
│  │ Code: COBRAI            │   │
│  │ [View Details]          │   │
│  └─────────────────────────┘   │
└─────────────────────────────────┘

Step 7: Click Product Detail

URL: https://yoursite.com/?p=6100I&b=16529
                              ↑
                              Product code added
State: Viewing specific product 6100I
Bit Value: 16529 (preserved for "back" navigation)
┌─────────────────────────────────────────┐
│  STAR 6100 FULL VIEW STORM DOOR         │
│  ──────────────────────────────────     │
│  Product Code: 6100I                    │
│  Category: STD                          │
│  Materials: Aluminum                    │
│  Colors: White, Bronze                  │
│                                          │
│  Compatible Accessories:                │
│  • BGIST - Inserts for Storm Doors      │
│  • TGIODD - Top Glass Inserts           │
│                                          │
│  [← Back] [Start Over] [🔗 Share]      │
└─────────────────────────────────────────┘

Step 8: Copy & Share URL

User clicks "🔗 Share" button
Copies: https://yoursite.com/?p=6100I&b=16529

Someone else pastes this URL in their browser:
→ Instantly shows product 6100I
→ Navigation state preserved (b=16529)
→ Back button navigates through original path

Step 9: Browser Back Button

User clicks browser back button

URL Changes:
https://yoursite.com/?p=6100I&b=16529
           ↓
https://yoursite.com/?b=16529&q=results
           ↓
https://yoursite.com/?b=16529&q=q-dimensions
           ↓
https://yoursite.com/?b=16401&q=q-color-storm-door
           ↓
https://yoursite.com/?b=16385&q=q-material-storm-door
           ↓
https://yoursite.com/?b=1&q=q-door-type
           ↓
https://yoursite.com/

Each step backward:
✓ Restores question state
✓ Maintains bit value
✓ Shows correct UI

Step 10: Refresh Page

At any point, user presses F5 to refresh

Before Refresh: https://yoursite.com/?b=16529&q=q-dimensions
After Refresh:  https://yoursite.com/?b=16529&q=q-dimensions

Result:
✓ Returns to same question
✓ Previous answers restored
✓ Accumulated selections preserved
✓ Can continue where they left off

🎯 Bit Value Breakdown Reference

Common Values You'll See

Bit Value Decimal What It Means
0000...0001 1 Door selected
0000...0010 2 Window selected
0001...0001 16385 Door + Storm Door
0001...0011 16387 Door + Window + Storm Door
0001...0011 16401 Door + Aluminum + Storm Door
0010...0010 16529 Door + Aluminum + White + Storm Door

Quick Decode Formula

To check if a bit is set:
  if (bitValue & (1 << bitPosition)) {
    // That attribute is selected
  }

Examples:
  16529 & 1     = 1   → Door is selected ✓
  16529 & 2     = 0   → Window is NOT selected
  16529 & 16    = 16  → Aluminum is selected ✓
  16529 & 128   = 128 → White is selected ✓
  16529 & 16384 = 16384 → Storm Door is selected ✓

🔗 URL Patterns

Navigation State

Pattern: /?b={bitValue}&q={questionKey}
Example: /?b=16529&q=q-dimensions
Use: Bookmark navigation progress

Product View

Pattern: /?p={productCode}&b={bitValue}
Example: /?p=6100I&b=16529
Use: Direct link to product with context

Initial State

Pattern: /
Example: https://yoursite.com/
Use: Fresh start, no parameters

💡 Power User Features

Hack the URL

Users can manually modify URLs:

Original: /?b=16529&q=q-dimensions
         (Door + Aluminum + White + Storm Door)

Modified: /?b=34&q=q-dimensions
         (Vinyl only)

Result: Jumps directly to Vinyl products

Preset Configurations

Your sales team can create bookmarks:

Residential Storm Doors:
  /?b=16401&q=results

Commercial Windows:
  /?b=8194&q=results

Budget Options (Vinyl):
  /?b=32&q=start

Analytics Tracking

Track which combinations are popular:

Top URLs:
  /?b=16529 → White Aluminum Storm Doors (2,453 views)
  /?b=8226  → White Vinyl Windows (1,834 views)
  /?b=272   → Bronze products (892 views)

🎓 Learning Example

Try This Exercise:

  1. Start at homepage (b=0)
  2. Select Window (b=2)
  3. Select Primary Window (b=8194)
  4. Select Vinyl (b=8226)
  5. Select White (b=8354)

Your URL should be: /?b=8354&q=q-dimensions

Decode: 8354 in binary = 10000010100010

  • Bit 1 (2) = Window ✓
  • Bit 5 (32) = Vinyl ✓
  • Bit 7 (128) = White ✓
  • Bit 13 (8192) = Primary Window ✓ Total: 2 + 32 + 128 + 8192 = 8354 ✓

Ready to implement! 🚀