sanidhyy/quill
sanidhyy/quill has 27 GitHub stars and 3 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-15 05:34 UTC. Last push 2026-11-03.
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
Quill is an open-source software to make chatting to your PDF files easy.
Web & AppsREADME.md
OriginalQuill - The SaaS for Students

:notebook_with_decorative_cover: Table of Contents
:bangbang: Folder Structure
Here is the folder structure of this app.
quill/
|- prisma/
|-- schema.prisma
|- public/
|- src/
|-- app/
|--- _trpc/
|--- api/
|--- auth-callback/
|--- dashboard/
|--- pricing/
|--- favicon.ico
|--- globals.css
|--- layout.tsx
|--- page.tsx
|-- components/
|--- chat/
|--- ui/
|--- api-keys-form.tsx
|--- billing-form.tsx
|--- dashboard.tsx
|--- delete-file-modal.tsx
|--- icons.tsx
|--- max-width-wrapper.tsx
|--- mobile-nav.tsx
|--- navbar.tsx
|--- pdf-fullscreen.tsx
|--- pdf-renderer.tsx
|--- providers.tsx
|--- upgrade-button.tsx
|--- upload-button.tsx
|--- user-account-nav.tsx
|-- config/
|--- api-keys.ts
|--- infinite-query.ts
|--- links.ts
|--- message.ts
|--- stripe.ts
|-- db/
|--- index.ts
|-- hooks/
|--- use-require-api-keys.ts
|-- lib/
|--- validators/
|--- encryption.ts
|--- pinecone.ts
|--- stripe.ts
|--- uploadthing.ts
|--- user-api-keys.ts
|--- utils.ts
|-- trpc/
|--- index.ts
|--- trpc.ts
|-- types/
|--- message.ts
|-- proxy.ts
|- .env.example
|- .env/.env.local
|- .gitignore
|- components.json
|- environment.d.ts
|- eslint.config.mjs
|- next.config.ts
|- package.json
|- pnpm-lock.yaml
|- pnpm-workspace.yaml
|- postcss.config.js
|- prisma.config.ts
|- tsconfig.json
|- vercel.ts
:toolbox: Getting Started
- Make sure Git and NodeJS is installed.
- Clone this repository to your local computer.
- Create
.env.localfile in root directory. - Contents of
.env.local:
# .env.local
# disabled next.js telemetry
NEXT_TELEMETRY_DISABLED=1
# kinde keys and urls
KINDE_CLIENT_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXX
KINDE_CLIENT_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
KINDE_ISSUER_URL=https://example.kinde.com
KINDE_SITE_URL=http://localhost:3000
KINDE_POST_LOGOUT_REDIRECT_URL=http://localhost:3000
KINDE_POST_LOGIN_REDIRECT_URL=http://localhost:3000/dashboard
# neon db uri
DATABASE_URL="postgresql://<user>:<password>@<hostname>:<port>/quill?sslmode=require"
# uploadthing token
UPLOADTHING_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# app base url
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# encrypted user API keys cookie (openssl rand -hex 32)
AI_SETTINGS_COOKIE_NAME=quill_ai_settings
VERIFICATION_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# stripe secret key, price id and webhook secret
STRIPE_SECRET_KEY=sk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
STRIPE_PRICE_ID=price_XXXXXXXXXXXXXXXXXXXXXXXXX
STRIPE_WEBHOOK_SECRET=whsec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5. Next.js Telemetry
- Environment Variable:
NEXT_TELEMETRY_DISABLED=1 - Instructions:
- Open your Next.js project.
- Locate the
.env.localfile. - Add or update the line
NEXT_TELEMETRY_DISABLED=1to disable Next.js telemetry.
6. Kinde
- Environment Variables:
KINDE_CLIENT_IDKINDE_CLIENT_SECRETKINDE_ISSUER_URLKINDE_SITE_URLKINDE_POST_LOGOUT_REDIRECT_URLKINDE_POST_LOGIN_REDIRECT_URL
- Instructions:
- Visit Kinde's website and sign in to your account.
- Navigate to your account settings or developer dashboard to find the API credentials.
- Retrieve the following:
KINDE_CLIENT_IDKINDE_CLIENT_SECRETKINDE_ISSUER_URL
- For redirect URLs:
KINDE_SITE_URLKINDE_POST_LOGOUT_REDIRECT_URLKINDE_POST_LOGIN_REDIRECT_URL
7. Neon Database URI
- Environment Variable:
DATABASE_URL="postgresql://<user>:<password>@<hostname>:<port>/quill?sslmode=require" - Instructions:
- Access your PostgreSQL database management interface.
- Locate the database connection details.
- Construct the URI following the provided template and replace the placeholders with your actual database credentials.
8. Uploadthing
- Environment Variables:
UPLOADTHING_TOKEN
- Instructions:
- Visit the Uploadthing developer dashboard and Log in to your account.
- Create a new application and navigate to the API key section and generate a token.
- Retrieve
UPLOADTHING_TOKEN.
9. App Base URL
- Environment Variable:
NEXT_PUBLIC_BASE_URL=http://localhost:3000 - Instructions:
- Simply set
NEXT_PUBLIC_BASE_URL=http://localhost:3000in your.env.localfile.
- Simply set
10. User API Keys Cookie Encryption
- Environment Variables:
AI_SETTINGS_COOKIE_NAMEVERIFICATION_SECRET
- Instructions:
- Generate random secrets with
openssl rand -hex 32for both values.
- Generate random secrets with
11. Stripe
- Environment Variables:
STRIPE_SECRET_KEYSTRIPE_PRICE_IDSTRIPE_WEBHOOK_SECRET
- Instructions:
- Log in to your Stripe account.
- Navigate to the API or developer section.
- Retrieve the following:
STRIPE_SECRET_KEYSTRIPE_PRICE_IDSTRIPE_WEBHOOK_SECRET
- Now app is fully configured π and you can start using this app using either one of
npm run devorpnpm dev.
NOTE: Please make sure to keep your API keys and configuration values secure and do not expose them publicly.
:raising_hand: Need Help?
If you run into issues during installation or setup:
- GitHub Discussions β Open a Q&A discussion for setup and troubleshooting help.
- Email β [email protected]
- Discord β
@sanidhyy
:camera: Screenshots




