Lumina transforms how you interact with PDF documents by providing an intuitive chat interface powered by advanced AI. Upload your PDFs and start having natural conversations about their content instantly.
- 🤖 AI-Powered Chat: Have natural conversations with your PDF documents
- 📱 Modern Interface: Clean, responsive design that works on all devices
- 🚀 Fast Processing: Quick PDF parsing and real-time AI responses
- 🔐 Secure Authentication: Robust user authentication via KindeAuth
- 📊 Smart Indexing: Efficient document processing using Pinecone vector DB
- ☁️ Cloud Storage: Reliable file storage with Cloudflare R2
- Upload - Simply drag and drop your PDF files
- Process - Our AI analyzes and indexes your document
- Chat - Ask questions and get intelligent responses
- Learn - Gain insights from your documents effortlessly
- Framework: Next.js
- Language: TypeScript
- Styling: Tailwind CSS
- Database: Postgres
- Authentication: KindeAuth
- Vector DB: Pinecone
- Storage: Cloudflare R2 (S3-compatible)
- Node.js 18+
- npm or yarn
- Postgres database (any managed or self-hosted Postgres)
- KindeAuth account
- Pinecone account
- Cloudflare account with R2 bucket
- Clone the repository
git clone https://github.com/yourusername/lumina.git
cd lumina- Install dependencies
npm install- Set up environment variables
cp .env.example .env- Configure your environment variables in
.env:
# Database
DATABASE_URL=
# Authentication (Kinde)
KINDE_CLIENT_ID=
KINDE_CLIENT_SECRET=
KINDE_ISSUER_URL=
KINDE_SITE_URL=
KINDE_POST_LOGOUT_REDIRECT_URL=
KINDE_POST_LOGIN_REDIRECT_URL=
# OpenAI
OPENAI_API_KEY=
# Vector DB (Pinecone)
PINECONE_API_KEY=
# Cloudflare R2
R2_ACCOUNT_ID=
R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
R2_BUCKET_NAME=lumina-app
R2_PUBLIC_BASE_URL=https://pub-XXXX.r2.devTo use Cloudflare R2 for file storage:
-
Create a bucket in R2 (e.g.
lumina-app). -
Create an access key with read/write permissions for that bucket and copy the access key ID and secret.
-
In the bucket settings, find the S3 API endpoint and copy the account ID portion into
R2_ACCOUNT_ID. -
Enable the Public development URL for the bucket and copy the
*.r2.devURL intoR2_PUBLIC_BASE_URL. -
Add a simple CORS rule that allows
GET(andHEAD/OPTIONS) fromhttp://localhost:3000(and your production domain later). -
Restart your development server after changing any of these environment variables.
-
Run the development server
npm run devVisit http://localhost:3000 to see the application.
- Create Account: Sign up using your email or social accounts
- Upload PDF: Use the drag-and-drop interface to upload your documents
- Start Chatting: Ask questions about your document content
- Manage Documents: Access your document history and conversations

