Write, organize, and ask questions. Kagaz turns your notes into answers.
- Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS
- Backend: Convex (database + server functions)
- Authentication: Clerk
- AI/RAG: LangChain, Google Generative AI (Gemini), PDF Parse
- Payments: Stripe
- UI Components: shadcn UI, Tiptap (rich text editor)
- Styling: Tailwind CSS with custom animations
Screenshot showing successful document processing and embedding generation
- Large File Processing: Due to API token limits, very large PDF files may not be fully processed or embedded
- Incomplete Embeddings: Documents exceeding token limits will only have partial content embedded, potentially missing important information
- Processing Timeouts: Extremely large documents may experience timeout errors during the embedding process
- File Format Support: Currently limited to PDF and text files only
- Context Window: Answers are based on limited context chunks, which may not capture the full document scope
- Processing Time: Large documents require significant time for chunking and embedding generation
- Sign In: Create an account or sign in using Clerk authentication
- Upload Document: Click the upload button and select your PDF or text file
- Wait for Processing: The system will extract text, chunk it, and generate embeddings
- Ask Questions: Type your question in the chat interface
- Get Answers: Receive AI-generated answers based on your document content
- Node.js 18+ and npm
- A Convex account (sign up here)
- A Clerk account (sign up here)
- A Stripe account (sign up here)
kagaz/
├── app/ # Next.js app directory
│ ├── (routes)/ # Application routes
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ └── ... # Custom components
├── convex/ # Convex backend
│ ├── notes.ts # Notes functions
│ ├── fileStorage.ts # File management
│ ├── user.ts # User functions
│ └── schema.ts # Database schema
├── lib/ # Utility functions
├── public/ # Static assets
└── configs/ # Configuration files
-
Clone the repository
git clone https://github.com/Angshuman09/kagaz.git cd kagaz -
Install dependencies
npm install
-
Configure environment variables
Create a
.env.localfile in the root directory:NODE_ENV = development CONVEX_DEPLOYMENT= your_convex_deployment NEXT_PUBLIC_CONVEX_URL= your_convex_url NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY= your_clerk_publishable_key CLERK_SECRET_KEY= your_clerk_secret_key NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/ NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/ NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/ NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/ CLERK_JWT_ISSUER_DOMAIN= your_jwt_issuer_domain GEMINI_API_KEY= your_gemini_api_key NEXT_PUBLIC_STRIPE_PUBLIC_KEY = your_stripe_public_key STRIPE_SECRET_KEY = your_stripe_secret_key STRIPE_WEBHOOK_SECRET = your_stripe_webhook_secret STRIPE_PRICE_ID= your_stripe_price_id HOST_URL = your_host_url
-
Set up Convex
npx convex dev
-
Run the development server
npm run dev
-
Open your browser
Navigate to
http://localhost:3000
Angshuman
- GitHub: @Angshuman09
- Project Link: https://github.com/Angshuman09/kagaz
If you find this project useful, please consider giving it a star!
Made with ❤️ by Angshuman

