debate/docs/PRD.md
2026-01-25 01:31:57 +00:00

14 KiB

Product Requirements Document (PRD)

Project Debate - Linux Distribution Builder Platform

1. Product Vision

1.1 Vision Statement

Debate is the platform where Linux opinions compete. It empowers anyone to build their perfect Linux distribution by visually selecting, combining, and customizing preconfigured "opinions" - then generating a ready-to-install ISO.

1.2 Target Users

Primary: Linux-Curious Switchers

  • Coming from Windows or macOS
  • Heard about Linux through Steam Deck, YouTube, or word of mouth
  • Want customization without command-line expertise
  • Value aesthetics and user experience

Secondary: Linux Enthusiasts

  • Already use Linux but want easier ricing/customization
  • Want to share their configurations with others
  • Interested in trying new setups without manual work

Tertiary: Content Creators

  • YouTubers, streamers covering Linux
  • Want visually interesting content
  • Appreciate the "debate" terminology and UI for engagement

2. Terminology

The product uses debate/speech terminology throughout for personality and memorability:

Concept Term Description
Select an option Take a stance Choosing a specific configuration
Remove conflicting item Concede Giving up one option for another
Swap one thing for another Rebut Replacing an opinion with alternative
Base distribution layer Opening statement Foundation (Arch, CachyOS, Fedora, etc.)
Window manager layer Platform Where you stand (Hyprland, Sway, KDE, etc.)
Theming/ricing layer Rhetoric How it looks and feels
Application bundle layer Talking points What software is included
System configuration layer Closing argument Final system settings
Generate ISO Deliver Build and produce the final ISO
Saved configuration Speech A complete saved build
Community preset Published speech Shared configuration with tags
Tags/categories Topics How speeches are categorized
Conflict detected Objection Incompatible selections
Dependency satisfied Sustained Valid combination
Download ISO Take the floor Get your finished product

3. User Journeys

3.1 New User - Quick Start

1. Land on homepage
2. See rotating 3D stack demo
3. Click "Start Fresh"
4. Presented with Opening Statement selection (CachyOS recommended)
5. Select Platform (Hyprland default, options shown)
6. See pre-selected Rhetoric and Talking Points (Omarchy defaults)
7. Review Closing Arguments (dual-boot toggle visible)
8. Click "Deliver"
9. Watch build animation
10. Download ISO

3.2 Existing User - Load and Modify Speech

1. Log in
2. Go to "My Speeches"
3. Load previous speech into builder
4. Modify one layer (e.g., swap theme)
5. Resolve any objections
6. Save as new speech or overwrite
7. Optionally publish
8. Deliver new ISO

3.3 Community Browser - Find a Speech

1. Click "Browse Speeches"
2. Filter by topics: gaming + hyprland
3. Sort by popularity
4. Preview speech (3D stack thumbnail + description)
5. Click "Load into Builder"
6. Optionally modify
7. Deliver

3.4 Contributor - Submit New Overlay

1. Fork overlay template from GitHub
2. Create manifest, configs, scripts
3. Test locally
4. Submit PR
5. Automated tests run
6. Community review
7. Merge → overlay appears in builder

4. Feature Requirements

4.1 Builder Interface (P0 - Must Have)

4.1.1 3D Stack Visualization

Description: Interactive 3D representation of the configuration layers.

Requirements:

  • Layers float in 3D space, stacked vertically
  • User can rotate view (drag), zoom (scroll)
  • Each layer has distinct color/glow based on type
  • Selected layer highlights and expands slightly
  • Smooth animations for all state changes (60fps target)
  • Layers visually "snap" together when compatible

Interactions:

  • Click layer → select it, show details in side panel
  • Double-click layer → open layer detail modal
  • Drag from panel → add new layer to stack
  • Drag layer off stack → remove it

4.1.2 Layer Panel (Right Side)

Description: Context-sensitive panel showing available options.

States:

  • No selection: Shows available layers to add, organized by type
  • Layer selected: Shows options within that layer (toggles, dropdowns, swaps)
  • Conflict active: Shows resolution options

Requirements:

  • Smooth transitions between states
  • Search/filter within panel
  • Clear visual hierarchy
  • Conflict indicators (red) and compatibility indicators (green)

4.1.3 Conflict Resolution

Description: Visual and interactive handling of incompatible selections.

