# priyamrajput-dev/lumen-note architecture

> Architecture diagram of the GitHub repository priyamrajput-dev/lumen-note, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/priyamrajput-dev/lumen-note
- Repository: https://github.com/priyamrajput-dev/lumen-note

## Overview

Lumen Note is an AI research and study workspace: users organize sources in workspaces, ask grounded questions, turn material into learning artifacts, and manage persistent memories. The client routes users to workspace, chat, artifact, and memory experiences; API modules handle those requests, while source processing and other heavy tasks use Inngest workflows. The README documents RAG, search, and memory integrations; sampled source confirms API dispatch and client routing, but not the internals of every service, so uncertain service-to-service wiring is omitted.

Main entry points: [`server/src/modules/route.ts`](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/route.ts) (Route registry), [`server/src/inngest/index.ts`](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/inngest/index.ts) (Background workflows), [`server/src/modules/conversation/chat.service.ts`](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/conversation/chat.service.ts) (Chat and RAG), [`server/src/app.ts`](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/app.ts) (Express application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client experience"]
  node_app["React app<br/>[App.tsx]"]
  node_workspace_ui["Workspace page<br/>[WorkspacePage.tsx]"]
  node_source_ui["Source panel<br/>[SourcesPanel.tsx]"]
  node_chat_ui["Chat studio<br/>[ChatStudio.tsx]"]
  node_artifact_ui["Artifact panel<br/>[ArtifactsPanel.tsx]"]
  node_memory_ui["Memory manager<br/>[MemoriesPage.tsx]"]
  node_source_api["Source API client<br/>[sources.ts]"]
  node_chat_api["Chat API client<br/>[chat.ts]"]
  node_artifact_api["Artifact API client<br/>[artifacts.ts]"]
  node_memory_api["Memory API client<br/>[memories.ts]"]
end

subgraph group_api["API and access"]
  node_server_app["Express application<br/>[app.ts]"]
  node_route_registry["Route registry<br/>[route.ts]"]
  node_workspace_module["Workspace management"]
end

subgraph group_knowledge["Knowledge workflows"]
  node_source_module["Source endpoints"]
  node_source_processing["Source processing"]
  node_chat_service["Chat and RAG<br/>[chat.service.ts]"]
  node_workers["Background workflows<br/>[index.ts]"]
end

subgraph group_learning["Study and memory"]
  node_artifact_service["Artifact generation"]
  node_memory_module["Memory management"]
end

subgraph group_infrastructure["Persistence and integrations"]
  node_postgres[("PostgreSQL<br/>[index.ts]")]
  node_pinecone[("Pinecone vectors<br/>[pinecone.ts]")]
  node_openai["OpenAI models<br/>[openai.ts]"]
  node_mem0["Mem0 service<br/>[mem0.ts]"]
  node_tavily["Tavily search<br/>[tavily.ts]"]
  node_firecrawl["Firecrawl scraper<br/>[firecrawl.ts]"]
  node_cloudinary["Cloudinary storage<br/>[cloudinary.ts]"]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_workspace_ui
node_app -->|"routes to"| node_memory_ui
node_workspace_ui -->|"shows"| node_source_ui
node_workspace_ui -->|"shows"| node_chat_ui
node_workspace_ui -->|"shows"| node_artifact_ui
node_source_ui -->|"requests sources"| node_source_api
node_chat_ui -->|"sends chat"| node_chat_api
node_artifact_ui -->|"requests artifacts"| node_artifact_api
node_memory_ui -->|"manages memories"| node_memory_api
node_source_api -->|"calls API"| node_server_app
node_chat_api -->|"calls API"| node_server_app
node_artifact_api -->|"calls API"| node_server_app
node_memory_api -->|"calls API"| node_server_app
node_server_app -->|"registers routes"| node_route_registry
node_route_registry -->|"dispatches source requests"| node_source_module
node_route_registry -->|"dispatches workspace requests"| node_workspace_module
node_route_registry -->|"dispatches chat requests"| node_chat_service
node_route_registry -->|"dispatches artifact requests"| node_artifact_service
node_route_registry -->|"dispatches memory requests"| node_memory_module
node_source_module -->|"processes imports"| node_source_processing
node_source_processing -.->|"schedules processing"| node_workers
node_chat_service -.->|"retrieves vectors"| node_pinecone
node_chat_service -.->|"generates responses"| node_openai
node_chat_service -.->|"searches web"| node_tavily
node_chat_service -.->|"loads context"| node_mem0
node_artifact_service -.->|"schedules generation"| node_workers
node_memory_module -->|"reads and updates"| node_mem0
node_workers -.->|"generates embeddings and content"| node_openai
node_workers -.->|"indexes vectors"| node_pinecone
node_workers -.->|"scrapes websites"| node_firecrawl
node_workers -.->|"stores PDF files"| node_cloudinary
node_source_processing -.->|"stores source data"| node_postgres
node_workspace_module -->|"persists workspaces"| node_postgres

click node_app "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/App.tsx"
click node_workspace_ui "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/pages/WorkspacePage.tsx"
click node_source_ui "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/components/sources/SourcesPanel.tsx"
click node_chat_ui "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/components/chat/ChatStudio.tsx"
click node_artifact_ui "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/components/artifacts/ArtifactsPanel.tsx"
click node_memory_ui "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/pages/MemoriesPage.tsx"
click node_source_api "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/sources.ts"
click node_chat_api "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/chat.ts"
click node_artifact_api "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/artifacts.ts"
click node_memory_api "https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/memories.ts"
click node_server_app "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/app.ts"
click node_route_registry "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/route.ts"
click node_source_module "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/source/source.controller.ts"
click node_source_processing "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/source/source-processing.service.ts"
click node_chat_service "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/conversation/chat.service.ts"
click node_artifact_service "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/artifact/artifact.service.ts"
click node_memory_module "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/memory/memory.controller.ts"
click node_workspace_module "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/workspace/workspace.controller.ts"
click node_workers "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/inngest/index.ts"
click node_postgres "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/db/index.ts"
click node_pinecone "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/pinecone.ts"
click node_openai "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/openai.ts"
click node_mem0 "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/mem0.ts"
click node_tavily "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/tavily.ts"
click node_firecrawl "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/firecrawl.ts"
click node_cloudinary "https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/cloudinary.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_workspace_ui,node_source_ui,node_chat_ui,node_artifact_ui,node_memory_ui,node_source_api,node_chat_api,node_artifact_api,node_memory_api,node_user toneBlue
class node_server_app,node_route_registry,node_workspace_module toneAmber
class node_source_module,node_source_processing,node_chat_service,node_workers toneMint
class node_artifact_service,node_memory_module toneRose
class node_postgres,node_pinecone,node_openai,node_mem0,node_tavily,node_firecrawl,node_cloudinary toneIndigo
```

## Components

### Client experience

- [React app](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/App.tsx): `client/src/App.tsx`
- [Workspace page](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/pages/WorkspacePage.tsx): `client/src/pages/WorkspacePage.tsx`
- [Source panel](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/components/sources/SourcesPanel.tsx): `client/src/components/sources/SourcesPanel.tsx`
- [Chat studio](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/components/chat/ChatStudio.tsx): `client/src/components/chat/ChatStudio.tsx`
- [Artifact panel](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/components/artifacts/ArtifactsPanel.tsx): `client/src/components/artifacts/ArtifactsPanel.tsx`
- [Memory manager](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/pages/MemoriesPage.tsx): `client/src/pages/MemoriesPage.tsx`
- [Source API client](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/sources.ts): `client/src/api/sources.ts`
- [Chat API client](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/chat.ts): `client/src/api/chat.ts`
- [Artifact API client](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/artifacts.ts): `client/src/api/artifacts.ts`
- [Memory API client](https://github.com/priyamrajput-dev/lumen-note/blob/main/client/src/api/memories.ts): `client/src/api/memories.ts`

### API and access

- [Express application](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/app.ts): `server/src/app.ts`
- [Route registry](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/route.ts): `server/src/modules/route.ts`
- [Workspace management](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/workspace/workspace.controller.ts): `server/src/modules/workspace/workspace.controller.ts`

### Knowledge workflows

- [Source endpoints](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/source/source.controller.ts): `server/src/modules/source/source.controller.ts`
- [Source processing](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/source/source-processing.service.ts): `server/src/modules/source/source-processing.service.ts`
- [Chat and RAG](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/conversation/chat.service.ts): `server/src/modules/conversation/chat.service.ts`
- [Background workflows](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/inngest/index.ts): `server/src/inngest/index.ts`

### Study and memory

- [Artifact generation](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/artifact/artifact.service.ts): `server/src/modules/artifact/artifact.service.ts`
- [Memory management](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/modules/memory/memory.controller.ts): `server/src/modules/memory/memory.controller.ts`

### Persistence and integrations

- [PostgreSQL](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/db/index.ts): `server/src/db/index.ts`
- [Pinecone vectors](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/pinecone.ts): `server/src/lib/pinecone.ts`
- [OpenAI models](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/openai.ts): `server/src/lib/openai.ts`
- [Mem0 service](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/mem0.ts): `server/src/lib/mem0.ts`
- [Tavily search](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/tavily.ts): `server/src/lib/tavily.ts`
- [Firecrawl scraper](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/firecrawl.ts): `server/src/lib/firecrawl.ts`
- [Cloudinary storage](https://github.com/priyamrajput-dev/lumen-note/blob/main/server/src/lib/cloudinary.ts): `server/src/lib/cloudinary.ts`

### Other components

- **User**

## Connections

- User → React app: uses
- React app → Workspace page: routes to
- React app → Memory manager: routes to
- Workspace page → Source panel: shows
- Workspace page → Chat studio: shows
- Workspace page → Artifact panel: shows
- Source panel → Source API client: requests sources
- Chat studio → Chat API client: sends chat
- Artifact panel → Artifact API client: requests artifacts
- Memory manager → Memory API client: manages memories
- Source API client → Express application: calls API
- Chat API client → Express application: calls API
- Artifact API client → Express application: calls API
- Memory API client → Express application: calls API
- Express application → Route registry: registers routes
- Route registry → Source endpoints: dispatches source requests
- Route registry → Workspace management: dispatches workspace requests
- Route registry → Chat and RAG: dispatches chat requests
- Route registry → Artifact generation: dispatches artifact requests
- Route registry → Memory management: dispatches memory requests
- Source endpoints → Source processing: processes imports
- Source processing → Background workflows: schedules processing
- Chat and RAG → Pinecone vectors: retrieves vectors
- Chat and RAG → OpenAI models: generates responses
- Chat and RAG → Tavily search: searches web
- Chat and RAG → Mem0 service: loads context
- Artifact generation → Background workflows: schedules generation
- Memory management → Mem0 service: reads and updates
- Background workflows → OpenAI models: generates embeddings and content
- Background workflows → Pinecone vectors: indexes vectors
- Background workflows → Firecrawl scraper: scrapes websites
- Background workflows → Cloudinary storage: stores PDF files
- Source processing → PostgreSQL: stores source data
- Workspace management → PostgreSQL: persists workspaces
