This is a Next.js project bootstrapped with create-next-app. It is a function AI assistant with a barebones UI. Please read the TO-DO list below to review limitations!
Visit: https://ama-app-nu.vercel.app/
To run locally the development server, you must provide your own OpenAI API key in a .env file. Add your key to .env as OPENAI_API_KEY="..."
npm run devOpen http://localhost:3000 with your browser to see the result.
-
Frameworks
- Next.js v16 + App Router
- React v19
-
AI
- Vercel AI SDK - Extensive toolkit for supporting various AI SDK Providers.
- OpenAI - Provider, language model support for OpenAI API's (completion, responses, chat, embeddings).
- Model is set in the chat API route (api/chat/route.js).
-
Styling
- Tailwind CSS v4
- next/font to automatically optimize and load Jost
-
Database/object storage
- Vercel Postgres - for storing chat metadata
- Neon + pgvector - for Vector embedding storage/persistence.
- General chatbot functionality implemented.
- General UX/styling implemented.
- Simple tool calls enabled - a simple, first-round implementation for simple tool calling is enabled, not too useful at the moment (fetches weather data, performs math conversions and formats output).
- Enabled multi-step tool calls.
- Set up Postgres database, Neon + pgvector extensions, set up a Vercel Blob store for raw object storage, installed necessary packages.
1: User file management - uploading:
- pipeline trigger: user uploads a file -> client-side data validation -> server-side data validation -> metadata generation -> db lookup -> db transaction -> blob storage -> response generation -> response processing -> app state update.
2: New file data ingestion:
- pipeline trigger: user selects file, taps button to trigger ingestion
-> db/blob store validation (db metadata entry lookup + blob store lookup )
-> blob store fetch -> file processing (server-side data validation -> nlp -> tool calls (not in 1st proto) -> chunking -> embedding generation -> metadata generation -> db transation -> response generation -> response processing -> app state update.