How sayed-afnan-khazi/bookworm works
Bookworm is a notebook-based PDF study app: users sign in, organize notebooks and chats, upload notes, and ask questions about them; the README highlights image-based PDF support. The frontend calls the Flask backend, which owns account/notebook/chat operations and delegates question answering to the Gemini wrapper. Separate backend modules provide MCQ generation and audio podcast generation. Sampled excerpts do not establish all route-to-page wiring or the full PDF-processing and persistence details, so uncertain links are omitted.
Main entry points: app.py Flask API · App.js App routing · podcasts.py Podcast generation · Auth.js Auth state
Components 19
Web app
- App routing
frontend/src/App.js - Auth state
frontend/src/hooks/Auth.js - Notebook management
frontend/src/pages/Notebook.js - Chat interface
frontend/src/pages/Chat.js - PDF viewer
frontend/src/components/FileCard.js - Notebook list
frontend/src/pages/NotebooksList.js
Application backend
- Flask API
backend/app.py - Question answering
backend/gemini_wrap.py - User records
backend/app.py - Notebook records
backend/app.py - Chat records
backend/app.py - PDF collection
backend/pdfs
Study generators
- MCQ generation
backend/mcq.py - Podcast generation
backend/podcasts.py - Audio merging
backend/merge_audio.py - Generated audio
backend/podcasts
Other components
- Learner
- Google identity
- Gemini API
Connections 23
- Learner → App routing: uses
- App routing → Auth state: provides auth
- App routing → Notebook list: routes to
- App routing → Notebook management: routes to
- App routing → Chat interface: routes to
- Auth state → Flask API: calls auth API
- Auth state → Google identity: verifies identity via
- Notebook list → Flask API: requests notebooks
- Notebook management → Flask API: manages notebook
- Notebook management → PDF viewer: opens PDFs
- PDF viewer → Flask API: fetches PDF data
- Chat interface → Flask API: loads chat
- Chat interface → Flask API: sends live messages
- Flask API → User records: reads/writes
- Flask API → Notebook records: reads/writes
- Flask API → Chat records: reads/writes
- Flask API → Question answering: delegates questions
- Question answering → Gemini API: requests answers
- Flask API → PDF collection: serves PDF files
- MCQ generation → Gemini API: generates questions
- Podcast generation → Gemini API: generates transcript/audio
- Podcast generation → Audio merging: merges tracks
- Podcast generation → Generated audio: writes audio