-
-
Start your Journalin journey here.
-
You can choose to avoid low‑rated restaurants or places with long wait times, and you can also customize your trip needs.
-
You’ll receive a beautifully crafted journal‑style itinerary along with a pinpoint map.
-
Get a few helpful tips for your travel survival kit.
-
Journalin will remind you of local customs, important do’s and don’ts, and provide an estimated budget.
-
If you’re not satisfied with the generated itinerary, you can adjust it using the itinerary‑editing feature.
Journalin: Flexible Travel Planning, Reinvented
💡 What inspire us?
When people prepare for a trip, they often face the same dilemma: spending hours researching every detail feels exhausting, but traveling without a plan feels equally stressful. And most existing travel-planning tools are too generic to truly understand the unique needs of different travelers.
So we asked ourselves:
What if planning a trip could feel effortless?
What if an AI could understand your preferences deeply—and help you adjust your itinerary on the fly when unexpected situations happen?
That’s why we built Journalin.
Journalin pays attention to every detail that makes your trip yours: whether you hate waking up early, love slow citywalks, prefer local food spots, or have special requests you want to express in your own words—Journalin gets it, and it adapts.
And if you suddenly can’t make it to a stop or want to reorder your day, you don’t have to worry. Journalin automatically evaluates the impact for you: maybe your change saves you 30 minutes of commuting, but it might also mean missing the best spot to watch the sunset.
Journalin isn’t just an itinerary generator—it’s a thoughtful travel companion that understands your choices and helps you make the most of every moment.
🛠️ How We Built It
The project is built on a modern, "all-in" serverless stack for maximum speed and scalability:
- Frontend: A responsive web UI built to handle real-time AI interactions and dynamic map rendering via the Google Maps API.
- Intelligence: Powered by Gemini 1.5 Flash, handling both initial generation and subsequent intelligent edits.
- Backend: Hosted on Cloudflare Workers using the Hono framework and chanfana (OpenAPI) for a type-safe, auto-documented API.
- Database: Utilized Cloudflare D1 (SQLite) to store itinerary snapshots and version history.
📈 The "Time Machine" Logic
To manage the versioning, we implemented a snapshot system. Each time a user modifies their trip, we store a new record in D1. The versioning logic can be represented as:
$$V_{next} = V_{current} + \Delta_{changes}$$
By querying the database for a specific itineraryId, we can fetch the history:
$$History = {V_1, V_2, \dots, V_n}$$
This allows users to "Restore" any previous state $V_i$ instantly.
🧠 What We Learned
- Serverless is Powerful: Deploying a full-stack app with a database in seconds using Cloudflare's ecosystem is a game-changer.
- Schema Evolution: We learned how to handle D1 migrations and the importance of
--remoteexecution in non-interactive CI/CD environments. - UI/UX for AI: Making an AI tool feel "reliable" requires structured history and visual feedback (like real-road maps).
🚧 Challenges Faced
- The "Connection Reset" Battle: Faced significant network hurdles while pushing code to GitHub, which taught me to master Git proxy configurations.
- CORS & Preflights: Connecting a local frontend to a remote Cloudflare Worker required careful configuration of CORS middleware.
- Non-Interactive Migrations: Solving the
wrangler d1 migrationserror during automated builds was a deep dive into CI/CD pipeline troubleshooting.
Built With
- cloudflare-d1
- cloudflare-workers
- css3
- fast
- gemini-api
- github
- google-ai-studio
- google-maps
- google-places
- hono
- html5
- javascript
- low-latency-api.-hono:-a-small
- openapi
- typescript
- wrangler



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