Requirements:

  • Conflicting layers pulse red
  • Conflicting layers lift off stack slightly
  • "Objection!" modal appears with options:
    • Concede (remove the conflicting overlay)
    • Rebut (swap for compatible alternative)
    • Withdraw (undo the action that caused conflict)
  • Cannot proceed to Deliver with unresolved objections

4.1.4 Deliver Flow

Description: ISO generation initiation and progress.

Requirements:

  • "Deliver" button disabled until stack is valid
  • "Deliver" button glows/pulses when ready
  • Click triggers build queue submission
  • Progress view shows:
    • Queue position (if applicable)
    • Build progress with stages
    • Estimated time remaining
    • Live log output (collapsible, for advanced users)
  • Completion shows download button "Take the Floor"
  • Option to save speech before/after delivery

4.2 Speeches (P0 - Must Have)

4.2.1 Save Speech

Requirements:

  • Save current stack as named speech
  • Attach description (optional)
  • Select topics (tags) from predefined + custom
  • Save to user account (requires auth)
  • Local save option for non-authenticated users (browser storage)

4.2.2 Load Speech

Requirements:

  • Load from user's saved speeches
  • Load from community (published speeches)
  • Load from URL/share link
  • Loading replaces current stack (with confirmation if unsaved changes)

4.2.3 Publish Speech

Requirements:

  • Must be logged in
  • Must have valid (deliverable) configuration
  • Add title, description, topics
  • Preview how it will appear in browser
  • Agree to community guidelines
  • Published speeches are public and searchable

4.2.4 Speech Browser

Requirements:

  • Grid view of speech cards
  • Each card shows:
    • Mini 3D stack preview (or static image)
    • Title
    • Author
    • Topics (tags)
    • Rating/popularity indicator
    • Download count
  • Filter by:
    • Topics (multi-select, AND logic)
    • Base distribution
    • Window manager
    • Author
  • Sort by:
    • Popularity (downloads)
    • Rating
    • Recent
    • Trending
  • Search by title/description
  • Pagination or infinite scroll

4.3 Topics (Tags) (P0 - Must Have)

4.3.1 Predefined Topics

Use case: gaming dev productivity creative server htpc daily-driver minimal normie-friendly

Aesthetic: waifu cyberpunk retro nord dracula catppuccin gruvbox kanagawa minimal riced

Base: arch cachyos endeavour fedora ubuntu (dynamic based on available opening statements)

Platform: hyprland sway i3 kde cosmic gnome (dynamic based on available platforms)

Other: privacy hardened lightweight bloated beginner-friendly

4.3.2 Custom Topics

Requirements:

  • Users can add custom topics when publishing
  • Custom topics require moderator approval to become searchable
  • Frequently used custom topics promoted to predefined

4.4 User Accounts (P1 - Should Have)

4.4.1 Authentication

Requirements:

  • Email/password registration
  • OAuth options (GitHub, Google)
  • Email verification
  • Password reset flow

4.4.2 User Profile

Requirements:

  • Username (unique)
  • Avatar
  • Bio (optional)
  • List of published speeches
  • Join date
  • Stats (speeches published, total downloads)

4.4.3 User Dashboard

Requirements:

  • My Speeches (saved, published)
  • Build history
  • Account settings

4.5 ISO Generation (P0 - Must Have)

4.5.1 Build Queue

Requirements:

  • Builds queued and processed in order
  • Priority for cached/popular configurations
  • User sees queue position and estimated wait
  • Builds timeout after 30 minutes
  • Failed builds report error to user

4.5.2 Build Process

Requirements:

  • Start from base layer (CachyOS ISO or bootstrap)
  • Apply overlays in order
  • Run pre-install, install, post-install scripts
  • Package into bootable ISO
  • Generate checksum
  • Store in cache

4.5.3 Caching

Requirements:

  • Cache key = hash of full configuration
  • Identical configurations serve cached ISO immediately
  • Cache expiry based on:
    • Time since last download (e.g., 30 days unused)
    • Upstream changes (base or overlay updates invalidate)
  • Storage limit with LRU eviction

4.6 Overlay System (P0 - Must Have)

4.6.1 Overlay Manifest Schema

name: string                    # Unique identifier
display_name: string            # Human-readable name
version: string                 # Semver
type: enum                      # opening_statement | platform | rhetoric | talking_points | closing_argument
description: string             # Short description
author: string                  # Creator
license: string                 # License identifier

requires: list[string]          # Overlay names that must be present
conflicts: list[string]         # Overlay names that cannot coexist  
provides: list[string]          # Abstract capabilities this fulfills
replaces: list[string]          # Overlays this can substitute for

