CODITECT Multi-Tenant Admin: Customer Journey Map
Design Philosophy: Lean, Self-Service, Minimal, Flat
Inspiration: Apple, Stripe Dashboard, Linear
User Roles & Access Patterns
Role Hierarchy
Platform Admin (CODITECT)
├─ Tenant Admin (Customer Org)
│ ├─ Team Lead (Project Manager)
│ │ └─ Team Member (Developer/User)
│ └─ Billing Admin (Finance)
└─ Support User (Limited Read)
Access Frequency Analysis
platform_admin:
daily_access:
- Tenant health monitoring
- Usage analytics
- Support tickets
weekly_access:
- New tenant onboarding
- Billing review
- Platform metrics
monthly_access:
- Feature rollouts
- Capacity planning
rare_access:
- Platform settings
- Security H.P.009-CONFIGuration
tenant_admin:
daily_access:
- Team activity feed
- Project status overview
weekly_access:
- User management
- Team H.P.009-CONFIGuration
- Usage reports
monthly_access:
- Billing review
- Settings adjustment
rare_access:
- Tenant settings
- Integration setup
team_lead:
daily_access:
- Active projects
- Team member status
- Issues/blockers
weekly_access:
- Project creation
- Team assignments
monthly_access:
- Reports/analytics
rare_access:
- Team settings
team_member:
daily_access:
- Assigned projects
- My tasks/issues
weekly_access:
- Project history
monthly_access:
- Profile updates
rare_access:
- Settings
Customer Journeys
Journey 1: Platform Admin - Daily Monitoring
Goal: Quick health check across all tenants
Landing Page: Tenant Overview Dashboard
├─ Visual: Card grid, one card per tenant
├─ Info per card:
│ ├─ Tenant name + logo
│ ├─ Active users (trend indicator)
│ ├─ Current projects
│ ├─ Health status (green/yellow/red dot)
│ └─ Token usage (bar chart)
│
├─ Actions (minimal):
│ ├─ Search tenants (top right)
│ ├─ Filter by status (dropdown)
│ └─ Add tenant (+ button)
│
└─ Click card → Tenant detail view
Tenant Detail View:
├─ Header: Tenant name, logo, status
├─ Tabs (horizontal): Activity | Users | Projects | Usage | Settings
├─ Activity feed (default):
│ ├─ Chronological updates
│ ├─ User logins, project starts, issues
│ └─ Real-time updates
│
└─ Sidebar: Quick stats (small cards)
├─ Active users (number + trend)
├─ Token usage today (number + budget %)
├─ Projects running (number)
└─ Support tickets (number, red if > 0)
Navigation:
├─ Top bar: CODITECT logo | Tenants | Analytics | Support | [Admin Icon]
└─ Click outside tenant → Back to overview
Design Principles Applied:
- Single consolidated header (logo + 4 main sections + admin icon)
- Default view = most accessed (tenant overview)
- Content starts immediately (no nested headers)
- Visual status indicators (dots, trends) minimize text
- Cards for scanning, not tables
- Sidebar stats, not dashboard clutter
Journey 2: Tenant Admin - Team Management
Goal: Add user, assign to team, grant project access
Landing Page: My Organization Dashboard
├─ Main content: Active Teams (card grid)
│ ├─ Each card shows:
│ │ ├─ Team name
│ │ ├─ Member count
│ │ ├─ Active projects
│ │ └─ Last activity timestamp
│ │
│ └─ Click card → Team detail
│
├─ Sidebar: Quick actions
│ ├─ + Add user
│ ├─ + Create team
│ └─ Pending invites (badge if > 0)
│
└─ Top bar: Org logo | Teams | Projects | People | [Account icon]
Add User Flow (Modal, Not New Page):
├─ Step 1: Email + Name
├─ Step 2: Select team(s) - checkboxes, visual team cards
├─ Step 3: Role selection - radio buttons, clear descriptions
├─ Step 4: Preview + Send invite
└─ Success: Toast notification, modal closes
Team Detail View:
├─ Header: Team name (editable inline) + member count
├─ Sections (vertical flow, no tabs):
│ ├─ Members (avatar grid + roles)
│ ├─ Projects (linked project cards)
│ └─ Recent activity (condensed feed)
│
└─ Actions (floating button):
├─ + Add member
├─ Create project
└─ Team settings (gear icon)
Design Principles Applied:
- Modal for quick tasks (add user) - no page navigation
- Cards over tables for better scanning
- Inline editing (team name) reduces clicks
- Floating action button for primary actions
- Avatar grids more visual than text lists
- No separate "users" and "teams" tabs - integrated view
Journey 3: Team Lead - Morning Check-In
Goal: See project status, identify blockers, assign work
Landing Page: My Projects
├─ Layout: Kanban-style cards (not table)
│ ├─ Columns: Active | Review | Blocked | Complete
│ ├─ Each project card:
│ │ ├─ Project name (bold)
│ │ ├─ Progress indicator (visual bar)
│ │ ├─ Team member avatars (who's working)
│ │ ├─ Issue count (red badge if blockers)
│ │ └─ Last update timestamp
│ │
│ └─ Drag-drop to change status
│
├─ Top bar: Logo | Projects | Team | Issues | [Profile]
│
└─ Click card → Project detail
Project Detail View:
├─ Header: Project name + status
├─ Main content (single column, vertical flow):
│ ├─ Progress: Visual timeline with milestones
│ ├─ Active work:
│ │ ├─ Current tasks (compact list)
│ │ ├─ Assigned to (avatars)
│ │ └─ Status (colored dots)
│ ├─ Blockers (if any):
│ │ ├─ Issue description
│ │ ├─ Assigned to
│ │ └─ Age (hours/days)
│ └─ Recent updates (activity feed)
│
└─ Floating actions:
├─ + Add task
├─ Report issue
└─ Project settings
Issues Sidebar (Optional, Toggleable):
├─ Shows across all projects
├─ Filtered by "Assigned to me" or "My team"
├─ Sorted by priority (red → yellow → gray)
└─ Click issue → Inline expand for details
Design Principles Applied:
- Kanban cards (visual status) over table rows
- Progress bars instead of percentages
- Avatar presence over "Assigned To: John Doe"
- Red badges draw attention to blockers
- Single column detail view (no left/right split)
- Issues as toggleable sidebar, not separate page
Journey 4: Team Member - Daily Work
Goal: See assigned tasks, update status, flag blockers
Landing Page: My Work
├─ Today's Focus (top section):
│ ├─ 2-3 most urgent tasks
│ ├─ Large, scannable cards
│ ├─ Clear CTAs: "Start", "Continue", "Review"
│ └─ Estimated time remaining
│
├─ This Week (below):
│ ├─ Compact task list
│ ├─ Checkbox + task name + project tag
│ └─ Drag to reorder priority
│
├─ Top bar: Logo | My Work | Projects | [Profile]
│
└─ No "Dashboard" - work IS the landing page
Task Detail (Modal or Slide-Over):
├─ Task name (editable)
├─ Description (rich text, minimal)
├─ Project context (linked)
├─ Status: Dropdown (To Do → In Progress → Done → Blocked)
├─ Time tracking: Start/stop timer (optional)
└─ Actions:
├─ Update status
├─ Flag blocker (red button, opens issue form)
└─ Mark complete (big green button)
Projects Tab (Secondary):
├─ List of projects I'm on
├─ Click → See my tasks in that project
└─ Breadcrumb: My Work > [Project Name] > Tasks
Design Principles Applied:
- "My Work" not "Dashboard" (clear purpose)
- Most urgent tasks featured (minimize decision fatigue)
- Checkbox interaction (satisfying, clear status)
- Modal for quick updates (no page navigation)
- Timer integration (self-service time tracking)
- Minimal text labels (icons + clear actions)
Information Architecture (Simplified)
Platform Admin (CODITECT Internal)
Tenants (default landing)
├─ Overview (card grid)
├─ Click tenant → Detail
│ ├─ Activity (default tab)
│ ├─ Users
│ ├─ Projects
│ ├─ Usage
│ └─ Settings
│
Analytics
├─ Platform metrics dashboard
├─ Visual charts (no tables)
└─ Exportable reports
│
Support
├─ Active tickets
├─ Knowledge base
└─ Contact history
│
[Admin Icon]
├─ Platform settings
├─ Security
├─ Billing H.P.009-CONFIG
└─ Logout
Navigation Depth: Max 2 clicks to any content
Tenant Admin (Customer Org)
Teams (default landing)
├─ Active teams (card grid)
├─ Click team → Detail
│ ├─ Members
│ ├─ Projects
│ └─ Activity
│
Projects
├─ All org projects
├─ Kanban view
└─ Click → Project detail
│
People
├─ User directory
├─ Pending invites
└─ Role management
│
[Account Icon]
├─ Billing
├─ Settings
├─ Integrations
└─ Logout
Navigation Depth: Max 2 clicks to any content
Team Lead
Projects (default landing)
├─ My team's projects
├─ Kanban view
└─ Click → Project detail
│
Team
├─ Member list
├─ Assignments
└─ Activity feed
│
Issues
├─ All issues
├─ My team's issues
└─ Click → Issue detail
│
[Profile Icon]
├─ Settings
└─ Logout
Navigation Depth: Max 1-2 clicks to any content
Team Member
My Work (default landing)
├─ Today's focus
├─ This week
└─ Click → Task detail
│
Projects
├─ Projects I'm on
└─ Click → My tasks in project
│
[Profile Icon]
├─ Settings
└─ Logout
Navigation Depth: Max 1 click to any content
Visual Design System
Color Palette (Minimal, Purposeful)
neutrals:
white: "#FFFFFF" # Backgrounds
gray_50: "#F9FAFB" # Subtle backgrounds
gray_200: "#E5E7EB" # Borders
gray_400: "#9CA3AF" # Secondary text
gray_900: "#111827" # Primary text
primary:
blue_500: "#3B82F6" # Actions, links
blue_600: "#2563EB" # Hover states
semantic:
green_500: "#10B981" # Success, active, complete
yellow_500: "#F59E0B" # Warning, in progress
red_500: "#EF4444" # Error, blocked, urgent
backgrounds:
card: "#FFFFFF"
page: "#F9FAFB"
hover: "#F3F4F6"
Usage Rules:
- White cards on subtle gray backgrounds (no borders)
- Color only for status (green/yellow/red)
- Blue only for clickable items
- Black text on white (maximum contrast)
Typography Scale
display:
size: "32px"
weight: "600"
usage: "Page titles (rare)"
headline:
size: "24px"
weight: "600"
usage: "Section headers"
title:
size: "18px"
weight: "600"
usage: "Card titles, emphasis"
body:
size: "16px"
weight: "400"
usage: "Primary content"
secondary:
size: "14px"
weight: "400"
usage: "Metadata, timestamps"
caption:
size: "12px"
weight: "400"
usage: "Labels, hints"
Usage Rules:
- Max 3 font sizes on any screen
- Bold only for interactive elements (buttons, links)
- Gray text for metadata, black for content
- Generous line height (1.5-1.6)
Spacing System (8px Grid)
spacing:
xs: "4px" # Tight groups (icon + label)
sm: "8px" # Related items
md: "16px" # Component padding
lg: "24px" # Section spacing
xl: "32px" # Major sections
2xl: "48px" # Page margins
3xl: "64px" # Hero sections (rare)
Usage Rules:
- 16px default component padding
- 24px between sections
- 48px page margins (top/sides)
- Never arbitrary spacing (stick to scale)
Component Library (Minimal)
card:
background: white
border_radius: "8px"
shadow: "0 1px 3px rgba(0,0,0,0.08)"
padding: "16px"
hover_shadow: "0 4px 12px rgba(0,0,0,0.12)"
button_primary:
background: blue_500
color: white
height: "40px"
padding: "0 20px"
border_radius: "6px"
font_weight: "500"
hover: blue_600
button_secondary:
background: gray_200
color: gray_900
height: "40px"
padding: "0 20px"
border_radius: "6px"
font_weight: "500"
hover: gray_300
input:
height: "40px"
padding: "0 12px"
border: "1px solid gray_200"
border_radius: "6px"
focus_border: blue_500
background: white
badge:
height: "20px"
padding: "0 8px"
border_radius: "10px"
font_size: "12px"
font_weight: "500"
# Color varies by type (green/yellow/red)
avatar:
size: "32px" # Default
border_radius: "50%"
# Sizes: 24px (small), 32px (default), 48px (large)
status_dot:
size: "8px"
border_radius: "50%"
# Color indicates status (green/yellow/red)
Layout Patterns
Single Column (Primary)
┌─────────────────────────────────────────────────────────┐
│ [Logo] Nav1 Nav2 Nav3 Search [Icon] │ 80px header
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Main Content Area │ │
│ │ (Full width, max-width 1200px, centered) │ │
│ │ │ │
│ │ Cards stack vertically │ │
│ │ Generous whitespace │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
Use for:
- Dashboard (card grid)
- Detail views (vertical flow)
- Forms (single column)
Main + Sidebar (Secondary)
┌─────────────────────────────────────────────────────────┐
│ [Logo] Nav1 Nav2 Nav3 Search [Icon] │ 80px
├─────────────────────────────────────────────────────────┤
│ ┌────────┐│
│ ┌───────────────────────────────────┐ │ ││
│ │ │ │ Sidebar││
│ │ Main Content │ │ ││
│ │ (70% width) │ │ Quick ││
│ │ │ │ Stats ││
│ │ │ │ ││
│ │ │ │ or ││
│ │ │ │ ││
│ │ │ │ Actions││
│ └───────────────────────────────────┘ │ ││
│ └────────┘│
└─────────────────────────────────────────────────────────┘
Use for:
- Project detail + issues sidebar
- Content + quick stats
- Toggleable (sidebar can hide)
Grid (Tertiary)
┌─────────────────────────────────────────────────────────┐
│ [Logo] Nav1 Nav2 Nav3 Search [Icon] │ 80px
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Card 1 │ │ Card 2 │ │ Card 3 │ │ Card 4 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Card 5 │ │ Card 6 │ │ Card 7 │ │ Card 8 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
Use for:
- Tenant overview (card grid)
- Team overview (card grid)
- Project gallery
- Responsive: 4 columns → 3 → 2 → 1
Interaction Patterns
Navigation (Minimal Clicks)
Primary Navigation (Top Bar):
- 3-4 main sections max
- Click → Instant navigation (no loading)
- Active state: Blue underline (subtle)
- Icons optional (only if universal)
Breadcrumbs (Only When Necessary):
- Show current context
- Max 2 levels: Overview > Detail
- Clickable to go back
- Gray text, subtle arrows
Search (Global):
- Always visible (top right)
- Searches across current context
- Instant results (dropdown)
- Keyboard shortcut: Cmd+K
Modals vs. Pages
Use Modal for:
- Quick tasks (add user, create project)
- Forms < 5 fields
- Confirmations
- Preserves context (no navigation)
Use New Page for:
- Detail views (project, tenant)
- Complex H.P.006-WORKFLOWS (onboarding)
- Reading-heavy content
- Navigation expected
Feedback (Immediate, Subtle)
Success:
- Green toast (top right)
- 3-second auto-dismiss
- Checkmark icon + message
- Example: "User added successfully"
Error:
- Red toast (top right)
- Manual dismiss required
- X icon + error message
- Example: "Email already exists"
Loading:
- Skeleton screens (not spinners)
- Show layout, gray placeholders
- Smooth transition when loaded
- Progress bar for long operations
Empty States (Helpful, Not Sad)
No Projects Yet
[Illustration: Simple line drawing]
Get started by creating your first project.
Projects help organize work across teams.
[+ Create Project]
Principles:
- Friendly illustration (not error icon)
- Brief explanation (1-2 sentences)
- Clear next action (big button)
- No "error" language
Accessibility Requirements
Color Contrast
- Text: 4.5:1 minimum (WCAG AA)
- Large text: 3:1 minimum
- Interactive elements: 3:1 minimum
- Never color-only indicators (use icons too)
Keyboard Navigation
- Tab order logical
- Focus indicators visible (blue outline)
- Escape closes modals
- Enter submits forms
- Arrow keys navigate lists
Screen Readers
- Alt text on all images
- ARIA labels on icons
- Semantic HTML (h1, nav, main, aside)
- Announce dynamic content changes
Touch Targets
- Minimum 44x44px
- Adequate spacing (8px min)
- No hover-only interactions
- Swipe gestures optional (provide alternatives)
Performance Targets
Page Load
- Initial render: < 1 second
- Fully interactive: < 2 seconds
- No layout shift
Interactions
- Click → Response: < 100ms
- Search results: < 200ms
- Page transition: < 300ms
Data
- Paginate lists > 50 items
- Lazy load images
- Cache aggressively
- Optimistic UI updates
Responsive Breakpoints
mobile: "< 640px"
- Single column
- Hamburger menu
- Full-width cards
tablet: "640px - 1024px"
- 2 column grid
- Condensed sidebar
- Adaptive navigation
desktop: "> 1024px"
- Full layout
- Multi-column grids
- Persistent sidebar
Self-Service Principles
Progressive Disclosure
- Show essentials first
- "Advanced" options collapsed
- Inline help (tooltips, not docs)
- Learn by doing (not reading)
Sensible Defaults
- Pre-fill common values
- Suggest based on context
- One-click H.P.008-TEMPLATES
- Undo always available
Clear Mental Models
- Familiar patterns (email-style)
- Consistent terminology
- Visual metaphors (cards = entities)
- No jargon (plain language)
Error Prevention
- Validate inline (not on submit)
- Disable impossible actions
- Confirm destructive operations
- Auto-save drafts
Summary: Design Philosophy
LESS IS MORE:
- 1 header, not 3-4
- 3 navigation items, not 10
- Cards, not tables
- Actions, not menus
- Icons, not text
- Dots, not status labels
CONTENT FIRST:
- No splash screens
- No empty dashboards
- Default = most accessed
- Progressive loading OK
- Skeleton > spinner
SELF-SERVICE:
- Inline help
- Smart defaults
- Clear next actions
- Forgiving (undo, drafts)
- No training required
APPLE-LIKE:
- Generous whitespace
- Subtle shadows
- Minimal color
- Smooth animations
- Delightful details