A full-stack application that transforms HackerNews stories into podcast content with configurable settings.
- Framework: Axum web framework
- Functionality:
- Fetches top stories from HackerNews API
- Provides REST API endpoints for frontend
- Handles CORS for cross-origin requests
- Concurrent API calls for better performance
- Framework: React with TypeScript and Vite
- UI: Shadcn/ui components with Tailwind CSS
- Features:
- Browse top HackerNews stories
- Configure podcast settings (voice, length, mode)
- Responsive design with dark/light theme
GET /health- Health checkGET /api/stories- Get top 50 stories from HackerNewsGET /api/stories/:id- Get specific story by ID
- Main application accessible via web browser
cd backend
cargo runThe backend will start on http://localhost:3001
cd frontend
npm install
npm run devThe frontend will start on http://localhost:5173
axum- Web frameworktokio- Async runtimereqwest- HTTP client for HackerNews APIserde- JSON serializationtower-http- CORS middlewarefutures- Concurrent request handling
react&react-dom- Core Reactreact-router-dom- Routingtailwindcss- Stylinglucide-react- Icons@radix-ui- UI primitives- Various shadcn/ui components
- Story Browsing: View top HackerNews stories with pagination
- Story Details: View individual story information
- Podcast Configuration:
- Voice selection (Male/Female/AI Persona)
- Length settings (Short/Medium/Long)
- Mode selection (Summarized/All Comments)
- Modern UI: Dark/light theme toggle, responsive design
- Performance: Backend handles API aggregation and caching
- Frontend requests stories from backend
- Backend fetches from HackerNews API concurrently
- Backend filters and returns processed story data
- Frontend displays stories with pagination and interactive elements
- User can configure podcast settings for any story
- Implement actual podcast generation
- Add audio playback functionality
- Implement caching layer for better performance
- Add user preferences and history