cd /news/artificial-intelligence/fetchquest-spec-driven-dog-battling-… · home topics artificial-intelligence article
[ARTICLE · art-98996] src=dev.to ↗ pub= topic=artificial-intelligence verified=true sentiment=↑ positive

FetchQuest: Spec-Driven Dog Battling on Solana Devnet

Developer Iyad AlKentar built FetchQuest, a dog-vs-raccoon battler on the Solana devnet, using spec-driven development. The app generates a dog with random stats and personality, creates an AI-drawn portrait and bio via Google AI (Gemini), mints it as an NFT using Metaplex, and narrates the battle outcome via ElevenLabs. AlKentar prioritized polish over breadth, keeping third-party API keys server-side in Next.js API routes.

read2 min views1 publishedAug 16, 2026

This is a submission for Weekend Challenge: Dog Days Edition

FetchQuest — a tiny dog-vs-raccoon battler. You generate a dog with random stats (Speed, Bark, Chomp) and a personality tag, watch it come to life with an AI-drawn portrait and a bio/taunt line, mint it as a real NFT on Solana devnet, send it into a single fight against a fixed raccoon opponent, and hear the outcome narrated out loud.

The scope was intentionally narrow: one dog, one fight, one result — no roster, no PvP, no multi-round battles. The goal wasn't to cram in as many integrations as possible, it was to make each step of that short loop feel good: satisfying reveals, real animation, sound that lands at the right moment. Polish over breadth.

[https://github.com/user-attachments/assets/21b6a8a7-e470-4e16-8623-4ead4e7a6236](https://github.com/user-attachments/assets/21b6a8a7-e470-4e16-8623-4ead4e7a6236)

[https://github.com/iyadalkentar/fetch-quest](https://github.com/iyadalkentar/fetch-quest)

I used spec-driven development for this one instead of just diving into code — before writing anything I wrote out a mission spec, a tech-stack spec, and a phased roadmap, and worked from those throughout the weekend rather than improvising as I went.

The mission spec set one non-negotiable rule: if a trade-off ever came up between "add another feature" and "make the existing steps feel better," the existing steps won. That shaped almost every decision below.

The roadmap was sequenced as vertical slices — each phase took one step of the core loop fully end-to-end (UI + API route + its own polish pass) before moving to the next, rather than building all the plumbing first and polishing at the end:

/api/generate-dog

calling Google AI (Gemini) for a portrait and a bio/taunt line based on the rolled stats and personality, with an animated reveal on the frontend.@solana/wallet-adapter-react

(Phantom/Solflare) on devnet, /api/mint

using Metaplex to mint the generated portrait plus stats/personality as on-chain metadata attributes, with pending/confirming/minted states and a link out to Solana Explorer.All third-party API keys (Google AI, ElevenLabs, the Solana minting authority) stay server-side in Next.js API routes — the client never sees them and only ever calls /api/generate-dog , /api/mint

, and /api/battle

.

── more in #artificial-intelligence 4 stories · sorted by recency
── more on @iyad alkentar 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/fetchquest-spec-driv…] indexed:0 read:2min 2026-08-16 ·