🎨 Frontend Challenge
Build beautiful, functional interfaces for AI agent management! This challenge is for frontend engineers who want to contribute to Honeycomb, Aden's dashboard.
Difficulty: Intermediate Time: 1-2 hours Prerequisites: Complete Getting Started, React/TypeScript experience
Part 1: Codebase Exploration (15 points)
Task 1.1: Tech Stack Analysis 🔍
Explore the honeycomb/ directory and answer:
- What React version is used?
- What styling solution is used? (Tailwind, CSS Modules, etc.)
- What state management approach is used?
- What charting library is used for analytics?
- How does the frontend communicate with the backend in real-time?
Task 1.2: Component Structure 📁
Map out the component architecture:
- List the main page components (routes)
- Find and describe 3 reusable components
- Where are TypeScript types defined for agent data?
- How is authentication handled in the frontend?
Task 1.3: Design System 🎨
Analyze the UI patterns:
- What UI component library is used? (Radix, shadcn, etc.)
- Find 3 custom components that aren't from a library
- What color scheme/theme approach is used?
- How are loading and error states typically handled?
Part 2: UI/UX Analysis (20 points)
Task 2.1: Dashboard Critique 📊
Based on the codebase and agent control types, analyze what the dashboard likely shows:
- What key metrics would you display for agent monitoring?
- How would you visualize the agent graph/connections?
- What real-time updates are most important to show?
- Critique: What could be improved in the current approach?
Task 2.2: User Flow Design 🔄
Design the user flow for this feature:
Feature: "Create New Agent from Goal"
Map out:
- Entry point (where does the user start?)
- Step-by-step screens needed
- Form fields and validation
- Success/error states
- How to show agent generation progress
Provide a wireframe (can be ASCII, hand-drawn, or Figma):
+----------------------------------+
| Create New Agent |
|----------------------------------|
| Step 1: Define Your Goal |
| +----------------------------+ |
| | Describe what you want | |
| | your agent to achieve... | |
| +----------------------------+ |
| |
| [ ] Include human checkpoints |
| [ ] Enable cost controls |
| |
| [Cancel] [Next Step] |
+----------------------------------+
Task 2.3: Accessibility Audit ♿
Consider accessibility for the agent dashboard:
- List 5 accessibility requirements for a data-heavy dashboard
- How would you make real-time updates accessible?
- What keyboard navigation is essential?
- How would you handle screen readers for the agent graph visualization?
Part 3: Implementation Challenges (35 points)
Task 3.1: Build a Component 🧱
Create a React component: AgentStatusCard
Requirements:
- Display agent name, status, and key metrics
- Status: online (green), degraded (yellow), offline (red), unknown (gray)
- Show: requests/min, success rate, avg latency, cost today
- Include a mini sparkline chart for requests over last hour
- Expandable to show more details
- TypeScript with proper types
interface AgentStatusCardProps {
agent: {
id: string;
name: string;
status: 'online' | 'degraded' | 'offline' | 'unknown';
metrics: {
requestsPerMinute: number;
successRate: number;
avgLatency: number;
costToday: number;
requestHistory: number[]; // last 60 minutes
};
};
onExpand?: () => void;
expanded?: boolean;
}
export function AgentStatusCard({ agent, onExpand, expanded }: AgentStatusCardProps) {
// Your implementation
}
Task 3.2: Real-time Hook 🔌
Create a custom hook for real-time agent metrics:
interface UseAgentMetricsOptions {
agentId: string;
refreshInterval?: number;
}
interface UseAgentMetricsResult {
metrics: AgentMetrics | null;
isLoading: boolean;
error: Error | null;
lastUpdated: Date | null;
}
function useAgentMetrics(options: UseAgentMetricsOptions): UseAgentMetricsResult {
// Your implementation
// Should handle:
// - WebSocket subscription for real-time updates
// - Fallback to polling if WebSocket unavailable
// - Cleanup on unmount
// - Error handling and retry logic
}
Task 3.3: Data Visualization 📈
Design and implement a cost breakdown chart component:
Requirements:
- Show cost by model (GPT-4, Claude, etc.) as a donut/pie chart
- Show cost over time as a line/area chart
- Toggle between daily/weekly/monthly views
- Animate transitions between views
- Show tooltip with details on hover
Provide:
- Component interface/props
- Implementation (can use Recharts, Vega, or any library)
- Example mock data
- Responsive design considerations
Part 4: Advanced Frontend (30 points)
Task 4.1: Agent Graph Visualization 🕸️
Design how to visualize the agent graph:
Challenge: Show a dynamic graph where:
- Nodes are agents
- Edges are connections between agents
- Real-time data flows are animated
- Users can zoom, pan, and click for details
Provide:
- Library choice and justification (D3, React Flow, Cytoscape, etc.)
- Component architecture
- Performance considerations for 50+ nodes
- Interaction design (how users explore the graph)
- Code sketch for the main component
Task 4.2: Optimistic UI for Budget Controls 💰
Implement optimistic UI for budget updates:
Scenario: User changes an agent's budget limit
- Update should appear instantly
- Backend validation may reject the change
- Must handle race conditions with real-time updates
Provide:
- State management approach
- Rollback mechanism on failure
- Conflict resolution strategy
- User feedback design
function useBudgetUpdate(agentId: string) {
// Your implementation showing:
// - Optimistic update
// - Server sync
// - Rollback on error
// - Conflict handling
}
Task 4.3: Performance Optimization ⚡
The dashboard shows data for 100+ agents with real-time updates.
Design optimizations for:
- Rendering: How to prevent unnecessary re-renders?
- Data: How to handle high-frequency WebSocket updates?
- Memory: How to prevent memory leaks with subscriptions?
- Initial Load: How to prioritize visible content?
Provide specific techniques and code examples for each.
Submission Checklist
- All Part 1 exploration answers
- Part 2 wireframes and design analysis
- Part 3 component implementations
- Part 4 advanced designs
How to Submit
- Create a GitHub Gist with your answers
- Name it
aden-frontend-YOURNAME.md - Include code files as separate Gist files
- If you created working code, include a CodeSandbox/StackBlitz link
- Email to
careers@adenhq.com- Subject:
[Frontend Challenge] Your Name
- Subject:
Scoring
| Section | Points |
|---|---|
| Part 1: Exploration | 15 |
| Part 2: UI/UX | 20 |
| Part 3: Implementation | 35 |
| Part 4: Advanced | 30 |
| Total | 100 |
Passing score: 75+ points
Bonus Points (+20)
- +10: Create a working prototype in CodeSandbox
- +5: Submit a PR improving existing UI
- +5: Create a Figma design for a new feature
Resources
- React Documentation
- Tailwind CSS
- Radix UI
- Recharts
- React Flow (for graph visualization)
Good luck! We love engineers who care about user experience! 🎨✨