Guide to using Shepβs browser-based interface.
The web UI provides a visual interface for:
| Component | Technology | Purpose |
|---|---|---|
| Framework | Next.js 16+ | App Router, Server Components, Turbopack |
| React | React 19 | UI framework |
| Styling | Tailwind CSS 4 | Utility-first CSS with design tokens |
| UI Components | shadcn/ui | Radix primitives + Tailwind CSS |
| Design System | Storybook | Component documentation and testing |
| E2E Testing | Playwright | Browser-based automated tests |
The Web UI is built with modern React patterns:
Start the web UI server:
shep ui
Default URL: http://localhost:4050/
To use a custom port:
shep ui --port 8080
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β [Logo] Shep AI [Settings] [?] β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β β
β FEATURES β β
β ββββββββββββββββ β MAIN CONTENT AREA β
β β‘ Feature 1 β β
β β‘ Feature 2 β β
β β‘ Feature 3 β β
β β β
β [+ New Feature] β β
β β β
ββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Status: Ready | Analysis: Up to date | Server: Running β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββ
β New Feature β
ββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Based on your codebase, here are some β
β suggestions: β
β β
β β Add user authentication β
β β Implement API caching β
β β Add comprehensive testing β
β β Other: [________________] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Cancel] [Continue] β
ββββββββββββββββββββββββββββββββββββββββββββββββββ
The chat interface guides you through requirements:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Feature: User Authentication | Phase: Requirements β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Shep: What authentication method would you like? β
β β
β Options: β
β β Email/password β
β β OAuth - Google, GitHub β
β β Magic links β
β β Multiple methods β
β β
β You: [Type or select...] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Requirements gathered: 3 β
β [Save Draft] [Done] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Chat features:
After requirements, view the generated plan:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Authentication [Requirements] Preview β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β EPIC: 5 stories - 25 subtasks β
β β
β ββ Implement OAuth Authentication βββββββββββββββββββββββββββββ β
β β Introduce OAuth support with Google and GitHub... β β
β β β β
β β βΌ STORY: Setup OAuth Provider Config - 3 tasks β β
β β β‘ Create provider configuration file β β
β β β‘ Add environment variable handling β β
β β β‘ Implement provider factory β β
β β β β
β β βΌ STORY: Implement Callback Handlers - 4 tasks β β
β β β‘ Create OAuth callback route β β
β β β‘ Implement token exchange β β
β β β‘ Handle user creation/linking β β
β β β‘ Add error handling β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β TICKETS 25 | DOCUMENTATION 3 | REQUIREMENTS 8 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Tab | Content |
|---|---|
| TICKETS | Tasks and action items |
| DOCUMENTATION | Generated artifacts (PRD, RFC, etc.) |
| REQUIREMENTS | Gathered requirements list |
During implementation, track progress:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Authentication β
β Phase: Implementation | Progress: 40% β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Progress: [================....................] 10/25 β
β β
β Currently Executing: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β TASK: Implement token exchange β β
β β Creating src/services/oauth.ts β β
β β Adding exchangeToken function... β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Recent Activity: β
β β Completed: Created src/routes/auth.ts β
β β Completed: Added OAuth callback route β
β β Completed: Configured environment variables β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Pause] [View Changes] [Cancel] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Button | Action |
|---|---|
| Pause | Pause execution after current task |
| View Changes | Open diff viewer |
| Cancel | Stop execution (requires confirmation) |
View and edit generated documentation:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Product Requirements Document β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β # PRD: User Authentication β
β β
β Problem Statement β
β βββββββββββββββββββ β
β Users currently cannot securely access their accounts... β
β β
β User Stories β
β ββββββββββββββ β
β As a user, I want to log in with Google so that... β
β As a user, I want to link my GitHub account... β
β β
β Acceptance Criteria β
β ββββββββββββββββββββββ β
β [ ] Users can sign in with Google OAuth β
β [ ] Users can sign in with GitHub OAuth β
β [ ] Users can link multiple providers β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Edit] [Export] [Regenerate] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Features:
Access via gear icon:
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Settings [x] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Theme β
β β Light β Dark β System β
β β
β Implementation β
β [x] Require approval before each task β
β [ ] Auto-commit changes β
β β
β Server β
β Port: [4050] β
β β
β Advanced β
β [View Logs] [Clear Cache] [Reset Config] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [Cancel] [Save] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Shortcut | Action |
|---|---|
Ctrl/Cmd + N |
New feature |
Ctrl/Cmd + S |
Save current |
Ctrl/Cmd + Enter |
Submit in chat |
Escape |
Close modal/cancel |
? |
Show all shortcuts |
The UI adapts to screen size:
# Start the web UI in development mode
pnpm dev:web
# Build for production
pnpm build:web
# Run E2E tests
pnpm test:e2e
View and develop components in isolation:
# Start Storybook dev server
pnpm dev:storybook
# Build Storybook for deployment
pnpm build:storybook
Storybook includes:
Note: Stories are colocated with components (e.g., button.stories.tsx next to button.tsx).
The web UI uses a four-tier component architecture with strict dependency direction.
src/presentation/web/
βββ app/ # Next.js App Router
β βββ layout.tsx # Root layout (uses AppShell)
β βββ page.tsx # Home page
β βββ version/
β βββ page.tsx # Version info page
βββ components/
β βββ ui/ # Tier 0: shadcn/ui primitives
β β βββ button.tsx
β β βββ card.tsx
β β βββ ...
β βββ common/ # Tier 1: Cross-feature composed components
β β βββ theme-toggle/
β β βββ page-header/
β β βββ empty-state/
β β βββ loading-skeleton/
β βββ layouts/ # Tier 2: Page shells, structural wrappers
β β βββ sidebar/
β β βββ header/
β β βββ dashboard-layout/
β β βββ app-shell/
β βββ features/ # Tier 3: Domain-specific UI bound to routes
β βββ version/
β βββ settings/
βββ docs/ # Design system MDX documentation
βββ hooks/ # Custom React hooks
β βββ useTheme.ts
βββ lib/ # Utilities
β βββ utils.ts
βββ types/ # TypeScript types
βββ theme.ts
For detailed architecture documentation, see UI Architecture.
Update when:
Related docs: