This is an experimental/test project — built to explore TanStack Start on Cloudflare Workers with AI-powered chat. Not intended for production use.
An AI chat assistant for EthCC conference attendees. Ask questions about talks, speakers, and schedules, and get personalized recommendations — all through a conversational interface powered by Cloudflare Workers AI.
- Conference talk search — search ~400 EthCC talks by keyword, speaker, track, or topic with weighted scoring
- AI chat interface — conversational assistant that can answer questions about the conference schedule, suggest talks, and generate
.icscalendar files - Twitter-based recommendations — share your Twitter/X handle and get talk recommendations based on your interests (scraped via Apify, summarized by AI)
- Real-time WebSocket chat — powered by Cloudflare Durable Objects (
ChatAgent) for persistent, stateful conversations
- TanStack Start — full-stack React framework with file-based routing
- Cloudflare Workers — edge runtime
- Cloudflare Workers AI — LLM inference (
glm-4.7-flashfor chat,llama-3.3-70bfor analysis) - Durable Objects — stateful WebSocket chat agent
- Workflows — async Twitter profile analysis
- KV — caching EthCC API responses
- Tailwind CSS v4 + shadcn/ui — styling and components
- Node.js 18+
- pnpm
- A Cloudflare account (for Workers AI, KV, Durable Objects)
pnpm install
pnpm devThe app runs on http://localhost:3000.
pnpm deployThis builds the app and deploys it to Cloudflare Workers via Wrangler.
src/
├── routes/ # TanStack file-based routes
│ ├── index.tsx # Landing page
│ └── chat.tsx # Chat interface
├── server/
│ ├── agent.ts # ChatAgent Durable Object (WebSocket AI chat)
│ ├── ethcc-api.ts # EthCC tRPC API client + search logic
│ ├── twitter-workflow.ts # Twitter analysis workflow
│ └── twitter-scraper.ts # Apify tweet scraper
├── components/ # React UI components
└── lib/ # Shared utilities
MIT