:gear: Tech Stack
:wrench: Stats
:raised_hands: Contribute
You might encounter some bugs while using this app. You are more than welcome to contribute. Just submit changes via pull request and I will review them before merging. Make sure you follow community guidelines.
:gem: Acknowledgements
Useful resources and dependencies that are used in quill.
- @ai-sdk/openai: ^4.0.106
- @hookform/resolvers: ^5.9.1
- @kinde-oss/kinde-auth-nextjs: ^2.13.2
- @langchain/core: ^1.2.10
- @langchain/openai: ^1.5.12
- @langchain/pinecone: ^1.0.3
- @mantine/hooks: ^9.7.3
- @napi-rs/canvas: ^1.0.9
- @pinecone-database/pinecone: ^5.1.2
- @prisma/adapter-neon: ^7.10.1
- @prisma/client: ^7.10.1
- @radix-ui/react-alert-dialog: ^1.2.1
- @radix-ui/react-avatar: ^1.3.1
- @radix-ui/react-dialog: ^1.1.23
- @radix-ui/react-dropdown-menu: ^2.2.1
- @radix-ui/react-label: ^2.1.17
- @radix-ui/react-progress: ^1.2.1
- @radix-ui/react-slot: ^1.5.0
- @radix-ui/react-tooltip: ^1.2.16
- @radix-ui/react-visually-hidden: ^1.2.13
- @tailwindcss/postcss: ^4.3.3
- @tailwindcss/typography: ^0.5.20
- @tanstack/react-query: ^5.102.8
- @trpc/client: ^11.18.0
- @trpc/next: ^11.18.0
- @trpc/react-query: ^11.18.0
- @trpc/server: ^11.18.0
- @types/node: ^26.6.6
- @types/pg: ^8.23.1
- @types/react: 19.3.0
- @types/react-dom: 19.3.0
- @uploadthing/react: ^7.3.3
- @vercel/config: ^0.9.0
- ai: ^7.0.159
- class-variance-authority: ^0.7.1
- clsx: ^2.1.1
- date-fns: ^4.4.0
- dotenv: ^18.0.9
- eslint: ^9.39.5
- eslint-config-next: 16.3.4
- lucide-react: ^1.51.0
- next: 16.4.3
- next-themes: ^0.4.6
- openai: ^7.47.0
- pdf-parse: ^2.4.5
- postcss: ^8.5.29
- prisma: ^7.10.0
- react: 19.3.0
- react-dom: 19.3.0
- react-dropzone: ^20.1.4
- react-hook-form: ^7.89.0
- react-loading-skeleton: ^3.5.0
- react-markdown: ^10.1.0
- react-pdf: ^11.0.0
- react-resize-detector: ^12.3.0
- react-textarea-autosize: ^8.5.9
- server-only: ^0.0.1
- simplebar-react: ^3.3.2
- sonner: ^2.0.8
- stripe: ^23.0.1
- tailwind-merge: ^3.6.0
- tailwindcss: ^4.3.3
- tailwindcss-animate: ^1.0.7
- typescript: ^6
- uploadthing: ^7.7.4
- zod: ^4.6.1
:coffee: Buy Me a Coffee
:rocket: Follow Me
:books: Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
:page_with_curl: Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out Next.js deployment documentation for more details.
:star: Give A Star
You can also give this repository a star to show more people and they can use this repository.