
Gemini Chatbot
https://github.com/vercel-labs/gemini-chatbot- Category
- AI Tools
- Rank
- No. 1314Tools index
Previous survey · No. 1319 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- vercel-labs
- GitHub
- 1.4k stars
- Date
About
Starter template for building a generative-UI chatbot with the Vercel AI SDK and Google Gemini.
What it does
This is a working web application for conversational and task-oriented experiences. It authenticates users, stores chat history, accepts model tool results, and demonstrates a flight workflow covering search, status, seat selection, reservation pricing, and payment state.
Why it's ranked here
The project offers more than a chat screen. It connects authentication, persistent conversations, structured model output, tool calls, object storage, and a transactional example. Its strongest value is architectural breadth, though the flight information is simulated rather than sourced from operational travel systems.
What's good
Structured schemas constrain generated flight statuses, search results, seats, and prices into predictable shapes. The interface uses accessible component primitives, supports themes, and displays notifications. Provider abstraction permits switching beyond Google models. PostgreSQL persistence covers users, chats, and reservations, while object storage is already included among dependencies.
Tradeoffs
Local setup requires credentials and a PostgreSQL connection, and the production-oriented path assumes several Vercel services. Database migrations run during every build. The included travel workflow generates sample details and prices through the model, so it cannot replace live inventory, booking, payment, or airline-status integrations.
How to use it well
Use it when building a hosted, authenticated AI web product that needs persistent conversations and structured interactive results. Replace the simulated travel tools with trusted service integrations and domain validation. Choose something smaller for a basic chat experiment, and add separate systems for real payments or operational booking data.
Technical notes+
package.json defines a private TypeScript Next.js application using pnpm, React 19, Next.js 15, AI SDK 3, Drizzle ORM, NextAuth, Tailwind CSS, Radix UI, Vercel Postgres, and Vercel Blob. ai/index.ts wraps gemini-2.5-pro and gemini-2.5-flash with customMiddleware. ai/actions.ts uses generateObject with Zod schemas for simulated travel data. db/schema.ts declares PostgreSQL User, Chat, and Reservation tables, while db/queries.ts implements password hashing and persistence operations. db/migrate.ts requires POSTGRES_URL, and package.json runs that migration before next build. middleware.ts protects chat, API, login, and registration routes through NextAuth.
Observed
- Primary language
- TypeScript with TSX for the Next.js interface
- Packaging
- Private Node.js application installed and run with pnpm
- Interface
- Browser-based Next.js web application with API routes
- Persistence
- PostgreSQL through Drizzle ORM, plus Vercel Blob dependency
- Authentication
- NextAuth with email and hashed-password user records
- Model surface
- Google Gemini Pro and Flash models wrapped through the Vercel AI SDK
Read from README.md, package.json, lib/utils.ts, middleware.ts, next-env.d.ts, next.config.mjs, drizzle.config.ts, postcss.config.mjs, tailwind.config.ts, ai/index.ts, db/schema.ts, ai/actions.ts, db/migrate.ts, db/queries.ts, app/layout.tsx.
What it can do
Generate conversational responses
User text messages → AI-generated text responses
Create dynamic user interface components
User queries or commands → Interactive UI elements
Process natural language queries
Text prompts or questions → Structured responses or actions
Stream real-time chat responses
User messages → Streaming text responses
Generate code snippets
Programming requests or descriptions → Code blocks with syntax highlighting
Render interactive chat interface
User interactions → Dynamic chat UI components
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.