How phaneendra24/turium-assignment-backend works
This is an Express backend for a retrieval-augmented knowledge service. Users can ingest notes or URLs, retrieve stored items, ask context-grounded questions with citations, and review conversation history. URL ingestion extracts readable page content (falling back to Puppeteer); both ingestion types are chunked, embedded, and stored for semantic retrieval. Chat persists messages and citations in SQLite through Prisma. The README documents ChromaDB and OpenAI integrations; vector-store implementation details were not sampled, so those links reflect the documented capabilities rather than inspected internals.
Main entry points: data.service.ts Data workflows · queries.ts Persistence queries · vectorStore.ts Vector store client · data.controller.ts Request handlers
Components 17
API
- Express app
src/app.ts - API router
src/routes/routes.ts - Data endpoints
src/data/data.routes.ts - Request handlers
src/data/data.controller.ts - Input validation
src/data/data.schema.ts
Content ingestion
- Data workflows
src/data/data.service.ts - Web extraction
src/services/scrape.service.ts - Text cleaning
src/services/text.service.ts - Chunking
src/services/tokenizer.ts - Embedding client
src/services/embedding.ts
Retrieval and chat
- Vector store client
src/services/vectorStore.ts
Persistence
- Persistence queries
src/db/queries.ts - Prisma client
src/db/index.ts
Other components
- API user
- OpenAI API
- ChromaDB
- SQLite database
prisma/schema.prisma
Connections 25
- API user → Express app: sends requests
- Express app → API router: mounts API
- API router → Data endpoints: mounts data routes
- Data endpoints → Request handlers: dispatches handlers
- Request handlers → Input validation: validates input
- Request handlers → Data workflows: invokes workflow
- Data workflows → Web extraction: scrapes URLs
- Web extraction → Text cleaning: cleans extracted text
- Data workflows → Text cleaning: cleans notes
- Data workflows → Chunking: chunks content
- Data workflows → Embedding client: embeds chunks
- Embedding client → OpenAI API: requests embeddings
- Data workflows → Vector store client: stores chunks
- Vector store client → ChromaDB: writes vectors
- Web extraction → API user: fetches web pages
- Data workflows → Persistence queries: stores documents
- Data workflows → Persistence queries: reads documents
- Persistence queries → Prisma client: executes queries
- Prisma client → SQLite database: reads and writes
- Data workflows → Embedding client: embeds questions
- Data workflows → Vector store client: searches chunks
- Vector store client → ChromaDB: queries vectors
- Data workflows → OpenAI API: generates answers
- Data workflows → Persistence queries: persists conversations
- Data workflows → Persistence queries: loads history