options: list[Option]           # User-configurable options within overlay

4.6.2 Option Schema

name: string                    # Identifier
display_name: string            # Human-readable
type: enum                      # toggle | select | text | number
default: any                    # Default value
choices: list[any]              # For select type
description: string             # Help text

4.6.3 Dependency Resolution

Requirements:

  • Build dependency graph from all selected overlays
  • Detect cycles (error)
  • Detect conflicts (show objection)
  • Detect missing requirements (show warning with suggestions)
  • Auto-suggest compatible alternatives when conflict arises
  • Topologically sort overlays for correct application order

4.7 Admin/Moderation (P2 - Nice to Have)

4.7.1 Overlay Submission Review

Requirements:

  • Queue of submitted overlays pending review
  • Automated checks (schema validation, security scan)
  • Manual review interface
  • Approve/reject with feedback
  • Approved overlays auto-deploy to production

4.7.2 Speech Moderation

Requirements:

  • Flag inappropriate speeches
  • Review queue for flagged content
  • Remove/hide violating speeches
  • User warnings/bans for repeat offenders

5. Non-Functional Requirements

5.1 Performance

Metric Target
Initial page load < 3s
3D visualization FPS 60fps on mid-range hardware
API response time < 200ms (p95)
ISO build time < 15 minutes
Cached ISO retrieval < 10 seconds

5.2 Scalability

  • Support 1000 concurrent builder sessions
  • Support 100 concurrent ISO builds (queued)
  • Support 100,000 published speeches
  • Support 10,000 overlays

5.3 Reliability

  • 99.9% uptime for web interface
  • Build failures retry once automatically
  • Data backed up daily
  • ISO cache replicated

5.4 Security

  • All traffic over HTTPS
  • User passwords hashed (bcrypt/argon2)
  • Overlay scripts run in sandboxed build environment
  • No user data in ISO (built from clean state)
  • Rate limiting on API endpoints
  • CSRF protection

5.5 Accessibility

  • Keyboard navigation for all builder functions
  • Screen reader compatibility for core flows
  • 2D fallback interface for low-end devices
  • Color blind friendly conflict indicators (not just red/green)

6. UI/UX Specifications

6.1 Visual Style

Aesthetic: Sci-fi holographic interface, inspired by:

  • TRON
  • Iron Man's JARVIS UI
  • Cyberpunk 2077 interfaces
  • Modern "glassmorphism" trends

Color Palette:

  • Dark background (#0a0a0f or similar)
  • Accent glow colors for layers (cyan, magenta, orange)
  • Red for conflicts/objections
  • Green for sustained/compatible
  • White/light gray for text

Typography:

  • Monospace or tech-style font for headings
  • Clean sans-serif for body text
  • Code-style for technical details

6.2 Animations

  • Layer hover: subtle lift + glow increase
  • Layer select: expand + brighten
  • Conflict: pulse red + shake
  • Resolution: smooth transition to new state
  • Build progress: layers merge downward with particles
  • Success: celebratory glow/particles

6.3 Responsive Design

Breakpoint Layout
Desktop (1200px+) Full 3D builder, side panel
Tablet (768-1199px) 3D builder, panel as drawer
Mobile (< 768px) 2D fallback, stacked layout

7. Future Considerations (Post-v1)

  • Live preview: Boot generated ISO in browser via WebVM
  • Collaboration: Multiple users edit same speech
  • Versioning: Speech version history with diff
  • Subscription: Premium features (priority builds, private speeches)
  • Hardware profiles: Optimize builds for specific hardware
  • Plugin system: Third-party overlay sources
  • Desktop app: Electron/Tauri app for offline speech editing
  • Direct install: Network boot or USB writer integration

8. Open Questions

  1. Naming: Is "Debate" the final name? Domain availability?
  2. Monetization: How to sustain infrastructure costs long-term?
  3. Legal: Licensing implications of generating ISOs from various sources?
  4. Moderation: How much manual review is sustainable?
  5. Upstream relations: Coordinate with Omarchy/CachyOS maintainers?

9. Appendix

9.1 Competitive Analysis

Product Approach Limitation
Omarchy Pre-built opinionated ISO No customization
archinstall CLI installer with options Not visual, limited scope
CachyOS installer GUI with DE selection Only affects initial install
NixOS Declarative configuration Steep learning curve
Fedora Spins Pre-built variants Fixed options, no mixing

9.2 Reference Interfaces


This PRD is a living document and will be updated as requirements evolve.