{"id":26641560,"url":"https://github.com/zeus-12/uxie","last_synced_at":"2025-04-09T06:09:46.501Z","repository":{"id":208631102,"uuid":"690190907","full_name":"zeus-12/uxie","owner":"zeus-12","description":"pdf reader app with note taking, annotations, collaboration, ai features (chat, flashcards generation w. ai-feedbacks), tts and ocr.","archived":false,"fork":false,"pushed_at":"2025-03-01T19:48:50.000Z","size":51237,"stargazers_count":139,"open_issues_count":0,"forks_count":21,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T04:07:03.562Z","etag":null,"topics":["blocknote","chatpdf","langchain","liveblocks","next-auth","nextjs","pinecone","prisma","react","react-query","shadcn-ui","tailwind","trpc","typescript","uploadthing","zod"],"latest_commit_sha":null,"homepage":"https://uxie.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zeus-12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-11T17:55:25.000Z","updated_at":"2025-03-20T05:27:34.000Z","dependencies_parsed_at":"2024-09-17T22:44:07.813Z","dependency_job_id":"2dc3db9c-833c-466b-be74-8afd2e88c039","html_url":"https://github.com/zeus-12/uxie","commit_stats":null,"previous_names":["zeus-12/uxie"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeus-12%2Fuxie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeus-12%2Fuxie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeus-12%2Fuxie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeus-12%2Fuxie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeus-12","download_url":"https://codeload.github.com/zeus-12/uxie/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247987285,"owners_count":21028895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blocknote","chatpdf","langchain","liveblocks","next-auth","nextjs","pinecone","prisma","react","react-query","shadcn-ui","tailwind","trpc","typescript","uploadthing","zod"],"created_at":"2025-03-24T18:32:00.319Z","updated_at":"2025-04-09T06:09:46.480Z","avatar_url":"https://github.com/zeus-12.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Uxie](https://uxie.vercel.app)\n\n[![thumbnail](./public/thumbnail.png)](https://www.youtube.com/watch?v=m97zcPWSceU)\n\nPDF reader app designed to revolutionise your learning experience!\n\n🚀 Developed with features like:\n\n- 📝 Annotation, note-taking, and collaboration tools\n- 📚 Integrates with LLM for enhanced learning\n- 💡 Generates flashcards with LLM feedback\n\nOriginally started as a hackathon project which I ended up winning 🥇!\n\nUxie has since evolved with even more exciting features.\n\nI'd love for you to give Uxie a try and share your valuable [feedback](https://uxie.vercel.app/feedback).\n\n### Built using\n\n- **Nextjs** Frontend and Serverless api routes\n- **tRPC** For typesafe apis\n- **Zod** For validation\n- **Typescript** For type safety\n- **Tailwind CSS** For CSS\n- **React Query** for data fetching, optimistic updates\n- **React Hook Form** for form handling\n- **Shadcn UI + Radix UI** For UI components\n- **Supabase** As the database\n- **Prisma** As the ORM\n- **Blocknote** for note taking\n- **Uploadthing** for storing pdfs\n- **Next Auth** for authentication\n- **React-pdf-highlighter** for pdf rendering,highlighting\n- **Vercel AI SDK, Langchain** for AI responses and streaming, generating flashcards + evaluating them\n- **Pinecone DB** for storing embeddings of pdfs\n- **Fireworks AI** for LLM\n- **Huggingface Model** for generating Embeddings\n- **Liveblocks** for realtime collaboration\n- **Nuqs** for type-safe search params\n\n## Features:\n\n- Note taking, later download the note as markdown\n- Summarise, ask questions about the PDFs\n- Chat and collab with other (collaboration disabled for now-hit free tier limits :'(\n- Custom blocks in editor\n- Highlights block which on click takes you to that highlight on the doc.\n- AI-powered text autocompletion, and text enhancement\n- PDF text-to-speech (English only) with sentence-by-sentence highlighting. (spent insane amt of hours on this, and super happy with how it turned out.)\n- PDF OCR support (English only)\n- Craft simple flashcards to test your knowledge, answer questions, and receive instant feedback through AI evaluation.\n\n### Bugs\n\n- [ ] addHighlightToNote doesn't work on small screens w sidebar.\n- [ ] add proper prompts for each item in custom/ai/popover.tsx\n- [ ] display a x% done in /f.\n- [ ] build a category system for documents =\u003e doesn't matter if ui is bad, just build it\n- [ ] implement ratelimit (esp for everything ai related) using redis kv =\u003e checkout upstash\n- [ ] add download flashcards in csv,anki format ( apkg format), also add dl notes in pdf format ([html2pdf lib](https://ekoopmans.github.io/html2pdf.js/) should work)\n- [ ] better error,loading pages =\u003e abstract this logic to hook / component\n- [ ] editor loads with empty data before the data is loaded.\n\u003c!-- - [ ] (NOT USING LIVEBLOCKS ANYMORE) see if u can see all the users (also typing status for chat: [refer](https://github.com/konradhy/build-jotion/blob/master/components/editor.tsx#L93)) in the liveblocks room, (and display it at top) --\u003e\n- [ ] fix `.tippy-arrow` appearing on screen at all times =\u003e added a temp fix. still appears when hovered over the pdf reader\n- [ ] abstract userIsOwner and userHasAccess (either collab or owner) logic.\n      solution seems to be =\u003e create separate helper functions (take where, select, etc as params: use relevant prisma types to match each.)\n- [ ] some way to hide the bottom-toolbar (separate settings page or just drag to side?)\n- [ ] TTS: experiment with the voice (changing pitch, etc), or maybe try on-device models (Kokoro TTS)\n\n## New ideas\n\n- [ ] use background runner with long-polling for vectorisation / flashcard gen\n- [ ] For area-highlight\n      -store it as base64 to the notes, then in the same addHighlightToNote function upload it to uploadthing, and then update the url of the block in the notes. =\u003e would prob need to create a custom block for this, else there'd be a noticable lag.\n      -add the yellow leftborder which takes to the image highlight on click\n- [ ] see if the liveblocks stuff can be replaced w. sockets [refer](https://www.blocknotejs.org/docs/real-time-collaboration#yjs-providers)\n- [ ] Run the seogets script, maybe try automated reels? (reel.farm)\n- [ ] send page number whenever tool-calling is used, then display it under the text. (which takes to that page on click)\n- [ ] add bm25 along w vector embeddings? https://www.anthropic.com/news/contextual-retrieval#:~:text=BM25%20can%20succeed%20where%20semantic%20embeddings%20fail\n- [ ] store the content of text-highlight and make it available for search (from a cmd+k window, along w separate tab, and maybe also from /f) =\u003e prob not useful for image-highlights (or maybe run ocr on image highlights (using tesseract, (scribe is overkill here)) and store that) =\u003e prob not useful, since everything gets added to notes already, then searching that is a simple cmd+f\n\n## Setting up guide\n\n### Install dependencies\n\n```\npnpm i\n```\n\n### Set up environment variables\n\ncopy the `.env.example` file to `.env` and fill in the required values.\n\n### Start the development server\n\n```\npnpm dev\n```\n\n### Pinecone\n\n- Create index\n- Dimensions = 768\n- Metric = Cosine\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeus-12%2Fuxie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeus-12%2Fuxie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeus-12%2Fuxie/lists"}