💡 Inspiration
My girlfriend always wants to go out and travel — but every time, we hit the same wall: "Where should we even go? And once we pick somewhere, what do we actually do there?" Planning a trip meant juggling a dozen browser tabs — one for attractions, one for restaurants, one for the weather, another for the budget — and we'd usually give up before anything was decided.
I wanted a single place where you just type in a destination and instantly get a polished, magazine-quality travel guide you could actually print and carry. Something that turns "I don't know, somewhere nice?" into a real plan in seconds. So I built Atlas & Ember.
✨ What it does
You enter a destination, dates, travel style, budget, and who's traveling. In seconds, Atlas & Ember generates a complete, editorial-style travel guide that includes:
- Day-by-day itinerary — morning, afternoon, and evening plans with specific places, timing, and local tips
- Restaurant picks — breakfast, lunch, and dinner with must-order dishes
- Accommodation options across budget, mid-range, and luxury tiers
- Transportation guide — getting there plus local transit costs
- Budget breakdown — estimated cost per person by category
- Live weather forecast for your travel dates (via Open-Meteo)
- Practical tips on visas, seasonality, and safety
You can save guides to history, watch them stream in live as they generate, and download the whole thing as a PDF.
🛠️ How I built it
- Next.js 15 (App Router) + TypeScript for the frontend and API routes
- Tailwind CSS for the warm, editorial "magazine" design
- Claude (Anthropic API) as the engine that researches and writes each guide, streamed to the UI in real time
- Open-Meteo API for free, key-less weather forecasts
- localStorage for the guide history feature
- jsPDF for one-click PDF export
- Deployed on Vercel, with Novus.ai installed to track how real users interact with the product
📚 What I learned
This was my first time shipping a real, deployed product end-to-end. I learned how to:
- Work with a streaming LLM API and parse server-sent events on the fly
- Sanitize and validate AI-generated JSON so the UI never breaks
- Debug a full deployment pipeline — environment variables, model versioning, and build errors
- Think about "shippedness": it's not done until a stranger can open the URL and get value
🧗 Challenges I faced
- AI returning unexpected JSON shapes — some fields came back as nested objects instead of strings, crashing the React render. I added a sanitizer layer to coerce everything safely.
- Streaming the response — switching from a single blocking request to a live stream meant rebuilding both the API route and the client reader.
- Deployment headaches — wrong model IDs, missing API keys, and a free-tier Vercel quirk that blocked git-triggered deploys. I learned to read build logs carefully and deploy through the dashboard instead.
🚀 What's next
Trip-specific packing lists, an interactive map view of each day's route, currency conversion, and shareable guide links.
Built With
- anthropic
- claude
- jspdf
- next.js
- node.js
- novus.ai
- open-meteo
- react
- tailwind
- typescript
- vercel


Log in or sign up for Devpost to join the conversation.