This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
🌿 WanderInk: Turn Your Walks into Stories with Open-Source AI
Every walk becomes a story.
We often go outside to clear our minds, explore new places, or take a break from our screens. Along the way, we notice little things—a path surrounded by trees, sunlight falling through the leaves, an interesting flower, or the quiet atmosphere of a place we have never visited before.
We take a few photographs, continue walking, and eventually forget the small details that made the experience special.
What if those photographs could become something more than memories in your gallery?
That idea inspired me to build WanderInk, an AI-powered outdoor exploration journal that transforms a handful of photographs into a personalized adventure story.
Instead of spending your time looking at a screen, WanderInk encourages you to step outside, observe the world around you, capture a few meaningful moments, and let AI help you turn them into a story worth revisiting.
🌱 What I Built
WanderInk is a web application designed to make outdoor exploration more memorable through AI-generated storytelling.
The experience is intentionally simple:
- Go outside. Take a walk, explore a park, visit a new place, or simply pay attention to your surroundings.
- Capture the little things. Photograph landscapes, plants, interesting textures, lighting, scenery, or anything that catches your attention.
- Upload 3–5 photographs. Choose a small collection of moments from your exploration.
- Let AI connect the moments. WanderInk analyzes the photographs and transforms them into a personalized, first-person adventure journal.
- Save or share your journey. Keep your adventure private or publish it to the community gallery.
The result is more than a collection of captions. WanderInk generates a complete journal entry with a title, summary, narrative, highlights, and a mood score.
The goal isn't to document every step of a walk. It's to preserve the feeling of the experience.
✨ What makes WanderInk different?
AI-powered visual storytelling
WanderInk uses a multi-stage AI pipeline to understand the photographs before writing the story. Rather than treating each image as an isolated caption, it combines visual observations into a more coherent narrative.
Personalized adventure journals
The generated narrative is written from a first-person perspective, helping the experience feel like a personal reflection rather than a generic description of photographs.
Real-time generation progress
Story generation can take a little time, so WanderInk streams progress updates to the interface using Server-Sent Events (SSE). Users can follow the generation process instead of waiting without feedback.
A private space for your memories
Journeys are private by default, with the option to publish them to a community gallery. You can use WanderInk as a personal journal without making every adventure public.
Designed around being outdoors
WanderInk isn't intended to keep you scrolling while you're exploring. The idea is to capture a few meaningful moments, put your phone away, and return to your surroundings.
The technology supports the experience; it shouldn't replace it.
🚀 Demo
Try WanderInk here:
Live application: https://wander-ink.vercel.app
You can explore the application and experience the idea behind turning ordinary outdoor moments into AI-assisted journal entries.
For the most meaningful test, take a short walk, capture a few photographs, and use them to create your own adventure.
💻 Code
🌿 WanderInk
Every walk becomes a story.
An AI-powered outdoor exploration journal that transforms 3–5 photographs into evocative, personalized adventure narratives.
📑 Table of Contents
- Overview
- System Architecture
- Core Features
- Technology Stack
- Project Structure
- Environment Variables
- Getting Started
- API Reference
- Deployment
- Available Scripts
- License
🧭 Overview
WanderInk bridges the gap between outdoor exploration and personal journaling. Rather than letting snapshots sit buried in a camera roll, WanderInk invites users to take a walk, capture 3–5 mindful photos of their surroundings (landscapes, flora, textures, architectural curiosities), and submit them to a dual-model AI narrative pipeline.
The WanderInk Pipeline
- Client-Side Compression: Photos are optimized and compressed in the browser to reduce latency and bandwidth.
- Direct S3/R2 Ingestion: Uploads bypass the application server via presigned URLs…
WanderInk is an open-source project released under the MIT License.
Feel free to explore the implementation, learn from the architecture, report issues, and contribute ideas that could make the experience better.
🛠️ How I Built It
I wanted WanderInk to do more than connect an image upload form to a text-generation API. The core challenge was designing a workflow that could understand several photographs, identify relationships between them, and use those observations to generate a meaningful narrative.
Here's how the application is put together.
1. The technology stack
The project uses a modern TypeScript-based web stack:
- Next.js 16 and React 19 for the application and user interface.
- TypeScript 6 for type safety across the codebase.
- Tailwind CSS 4 for styling.
- MongoDB Atlas and Mongoose for persistent application data.
- Better Auth for authentication.
- Cloudflare R2 for photo storage.
- TanStack React Query v5 for client-side server-state management.
- Zod for schema validation.
- browser-image-compression for reducing image sizes in the browser.
- An OpenAI-compatible OmniRoute gateway for connecting to the AI models.
Each part serves a specific purpose, from managing user accounts and storing adventures to handling photos and generating stories.
2. A two-stage AI storytelling pipeline
This is the heart of WanderInk.
Generating a good story from several photographs requires more than asking a language model to describe what it sees. The system separates visual understanding from narrative generation.
Stage 1: Understand the photographs
A vision model analyzes the uploaded images and extracts useful observations, including:
- Visible scenery and surroundings.
- Important objects and visual focal points.
- Lighting and atmosphere.
- The mood suggested by the photographs.
- Potential connections or narrative threads between the images.
These observations create a structured understanding of the visual material.
Stage 2: Turn those observations into a story
The structured visual synthesis is then passed to a companion language model. Using that information, the model generates the journal entry, including:
- A suitable title.
- A concise summary.
- A full first-person narrative.
- Highlights from the adventure.
- A mood score.
Separating these stages gives the storytelling model more useful context than a collection of unrelated image descriptions. It also makes the workflow easier to understand and allows the vision and story models to be configured independently.
The model IDs are configurable through environment variables, so the two stages don't have to be permanently tied to one particular model.
3. Real-time generation with Server-Sent Events
AI generation isn't always instantaneous. Rather than making the user wait for one large response, WanderInk uses Server-Sent Events (SSE) to stream generation progress to the client.
This helps the interface communicate what's happening while the story is being created and makes the process feel more responsive.
4. Efficient photo uploads and storage
Photographs can be large, especially when captured using modern smartphone cameras. Uploading original files unnecessarily can make the experience slower and consume more bandwidth.
WanderInk addresses this with a few practical choices:
- Images are compressed on the client side before upload.
- Presigned URLs allow the browser to upload images directly to Cloudflare R2.
- Private image assets can be accessed through signed GET URLs.
This keeps the application's storage workflow separate from the main application server and helps manage uploaded media more efficiently.
5. Authentication, persistence, and sharing
WanderInk uses Better Auth for authentication and MongoDB Atlas with Mongoose for application data.
This provides the foundation for associating adventures with users, retaining generated journal entries, and supporting the distinction between private journeys and those published to the community gallery.
Privacy is part of the product's default experience: adventures are private unless the user chooses to share them.
6. Keeping the AI layer flexible
The AI integration uses a self-hosted OmniRoute gateway that supports OpenAI-compatible model interfaces.
The vision and story models are configured separately through environment variables:
-
VISION_MODELcontrols the model used for visual analysis. -
STORY_MODELcontrols the model used for narrative generation.
This separation makes experimentation easier. Different models can be evaluated for their visual understanding, narrative quality, latency, and suitability for the task without redesigning the entire application.
The exact models used in a deployment depend on its configuration.
🤖 Why Does Open Innovation Matter?
For me, open innovation is important because AI-powered products shouldn't have to remain tied to a single model provider or a closed implementation.
WanderInk is built around a workflow that can experiment with different models for different jobs. Visual analysis and creative writing have different requirements, and a model that performs well at one task might not be the best choice for the other.
An open and flexible AI ecosystem makes it easier to:
Experiment beyond a single provider
Developers can evaluate different compatible models and choose based on the needs of the application rather than designing everything around one fixed option.
Build specialized AI workflows
WanderInk demonstrates how multiple AI stages can work together. A vision model extracts useful observations, while a language model turns those observations into a personal narrative.
Understand and improve the implementation
An open-source codebase allows other developers to inspect the architecture, suggest improvements, identify issues, and build on the existing work.
Make room for community-driven ideas
Someone might have an idea for a different storytelling style, a better way to connect photographs, or a new way to organize outdoor journals. An accessible codebase makes those ideas easier to explore collaboratively.
Open innovation isn't just about having more model choices. It's also about giving developers and communities the freedom to experiment, learn, and improve the tools they use.
Of course, model flexibility doesn't automatically guarantee lower costs, complete privacy, or offline operation. Those depend on the actual model deployment, infrastructure, and application design. The benefit is having more room to make those decisions deliberately.
🌍 The Bigger Idea: Technology That Encourages You to Disconnect
One thing I find interesting about AI is that we often use it to spend more time on our devices—to generate more content, consume more information, and automate more digital tasks.
But AI can also support experiences that happen away from a screen.
WanderInk explores that second possibility.
The application gives you a reason to notice your surroundings, take a few photographs, and preserve the experience in a creative way. Once the photographs are captured, you can put your phone away and enjoy the walk. The storytelling happens afterward.
A quiet walk doesn't need to become a productivity task. A photograph doesn't need to become a social media post. And an outdoor experience doesn't need to be measured by how much content it produces.
Sometimes, a few small details are enough to bring a memory back to life.
That's the feeling I want WanderInk to preserve.
💚 What's Next?
There is plenty of room to evolve WanderInk as I continue exploring the intersection of AI, storytelling, and outdoor wellness.
Some areas worth exploring include:
- More narrative styles and storytelling preferences.
- Better ways to connect visual details across photographs.
- Additional AI models for experimentation.
- Improvements to the journal creation experience.
- New ways for people to discover and share outdoor adventures.
These are directions to explore rather than features I'm claiming are already implemented.
I'd love to hear what other developers think about this idea. How would you use AI to make everyday experiences more meaningful? What would make a tool like WanderInk more useful without making people spend more time looking at their phones?
🌿 Give WanderInk a Try
Live demo: https://wander-ink.vercel.app
Open-source repository: https://github.com/CodesWithSubham/wanderink
If you try it, consider using photographs from a real walk and sharing what kind of story the experience creates for you.
I'd especially love feedback on the storytelling quality, the experience of creating a journal, and ideas for making the project better.
The best part of WanderInk isn't the AI model or the technology stack. It's the idea behind them:
Your next great story might begin when you put your phone away and take a walk. 🌱
Top comments (0)