DEV Community

Sarvesh
Sarvesh

Posted on

I Built a Pokédex for My Neighbourhood - Because “Go Outside” Needed Better Instructions

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

Login page

What I Built

“Okay, I should go outside.”

Then comes the surprisingly difficult follow-up:

And do what?

Sometimes the problem isn’t that going outside sounds bad. It’s that staying home already has a plan. Open an app. Scroll. Watch something. Somehow, an hour disappears.

Outside has possibilities, but no obvious starting point.

I wanted to make that starting point a little more interesting.

So I built NeighbourDex, a web app that turns a neighbourhood into a small, collectible adventure. Think Pokédex, except your next discovery might be a snack, a park, a landmark, or an interesting texture on a wall.

The collection fills up with photographs you take while exploring.

A smaller adventure felt like a better adventure

My first idea was to generate a guide for an entire city.

But “explore Tokyo” is a big assignment. “Find something interesting around Shibuya” feels like something you could actually do this afternoon.

That became the scope: pick a neighbourhood, get a manageable collection, and choose one thing to try.

After creating an account, you can add multiple neighbourhood adventures. Enter the locality and city, confirm the suggested starting point, and choose a three- or five-kilometre search radius.

A standard collection contains 10–12 cards, covering food, landmarks, nature, and two discovery prompts. If the area has fewer suitable results, you can explicitly allow a smaller guide.

No imaginary park gets added just to make the numbers look good.

neighbourhood panel showing locality confirmation, radius, and compact-guide option

Your neighbourhood gets side quests

Each card gives you a small mission, an estimated duration, and instructions about what to photograph.

You might photograph food or a drink at a nearby spot, look for greenery in a park, or capture a recognizable feature of a landmark. The discovery cards ask you to notice things such as surface textures and the sky.

Those last two matter to me. Exploring shouldn’t always require buying something or finding a famous attraction. Sometimes a worthwhile discovery is already on the street you walk down every day.

You can filter the cards by category or collection status, switch to a map, open a numbered pin, check a place’s source, and get directions.

Pick a quest. Put the screen away. Give the neighbourhood a chance.

card grid with different categories

Map view

The reward is a memory you made

When you take or upload a photo, Gemma reviews the visible evidence against the card’s requirements.

A matching photo unlocks the card and becomes its artwork. You can add a short memory note, and your progress earns explorer stamps.

An uncertain or unrelated photo leaves the card undiscovered, with feedback so you can try again.

There’s an important boundary here: a photograph can show food, greenery, or a recognizable landmark. It cannot reliably prove where you were or when you visited. NeighbourDex treats this as a playful collection, rather than a location-verification system.
Once you have collected a few cards, you can create a postcard: choose up to four photographs, optionally include your username, preview it, and download the image.Nothing gets posted automatically. You decide which memories leave the app.

collected card with its photograph

Demo

youtube demo video

The demo follows the complete journey:

Create an account → add a neighbourhood → generate a guide → explore a card → submit a photo → collect it → make a postcard.

The current version runs locally, with Ollama running on the same computer.

Code

github

The project includes an MIT license and setup instructions in the README.

To run it locally, you need Node.js 24 or later, a SerpApi key, and Ollama with gemma3:4b installed.

npm install
ollama pull gemma3:4b
npm run dev
Enter fullscreen mode Exit fullscreen mode

Configure the SerpApi key in the server’s .env file, keep Ollama running, and open http://localhost:3000.

How I Built It

I used a small stack: HTML, CSS, JavaScript, Node.js, SQLite, SerpApi, and Gemma 3 4B through Ollama. Leaflet provides the map interface, and Sharp processes uploaded images.

The interface has a field-guide feel: numbered entries, soft colours, category badges, and photographs that gradually replace the empty card artwork.

I wanted opening the app to feel like unfolding a little adventure booklet.

The architecture

There are two main paths through the app:

Create an adventure
Browser → Node.js → SerpApi place searches
                  → Filter nearby places
                  → Local Gemma writes titles
                  → SQLite saves the collection

Collect a card
Photo → Node.js → Normalize image
               → Local Gemma observes and compares
               → Save review and collection progress
Enter fullscreen mode Exit fullscreen mode

SerpApi supplies the place data. Its Google Maps results help resolve the neighbourhood and find nearby food spots, landmarks, and nature locations. The server removes duplicates, excludes places outside the chosen radius, and retains source links and coordinates.

Gemma supplies the language and visual review. During generation, it writes playful titles for the sourced entries. During photo review, it first describes the image without seeing the quest, then compares those observations with the required evidence.

The application code sets the rules. Place identities, missions, evidence requirements, and collection updates are controlled and validated by the server.

SQLite stores accounts, sessions, collections, notes, reviews, caches, and queued jobs. Photos stay in private server storage and are available only to their owning account.

Why Does Open Innovation Matter?

For NeighbourDex, running an open-weight model locally changed what I could experiment with.

I could adjust prompts, test bad outputs, and refine the photo-review flow without paying for every model request. Uploaded photos go to my configured local Ollama instance rather than a hosted AI service. It also leaves room to change the model. The app defaults to gemma3:4b, but the inference configuration can point to another compatible model as the hardware or project evolves.This doesn’t make the whole application offline. SerpApi searches and map tiles still need internet access. The local model specifically gives me control over the inference step.

My Building Session

I built and refined NeighbourDex with help from AI Tools, working through the account system, place-search pipeline, local inference, photo reviews, and interface improvements.

Prize Categories

I’m entering these categories from the challenge’s category list:

  • Best Use of Gemma: Local Gemma 3 4B powers quest-title generation and photo-evidence review.
  • Best Use of SerpApi: Google Maps searches ground the adventures in nearby places, with coordinates and source links.

I started with a simple frustration: wanting to go outside, but having no particular reason to leave.

NeighbourDex gives that moment a small next step.

A place to try. Something to notice. A photograph to keep.

And, hopefully, an afternoon that doesn’t disappear into the scroll. Cheers!

Top comments (2)

Collapse
 
rajbeer_ranjan_af9d88a1ce profile image
Rajbeer Ranjan •

Love the enthusiasm, integrated the two coolest things coding and pokemon to create an exciting form of the nostalgic pokedex. Keep going!

Collapse
 
sarvesh_3bcf0f427a27e1849 profile image
Sarvesh •

Thanks man! appreciate it