An immersive, AI-powered journey through wisdom and inspiration
QuoteJourney transforms quote browsing into an infinite, AI-powered exploration. Click any quote to discover 3 semantically related quotes, creating a personalized journey through wisdom. Built for the TanStack Start + Convex Hackathon.
🚀 Live Demo: wolf.topangasoft.workers.dev
- 🤖 AI-Powered Discovery - Semantic search finds quotes by meaning using Cloudflare AI
- ✨ Beautiful Animations - Smooth, GPU-accelerated micro-interactions
- 🎯 Infinite Journeys - Explore endlessly with AI recommendations
- 💡 Smart Insights - Llama 3 generates personalized wisdom
- 🌓 Dark Mode - Fully supported throughout
- 📱 Responsive - Perfect on any device
- Browse - See curated quotes with animated cards
- Click - Start your journey with any quote
- Discover - AI finds 3 related quotes by meaning
- Continue - Keep exploring infinitely
- Enjoy - AI insights and smooth animations throughout
This project uses all the required hackathon technologies:
- TanStack Start - React SSR framework with file-based routing
- Convex - Real-time serverless database and backend
- Cloudflare Workers + AI - Deployment platform and AI features
- Firecrawl - Quote scraping from web sources
- Tailwind CSS 4 - Modern styling with animations
- Sentry - Error tracking (planned for future)
- Beautiful landing page with animated quote grid
- Browse quotes by category
- Journey flow: click a quote → see 3 related options → repeat
- Real-time view and like tracking
- Fully responsive design
- Dark mode support
- AI-powered semantic search - Find quotes by meaning, not just keywords
- Cloudflare AI embeddings - Vector embeddings using @cf/baai/bge-base-en-v1.5
- AI-generated insights - Personalized wisdom using Llama 3
- Smart recommendations - Cosine similarity matching for related quotes
- Favorites system - Save and organize favorite quotes
- Fallback support - Gracefully degrades to category-based search
- Advanced animations - Smooth fade-ins, scales, and staggered reveals
- Loading states - Beautiful skeleton screens prevent layout shift
- Error boundaries - Graceful error handling throughout the app
- Micro-interactions - Hover effects, button states, animated indicators
- Performance optimized - All animations use GPU-accelerated transforms
- Toast notifications - Reusable toast system for user feedback
- Professional polish - Attention to detail in every interaction
- Production Deployment - Live on Cloudflare Workers
- Comprehensive Documentation - Deployment guides, API docs, contributing guide
- Hackathon Submission - Complete submission package
- Error Boundaries - Robust error handling throughout
Already deployed! Just visit: wolf.topangasoft.workers.dev
No setup required - experience the full app immediately!
- Node.js 18+
- npm or pnpm
- Convex account (free at https://convex.dev)
- Cloudflare account (free tier - for AI features)
- Clone and install:
git clone <repository-url>
cd wolf
npm install- Install dependencies:
npm install- Set up Convex:
npx convex devThis will:
- Prompt you to log in or create a Convex account
- Create a new Convex project
- Deploy your schema and functions
- Seed the database with quotes:
Open the Convex dashboard (https://dashboard.convex.dev), go to Functions, and run:
scraping.seedDatabase()This will add 50+ inspiring quotes across different categories.
- Start the development server:
npm run devRequired for Phase 2 AI Features:
# In Convex dashboard or via CLI
npx convex env set CLOUDFLARE_ACCOUNT_ID your_account_id
npx convex env set CLOUDFLARE_API_TOKEN your_api_tokenGet your Cloudflare credentials at https://dash.cloudflare.com
Optional for scraping additional quotes:
npx convex env set FIRECRAWL_API_KEY your_api_key_hereGet your Firecrawl API key at https://firecrawl.dev
- Production builds read from
.env.production, which now pinsVITE_CONVEX_URL=https://keen-bullfrog-361.convex.cloud(the seeded prod deployment). - For local tweaks, copy
.env.productionto.env.development.localor.env.localand changeVITE_CONVEX_URLto a different Convex deployment. - Keep
CONVEX_DEPLOYMENTinside your local-only env file sonpx convex devstill points at your preferred dev deployment while the UI hits prod data by default.
See docs/SETUP.md for detailed setup instructions.
wolf/
├── convex/ # Convex backend
│ ├── schema.ts # Database schema
│ ├── quotes.ts # Quote queries/mutations
│ ├── journeys.ts # Journey tracking
│ ├── favorites.ts # Favorites & user profiles
│ ├── ai.ts # Cloudflare AI integration
│ └── scraping.ts # Web scraping with Firecrawl
├── src/
│ ├── routes/ # TanStack Start routes
│ │ ├── index.tsx # Landing page
│ │ └── journey/
│ │ └── $quoteId.tsx # Journey detail with AI
│ └── styles/
│ └── app.css # Tailwind styles
├── docs/ # Documentation
│ ├── DATA_MODEL.md # Database schema docs
│ ├── API.md # API reference
│ └── SETUP.md # Setup guide
└── PLAN.md # Master plan & roadmap
- text, author, source, category
- tags[], views, likes
- embedding[] - Vector embeddings for semantic search
- aiInsight - AI-generated insights
- Indexed by category and author
- userId, quotes[], timestamps
- Tracks user journey sessions
- userId, favoriteQuotes[], preferences
- Personalization data
See docs/DATA_MODEL.md for full schema details.
quotes.list- List quotes with filteringquotes.getById- Get single quotequotes.getRandomThree- Get 3 related quotesjourneys.getCurrent- Get active journeyfavorites.isFavorited- Check if quote is favoritedfavorites.getFavorites- Get user's favorite quotes
quotes.create- Add new quotequotes.updateAIData- Update embeddings and insightsquotes.incrementViews- Track viewsquotes.toggleLike- Like/unlike quotejourneys.create- Start new journeyfavorites.toggleFavorite- Add/remove from favorites
ai.generateQuoteEmbedding- Generate embedding for one quoteai.generateAllEmbeddings- Process all quotes with AIai.findSimilarQuotes- Semantic similarity searchai.getPersonalizedRecommendations- User-based recommendationsscraping.seedDatabase- Seed with curated quotesscraping.scrapeQuotes- Scrape from URL with Firecrawl
See docs/API.md for full API reference.
npm run dev:convexnpm run dev:webnpm run devnpm run formatnpm run lintThis project is deployed to Cloudflare Workers.
npm run build
# Deploy to Cloudflare Workers- HACKATHON.md - Complete hackathon submission details
- docs/DEPLOYMENT.md - Cloudflare Workers deployment guide
- docs/SETUP.md - Environment setup and configuration
- docs/DATA_MODEL.md - Database schema documentation
- docs/API.md - Convex API reference
- CONTRIBUTING.md - Contribution guidelines
- PLAN.md - Development roadmap and phases
Contributions are welcome! See CONTRIBUTING.md for guidelines.
This project was built for the TanStack Start + Convex Hackathon (Nov 2024).
MIT
Built for the TanStack Start + Convex Hackathon. Thanks to:
- TanStack team for the amazing Start framework
- Convex team for the real-time database
- Cloudflare for Workers and AI
- Firecrawl for web scraping capabilities
Status: ✅ Complete & Production Ready
All 4 development phases complete:
- ✅ Phase 1: Core Setup
- ✅ Phase 2: AI Integration
- ✅ Phase 3: Polish & Animations
- ✅ Phase 4: Deployment & Documentation
Live Demo: wolf.topangasoft.workers.dev
See HACKATHON.md for complete submission details including:
- Technical implementation
- Innovation highlights
- Feature showcase
- Architecture overview
- Code quality metrics
Not just a checkbox - AI genuinely improves the experience with semantic search that understands meaning, not just keywords.
Every interaction is smooth, every animation is GPU-accelerated, every edge case is handled gracefully.
Error boundaries, loading states, fallbacks - the app never breaks, always provides a great experience.
Deployed, tested, documented, and ready to scale. Not just a demo - a real app.