Skip to content
Projects

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.

How these counts are measured

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 & Apps

README.md

Original

Quill - The SaaS for Students

Quill - The SaaS for Students

Ask Me Anything! GitHub license Maintenance GitHub branches Github commits GitHub issues GitHub pull reUpload PDF files Vercel status

: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

  1. Make sure Git and NodeJS is installed.
  2. Clone this repository to your local computer.
  3. Create .env.local file in root directory.
  4. 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.local file.
    • Add or update the line NEXT_TELEMETRY_DISABLED=1 to disable Next.js telemetry.

6. Kinde

  • Environment Variables:
    • KINDE_CLIENT_ID
    • KINDE_CLIENT_SECRET
    • KINDE_ISSUER_URL
    • KINDE_SITE_URL
    • KINDE_POST_LOGOUT_REDIRECT_URL
    • KINDE_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_ID
      • KINDE_CLIENT_SECRET
      • KINDE_ISSUER_URL
    • For redirect URLs:
      • KINDE_SITE_URL
      • KINDE_POST_LOGOUT_REDIRECT_URL
      • KINDE_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:3000 in your .env.local file.

10. User API Keys Cookie Encryption

  • Environment Variables:
    • AI_SETTINGS_COOKIE_NAME
    • VERIFICATION_SECRET
  • Instructions:
    • Generate random secrets with openssl rand -hex 32 for both values.

11. Stripe

  • Environment Variables:
    • STRIPE_SECRET_KEY
    • STRIPE_PRICE_ID
    • STRIPE_WEBHOOK_SECRET
  • Instructions:
    • Log in to your Stripe account.
    • Navigate to the API or developer section.
    • Retrieve the following:
      • STRIPE_SECRET_KEY
      • STRIPE_PRICE_ID
      • STRIPE_WEBHOOK_SECRET
  1. Now app is fully configured πŸ‘ and you can start using this app using either one of npm run dev or pnpm 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:

:camera: Screenshots

Modern UI/UX

Upload PDF files

Ask any question to AI

Buy Pro Plan

:gear: Tech Stack

React JS Next JS Typescript Tailwind CSS Vercel Postgresql

:wrench: Stats

Stats for quill

: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.

:coffee: Buy Me a Coffee

:rocket: Follow Me

Follow Me Tweet about this project

:books: Learn More

To learn more about Next.js, take a look at the following resources:

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.

:star2: Star History


(back to top)