How pratham-taikar/multimodal-document-intelligence works
AskMyNotes is a web app for organizing study subjects, uploading notes, asking questions grounded in those notes, and generating practice questions. The main workflow is to create a subject, upload and process PDF/TXT notes into searchable chunks, then ask questions or generate MCQs and short-answer exercises. Authentication and subject ownership scope access to this data. The graph reflects the sampled server, controllers, and services; the README is empty, and unsampled modules are represented only where their paths and roles are clear from the tree.
Main entry points: server.js Express app · DocumentChunk.js Document chunks · Subject.js Subject model · documentController.js Document controller
Components 21
Web entry
- Express app
server.js - Auth middleware
middleware/auth.js - EJS views
views
Accounts and subjects
- Subject routes
routes/subjectRoutes.js - Subject controller
controllers/subjectController.js - User model
models/User.js - Subject model
models/Subject.js
Notes ingestion
- Document routes
routes/documentRoutes.js - Document controller
controllers/documentController.js - Document processor
services/documentProcessor.js
Study tools
- Chat routes
routes/chatRoutes.js - Chat controller
controllers/chatController.js - Notes Q&A
services/ragService.js - Question routes
routes/questionRoutes.js - Question controller
controllers/questionController.js - Practice generator
services/questionService.js
Data and AI
- Document chunks
models/DocumentChunk.js - AI service
services/aiService.js - MongoDB
Other components
- User browser
- OpenRouter API
Connections 31
- User browser → Express app: requests pages
- Express app → EJS views: renders
- Express app → Auth middleware: guards routes
- Express app → Subject routes: mounts
- Express app → Document routes: mounts
- Express app → Chat routes: mounts
- Express app → Question routes: mounts
- Express app → User model: registers and logs in
- Subject routes → Subject controller: dispatches
- Subject controller → Subject model: reads and writes
- Subject controller → Document chunks: deletes chunks
- Document routes → Document controller: dispatches
- Document controller → Subject model: reads and updates
- Document controller → Document processor: extracts and chunks
- Document controller → Document chunks: writes and deletes
- Chat routes → Chat controller: dispatches
- Chat controller → Subject model: checks ownership
- Chat controller → Document chunks: checks availability
- Chat controller → Notes Q&A: requests answers
- Notes Q&A → Document chunks: retrieves notes
- Notes Q&A → AI service: generates answer
- Question routes → Question controller: dispatches
- Question controller → Subject model: checks ownership
- Question controller → Practice generator: requests exercises
- Practice generator → Document chunks: reads notes
- Practice generator → AI service: generates questions
- AI service → OpenRouter API: sends prompts
- Express app → MongoDB: stores sessions
- User model → MongoDB: reads and writes
- Subject model → MongoDB: reads and writes
- Document chunks → MongoDB: reads and writes