Chat with PDF is a TypeScript-based project that allows users to interact with PDF documents through a chat interface. This project leverages Node.js and various npm packages to provide a seamless experience for parsing and querying PDF content.
chat-with-pdfs.mp4
After installing the dependencies and building the project, you can start the application with:
npm start- PDF Upload and Processing 📤: Upload PDF documents and parse them for content extraction
- Interactive Chat Interface 💭: Engage in conversations about the uploaded PDF content
- AI-Powered Document Analysis 🤖: Leverage LangChain and AI models to understand and answer questions about PDF documents
- Vector Database Integration 🗄️: Use Pinecone for efficient document similarity search and retrieval
- User Authentication 🔐: Secure user authentication and session management with Clerk
- Payment Integration 💳: Stripe integration for premium features and subscriptions
- Real-time Chat ⚡: Live chat functionality with markdown support for rich text formatting
- File Management 📁: Drag-and-drop file upload with Firebase storage integration
- Responsive Design 📱: Modern, mobile-friendly UI built with Tailwind CSS and Radix UI components
- Document Preview 👀: View PDF documents directly in the browser using React PDF
- Toast Notifications 🔔: User feedback through interactive toast messages
- Type Safety 🛡️: Full TypeScript implementation for enhanced development experience
- Next.js ⚛️: React framework for server-side rendering and static site generation.
- React 🔵: JavaScript library for building user interfaces.
- TypeScript 💙: Superset of JavaScript that adds static typing.
- pdf-parse 🔍: Library for parsing PDF files.
- @react-pdf/renderer 🎨: Library for rendering PDFs in React.
- react-pdf 📖: Library for displaying PDFs in React.
- @clerk/nextjs 👤: Authentication library for Next.js.
- @clerk/elements 🧩: UI components for Clerk authentication.
- firebase 🔥: Backend-as-a-service for building web and mobile applications.
- firebase-admin 👨💼: Firebase Admin SDK for server-side operations.
- @pinecone-database/pinecone 🌲: Pinecone database client.
- @langchain/pinecone 🔗: Integration for Pinecone with LangChain.
- @langchain/community 👥: Community package for LangChain.
- @langchain/openai 🧠: OpenAI integration for LangChain.
- openai 🤖: OpenAI API client.
- langchain 🔗: Framework for developing applications with language models.
- lucide-react ✨: Icon library for React.
- react-dropzone 📤: Library for file dropzone components.
- react-markdown 📝: Library for rendering Markdown in React.
- daisyui 🌸: Tailwind CSS component library.
- tailwindcss 🌊: Utility-first CSS framework.
- tailwind-merge 🔄: Utility for merging Tailwind CSS classes.
- tailwindcss-animate 🎭: Tailwind CSS plugin for animations.
- clsx 🔧: Utility for constructing
classNamestrings conditionally.
- stripe 💳: Stripe API client for server-side operations.
- @stripe/stripe-js 💻: Stripe.js library for client-side operations.
- byte-size 📊: Library for formatting byte sizes.
- uuid 🆔: Library for generating UUIDs.
- eslint 🔍: Linting utility for JavaScript and TypeScript.
- eslint-config-next ⚙️: ESLint configuration for Next.js.
- postcss 🎨: Tool for transforming CSS with JavaScript plugins.
- typescript 📘: TypeScript compiler.
- @types/node 🟢: Type definitions for Node.js.
- @types/react ⚛️: Type definitions for React.
- @types/react-dom 🌐: Type definitions for React DOM.
- @types/uuid 🔤: Type definitions for UUID.