finds.dev← search

// the find

vercel-labs/gemini-chatbot

★ 1,353 · TypeScript · NOASSERTION · updated May 2026

Build your own generative UI chatbot using the Vercel AI SDK and Google Gemini

A Next.js App Router chat app built on the Vercel AI SDK, defaulting to Google Gemini but switchable to OpenAI, Anthropic and others. It bundles NextAuth login, chat history in Postgres, file uploads to Blob and a few generative UI demos. It is a starting point for building your own chat product, not a library to import.

- The chat route in app/(chat)/api/chat/route.ts and the ai/ folder keep model wiring, middleware and actions in a few files, so the whole request path fits in one reading session.

- Tool results render as React components (components/flights/ covers seat selection, boarding passes and flight status), a concrete example of generative UI rather than markdown-only output.

- The data layer is a Drizzle schema, a single initial migration and a plain query module in db/queries.ts, which is easy to follow and to replace.

- Auth, history and file upload are wired together, so the template covers the parts most chat prototypes skip.

- The README still names gemini-1.5-pro as the default model. Check the model ID in the code against what Google currently serves before assuming it is up to date.

- The flight booking flow (reservation, seat selection, payment authorization) is demo code. You will have to strip it out, and it is a poor template to copy for real payments.

- The README ties persistence to Vercel Postgres and Vercel Blob. Running it elsewhere means swapping the Drizzle driver and the upload storage, and nothing in the README covers that.

- There is only one migration and the project reads more like a demo than a maintained product, so schema evolution, auth hardening and error handling are yours to own.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →