The dev server is running at: http://localhost:3000/
- Open browser to
http://localhost:3000/ - When browser asks for location permission, click Block or Deny
- Location picker should appear automatically
- Open browser console (F12) to see debug logs
- Type a city name in the search box (e.g., "New York", "London", "Tokyo")
- Watch console logs:
Searching for location: new york API Key available: true Response status: 200 Found locations: 5 - Select a city from the dropdown or click a popular city button
- Verify weather loads:
Location selected: {lat: 40.7128, lon: -74.0060, city: "New York", country: "US"} Fetching weather for location... Weather data received: {condition: "Clear", temperature: 15, ...} Location picker closed, weather set
✅ Location picker appears when geolocation fails ✅ Search autocomplete works ✅ Popular city buttons work ✅ Weather loads after selection ✅ Location picker closes automatically
- Open browser console (F12)
- Type:
testBrave() - Press Enter
- Watch the output:
🧪 Testing Brave Search Integration... 📍 Location: Seattle 🌤️ Weather: Rain 8°C ❓ Question: What should I eat? ⏳ Calling oracle... ✅ Response received! 📋 Type: single 🎴 Card: THE_FEAST 💬 Message: Cold bites deep. [Restaurant Name] warms the soul. 🔗 URL: https://... ✨ Brave Search integration working!
- In console, type:
testAllCategories() - This will test all 5 categories:
- Food (THE_FEAST)
- Music (THE_SOUND)
- Movies (THE_VISION)
- Drinks (THE_CHALICE)
- Places (THE_COMPASS)
- Ensure location and weather are loaded
- Type a question in the text input:
- "What should I eat?"
- "What should I listen to?"
- "What should I watch?"
- "What should I drink?"
- "Where should I go?"
- Click or shake the 8-ball
- Wait for the response
- Check if the response includes a clickable URL
✅ Brave API is called (check Network tab) ✅ Real search results returned ✅ Mystical message generated ✅ Clickable URL provided ✅ Falls back to deterministic if Brave fails
The oracle should speak with:
- ✅ Weather metaphors: "Cold bites deep", "Rain drums the roof"
- ✅ Short, poetic phrases
- ✅ Confident declarations
- ✅ Actionable guidance
- ❌ "I recommend..."
- ❌ "Based on current conditions..."
- ❌ "Maybe you should..."
- ❌ Long explanations
- ✅ "Cold bites deep. [Name] warms the soul."
- ✅ "Rain whispers secrets. [Name] harmonizes."
- ✅ "Thunder demands power. [Name] rises."
- Ask the same question twice within 5 minutes
- Check Network tab in browser DevTools
- First request: Should see Brave API call
- Second request: Should NOT see Brave API call (cached)
- Wait 5+ minutes and ask again
- Should see new Brave API call (cache expired)
✅ First request hits Brave API ✅ Subsequent requests use cache (5 min) ✅ Cache expires after 5 minutes ✅ Different weather/location bypasses cache
- Temporarily change
VITE_BRAVE_API_KEYin.envto invalid key - Restart dev server
- Ask a question
- Check console: "Brave search failed, falling back to deterministic:"
- Verify deterministic algorithm still works
✅ Graceful fallback to deterministic ✅ No app crash ✅ Still get oracle response ✅ Error logged to console only
-
Cold + Rain (< 10°C + Rain):
- Food: Should suggest hot soup, ramen
- Message: "Cold bites deep" or "Rain drums the roof"
-
Hot + Clear (> 25°C + Clear):
- Food: Should suggest fresh, light meals
- Message: "Heat demands freshness" or "Sun blazes"
-
Mild + Cloudy (15-25°C + Clouds):
- Food: Should suggest balanced options
- Message: Moderate weather references
- Use location picker to select different cities
- Different cities have different weather
- Ask same question in different locations
- Compare responses
- Check:
VITE_OPENWEATHER_API_KEYin.env - Check: Browser console for API errors
- Check: Network tab for geocoding API calls
- Verify: API key is valid at openweathermap.org
- Check:
VITE_BRAVE_API_KEYin.env - Check: Console for "Brave API error" messages
- Check: Network tab for search API calls
- Verify: API key is valid and has credits
- Check: Weather and location are loaded
- Check: Question matches category keywords
- Check: Console for any error messages
- Try: Different question phrasings
Available in browser console:
// Test Brave integration
testBrave()
// Test all categories
testAllCategories()Before marking complete, verify:
- Location picker appears when geolocation denied
- Search autocomplete works
- Popular city buttons work
- Weather loads after location selection
- Brave API returns real results
- Mystical messages follow personality guide
- URLs are clickable and valid
- Caching works (5 min TTL)
- Fallback to deterministic works
- No TypeScript errors
- No console errors (except expected fallback logs)
None currently! 🎉
After testing, you can:
- Deploy to production
- Add more search refinements
- Implement user preferences
- Add analytics tracking
- Create more card types
- Enhance mystical messages
Ready to test! Open http://localhost:3000/ and start exploring! 🎱✨