Chat with Your Documents & Data
Transform your documents into an intelligent, searchable knowledge base powered by advanced AI
- Overview
- Features
- Screenshots
- Architecture
- Technology Stack
- Prerequisites
- Installation
- Environment Variables
- Usage
- API Documentation
- Contributing
- License
- Contact
ThinkLM is a powerful AI-powered document analysis and chat platform that transforms your documents, websites, and multimedia content into an intelligent, searchable knowledge base. Built with modern web technologies and advanced AI capabilities, ThinkLM enables users to upload various content types and interact with them through natural language queries.
- Multi-Source Data Ingestion: Support for PDFs, websites, YouTube videos, and text input
- Advanced AI Processing: Powered by OpenAI's GPT-4.1 and text-embedding-3-large models
- Semantic Search: Vector-based similarity search using Qdrant vector database
- Intelligent Chat Interface: Natural language queries with source citations
- Organized Workspace: Notebook-based organization system
- Real-time Processing: Lightning-fast document processing and response generation
-
Multiple Data Sources
- PDF document upload and processing
- Website content extraction and analysis
- YouTube video transcription and analysis
- Direct text input and processing
- Support for multiple content formats (PDFs, text files, markdown, web pages, YouTube videos)
-
AI-Powered Chat Interface
- Natural language question answering
- Source citation and reference tracking
- Context-aware responses
- Multi-document query capabilities
-
Advanced Search Capabilities
- Semantic vector search
- Cross-document information retrieval
- Relevance scoring and ranking
- Intelligent content matching
-
Organized Workspace
- Unlimited notebook creation
- Project-based content organization
- User-specific content isolation
- Hierarchical content management
-
Security & Privacy
- User authentication and authorization
- Encrypted data storage
- Private content isolation
- Secure API endpoints
-
Usage Tracking & Analytics
- Credit-based usage system (1 credit ≈ 1,000 tokens)
- Real-time usage statistics and monitoring
- Performance metrics and efficiency insights
- Account activity monitoring and logs
- Personalized usage recommendations and tips
- Credit consumption tracking per query
-
Modern Architecture
- RESTful API design
- Microservices-ready structure
- Scalable database design
- Real-time processing capabilities
-
Performance Optimizations
- Efficient document chunking
- Optimized vector embeddings
- Caching mechanisms
- Background processing
Modern, responsive landing page featuring the hero section with gradient backgrounds and animated elements
Clean dashboard interface showing user notebooks, recent activity, and quick access to features
Comprehensive statistics page showing credit usage, data sources, performance metrics, and account activity
Interactive notebook interface with chat panel, document sources, and content management tools
AI-powered chat interface displaying intelligent responses with source citations and references
Multi-source document upload interface supporting PDFs, URLs, YouTube videos, and text input
Secure authentication system with login, registration, and password recovery functionality
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ External │
│ (React) │◄──►│ (Express) │◄──►│ Services │
│ │ │ │ │ │
│ • React Router │ │ • REST API │ │ • OpenAI API │
│ • Zustand Store │ │ • JWT Auth │ │ • Qdrant DB │
│ • Tailwind CSS │ │ • LangChain │ │ • MongoDB │
│ • Vite Build │ │ • File Upload │ │ • Email Service │
└─────────────────┘ └─────────────────┘ └─────────────────┘
src/
├── app.js # Main application entry point
├── controller/ # Request handlers
│ ├── chat.controller.js
│ ├── content.controller.js
│ ├── notebook.controller.js
│ └── user.controller.js
├── middleware/ # Custom middleware
│ ├── auth.middleware.js # JWT authentication
│ └── upload.middleware.js # File upload handling
├── model/ # Database models
│ ├── Content.model.js
│ ├── Notebook.model.js
│ └── User.model.js
├── routes/ # API routes
│ ├── chat.routes.js
│ ├── content.routes.js
│ ├── notebook.routes.js
│ └── user.routes.js
├── services/ # Business logic
│ ├── chat.service.js
│ ├── document.processor.service.js
│ ├── embeddings.service.js
│ ├── qdrant.service.js
│ └── web.service.js
└── utils/ # Utility functions
└── db.js
src/
├── App.jsx # Main application component
├── components/ # Reusable components
│ ├── auth/ # Authentication components
│ ├── landing/ # Landing page components
│ ├── layout/ # Layout components
│ ├── notebook/ # Notebook-specific components
│ └── ui/ # UI component library
├── pages/ # Page components
│ ├── auth/ # Authentication pages
│ │ ├── LoginPage.jsx
│ │ ├── RegisterPage.jsx
│ │ ├── VerifyPage.jsx
│ │ ├── ForgotPasswordPage.jsx
│ │ └── ResetPasswordPage.jsx
│ ├── DashboardPage.jsx
│ ├── NotebookPage.jsx
│ ├── ProfilePage.jsx
│ └── StatsPage.jsx
├── stores/ # State management
│ ├── authStore.js
│ ├── chatStore.js
│ └── notebookStore.js
└── lib/ # Utility libraries
└── utils.js
/- Landing page with features and pricing/login- User login page/register- User registration page/verify/:token- Email verification page/forgot-password- Password reset request page/reset-password/:token- Password reset page/app/dashboard- User dashboard (protected)/app/notebook/:id- Notebook interface (protected)/app/profile- User profile page (protected)/app/stats- Usage statistics page (protected)
ThinkLM follows a sophisticated multi-layered architecture where each component plays a crucial role in the document processing and AI-powered chat experience.
┌─────────────────────────────────────────────────────────────────────────────────┐
│ USER INTERFACE │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Landing │ │ Auth │ │ Dashboard │ │ Notebook │ │
│ │ Page │ │ Pages │ │ Page │ │ Interface │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│ FRONTEND LAYER │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ React │ │ Zustand │ │ Axios │ │ Router │ │
│ │ Components │ │ Store │ │ Client │ │ Handler │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│ API GATEWAY │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Express │ │ CORS │ │ JWT │ │ Multer │ │
│ │ Server │ │ Handler │ │ Auth │ │ Upload │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│ BUSINESS LOGIC LAYER │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ User │ │ Notebook │ │ Content │ │ Chat │ │
│ │ Controller │ │ Controller │ │ Controller │ │ Controller │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│ SERVICE LAYER │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Document │ │ Embeddings │ │ Qdrant │ │ Web │ │
│ │ Processor │ │ Service │ │ Service │ │ Service │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ MongoDB │ │ Qdrant │ │ OpenAI │ │ Email │ │
│ │ Database │ │ Vector │ │ API │ │ Service │ │
│ │ │ │ Database │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────┘
User Registration/Login
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │───▶│ Backend │───▶│ MongoDB │
│ Auth Form │ │ Auth Route │ │ User Model │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ JWT Token │◀───│ JWT Sign │◀───│ User Created │
│ Storage │ │ & Hash │ │ & Verified │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Document Upload
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │───▶│ Backend │───▶│ File Storage │
│ Upload UI │ │ Multer │ │ (Local/Cloud) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Progress │◀───│ Document │───▶│ Text │
│ Indicator │ │ Processor │ │ Extraction │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Text │───▶│ OpenAI │
│ Chunking │ │ Embeddings │
└─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Vector │◀───│ Embeddings │
│ Storage │ │ Generation │
│ (Qdrant) │ │ │
└─────────────────┘ └─────────────────┘
User Query
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │───▶│ Backend │───▶│ Qdrant │
│ Chat Input │ │ Chat Route │ │ Vector Search │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Loading │◀───│ Similarity │───▶│ Relevant │
│ State │ │ Search │ │ Documents │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Context │───▶│ OpenAI │
│ Assembly │ │ GPT-4.1 │
└─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ AI Response │◀───│ Response │
│ with Sources │ │ Generation │
└─────────────────┘ └─────────────────┘
Content Sources
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ PDF Files │ │ Web URLs │ │ YouTube │
│ Upload │ │ Scraping │ │ Videos │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ PDF-Parse │ │ Cheerio │ │ YouTube │
│ Processing │ │ Web Scraping │ │ Transcript │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐
│ Unified │
│ Text │
│ Processing │
└─────────────────┘
│
▼
┌─────────────────┐
│ Vector │
│ Embeddings │
│ & Storage │
└─────────────────┘
User Action
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │───▶│ Backend │───▶│ Credit │
│ Action │ │ Service │ │ Calculation │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Usage │◀───│ Token │───▶│ MongoDB │
│ Update │ │ Estimation │ │ User Stats │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Real-time │ │ Usage │ │ Analytics │
│ Statistics │ │ Tracking │ │ & Reports │
└─────────────────┘ └─────────────────┘ └─────────────────┘
-
Authentication Flow
- User submits login/register form
- Frontend sends credentials via Axios
- Backend validates and returns JWT token
- Frontend stores token in Zustand store
- All subsequent requests include JWT in headers
-
Document Upload Flow
- User selects file via React Dropzone
- Frontend sends multipart form data via Axios
- Backend processes file with Multer middleware
- Real-time progress updates via WebSocket (if implemented)
-
Chat Interaction Flow
- User types query in chat interface
- Frontend sends query with selected content IDs
- Backend processes query through LangChain
- Response streamed back to frontend
- Chat history stored in Zustand store
-
Document Processing Pipeline
File Upload → Text Extraction → Chunking → Embedding → Vector Storage -
Query Processing Pipeline
User Query → Vector Search → Context Retrieval → AI Generation → Response -
Database Operations
- MongoDB: User data, notebooks, content metadata
- Qdrant: Vector embeddings for semantic search
- File System: Uploaded documents storage
-
OpenAI API Integration
- Embeddings: text-embedding-3-large for vector generation
- Chat: GPT-4.1 for response generation
- Rate Limiting: Implemented to manage API costs
-
Email Service Integration
- Nodemailer: User verification and password reset
- SMTP Configuration: Mailtrap for development
-
Vector Database Integration
- Qdrant: High-performance vector similarity search
- Collection Management: Per-content collections for isolation
Error Occurrence
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │───▶│ Backend │───▶│ Error │
│ Error │ │ Error │ │ Logging │
│ Boundary │ │ Middleware │ │ & Monitoring │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User │ │ Graceful │ │ Error │
│ Notification │ │ Degradation │ │ Recovery │
└─────────────────┘ └─────────────────┘ └─────────────────┘
-
Caching Strategy
- Frontend: Zustand store for state management
- Backend: Response caching for frequent queries
- Database: Indexed queries for fast retrieval
-
Lazy Loading
- Component-based code splitting
- Dynamic imports for heavy components
- Progressive image loading
-
Background Processing
- Document processing in background
- Vector embedding generation
- Email sending queue
This comprehensive flow ensures that ThinkLM provides a seamless, efficient, and scalable document analysis and chat experience.
| Technology | Version | Purpose |
|---|---|---|
| Node.js | 18+ | Runtime environment |
| Express.js | 5.1.0 | Web framework |
| MongoDB | Latest | Primary database |
| Mongoose | 8.17.2 | ODM for MongoDB |
| LangChain | 0.3.31 | AI/ML framework |
| OpenAI | Latest | AI model integration |
| Qdrant | Latest | Vector database |
| JWT | 9.0.2 | Authentication |
| Multer | 2.0.2 | File upload handling |
| Cheerio | 1.1.2 | Web scraping and HTML parsing |
| PDF-Parse | 1.1.1 | PDF document processing |
| YouTube-Transcript | 1.2.1 | YouTube video transcription |
| YouTubei.js | 15.0.1 | YouTube API integration |
| Nodemailer | 7.0.5 | Email services |
| Bcryptjs | 3.0.2 | Password hashing |
| Cookie Parser | 1.4.7 | Cookie handling |
| CORS | 2.8.5 | Cross-origin resource sharing |
| Dotenv | 17.2.1 | Environment variable management |
| Nodemon | 3.1.10 | Development server auto-restart |
| LangChain Community | 0.3.53 | Community integrations |
| LangChain Core | 0.3.72 | Core LangChain functionality |
| LangChain OpenAI | 0.6.9 | OpenAI integration for LangChain |
| LangChain Qdrant | 0.1.3 | Qdrant integration for LangChain |
| LangChain Text Splitters | 0.1.0 | Text chunking utilities |
| LangChain | 0.3.31 | Main LangChain framework |
| Express | 5.1.0 | Web application framework |
| MongoDB | Latest | NoSQL database |
| Qdrant | Latest | Vector database for embeddings |
| OpenAI | Latest | AI model integration |
| JWT | 9.0.2 | JSON Web Token authentication |
| Multer | 2.0.2 | File upload middleware |
| Cheerio | 1.1.2 | HTML parsing and web scraping |
| PDF-Parse | 1.1.1 | PDF document processing |
| YouTube-Transcript | 1.2.1 | YouTube video transcription |
| Technology | Version | Purpose |
|---|---|---|
| React | 19.1.1 | UI framework |
| Vite | 7.1.2 | Build tool |
| Tailwind CSS | 4.1.12 | Styling framework |
| React Router | 7.8.2 | Client-side routing |
| Zustand | 5.0.8 | State management |
| Axios | 1.11.0 | HTTP client |
| Radix UI | Latest | Component primitives |
| Lucide React | 0.541.0 | Icon library |
| React Hook Form | 7.62.0 | Form handling |
| React Dropzone | 14.3.8 | File upload UI |
| Sonner | 2.0.7 | Toast notifications |
| Next Themes | 0.4.6 | Theme management |
| Zod | 4.1.1 | Schema validation |
| Class Variance Authority | 0.7.1 | Component styling |
| Tailwind Merge | 3.3.1 | Tailwind CSS utility merging |
| CLSX | 2.1.1 | Conditional class names |
| Hookform Resolvers | 5.2.1 | Form validation resolvers |
| ESLint | 9.33.0 | Code linting and formatting |
| Vite Plugin React | 5.0.0 | React plugin for Vite |
| TypeScript Types | Latest | TypeScript type definitions |
| Tailwind Animate CSS | 1.3.7 | Animation utilities for Tailwind |
| Globals | 16.3.0 | Global ESLint configuration |
| React Hooks ESLint Plugin | 5.2.0 | ESLint rules for React hooks |
| React Refresh ESLint Plugin | 0.4.20 | ESLint rules for React refresh |
| ESLint JS | 9.33.0 | ESLint JavaScript configuration |
| Tailwind CSS Vite | 4.1.12 | Tailwind CSS integration for Vite |
| Vite | 7.1.2 | Build tool and development server |
| React | 19.1.1 | UI framework |
| React DOM | 19.1.1 | React DOM rendering |
| React Router DOM | 7.8.2 | Client-side routing |
- OpenAI API: GPT-4.1 for chat, text-embedding-3-large for embeddings
- Qdrant: Vector database for semantic search
- MongoDB Atlas: Cloud database hosting
- Email Service: Nodemailer with SMTP configuration
ThinkLM uses a credit-based system to manage usage and costs:
- 1 Credit ≈ 1,000 tokens processed
- Document upload: 2-10 credits (depending on size)
- Chat query: 1-3 credits (depending on complexity)
- Unused credits roll over to the next month
- Real-time tracking of credit consumption
- Usage analytics and efficiency recommendations
Before running ThinkLM, ensure you have the following installed:
- Node.js (v18.0.0 or higher)
- npm (v8.0.0 or higher) or yarn
- MongoDB (local installation or MongoDB Atlas account)
- Git (for cloning the repository)
- Docker (for containerized deployment)
- Docker Compose (for multi-service orchestration)
git clone https://github.com/milindkusahu/ThinkLM.git
cd ThinkLM# Navigate to backend directory
cd backend
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit environment variables (see Environment Variables section)
nano .env# Navigate to frontend directory (from project root)
cd frontend
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit environment variables
nano .env# Install MongoDB locally
# macOS (using Homebrew)
brew install mongodb-community
# Ubuntu/Debian
sudo apt-get install mongodb
# Start MongoDB service
sudo systemctl start mongod- Create a free account at MongoDB Atlas
- Create a new cluster
- Get your connection string
- Add the connection string to your
.envfile
# From the backend directory
docker-compose up -d qdrant# Install Qdrant locally
# Follow instructions at: https://qdrant.tech/documentation/quick-start/# Terminal 1: Start backend
cd backend
npm run dev
# Terminal 2: Start frontend
cd frontend
npm run dev# Build frontend
cd frontend
npm run build
# Start backend
cd backend
npm startThe application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
Create a .env file in the backend directory with the following variables:
# Server Configuration
PORT=3000
NODE_ENV=development
FRONTEND_URL=http://localhost:5173
# Database Configuration
MONGO_URI=mongodb://localhost:27017/thinklm
# For MongoDB Atlas: mongodb+srv://username:password@cluster.mongodb.net/thinklm
# JWT Configuration
JWT_SECRET=your-super-secret-jwt-key-here
JWT_EXPIRY=7d
# OpenAI Configuration
OPENAI_API_KEY=sk-your-openai-api-key-here
# Qdrant Configuration
QDRANT_HOST=localhost
QDRANT_PORT=6333
QDRANT_API_KEY=your-qdrant-api-key-optional
# Email Configuration (for user verification)
MAILTRAP_HOST=smtp.mailtrap.io
MAILTRAP_PORT=2525
MAILTRAP_USERNAME=your-mailtrap-username
MAILTRAP_PASSWORD=your-mailtrap-password
MAILTRAP_SENDEREMAIL=noreply@thinklm.com
# Credit System Configuration
CHARACTERS_PER_TOKEN=4
TOKENS_PER_CREDIT=1000Create a .env file in the frontend directory:
# API Configuration
VITE_API_URL=http://localhost:3000/api/v1
# Application Configuration
VITE_APP_NAME=ThinkLM
VITE_APP_VERSION=1.0.0| Variable | Description | Required | Default |
|---|---|---|---|
PORT |
Backend server port | No | 3000 |
MONGO_URI |
MongoDB connection string | Yes | - |
JWT_SECRET |
Secret key for JWT tokens | Yes | - |
OPENAI_API_KEY |
OpenAI API key for AI features | Yes | - |
QDRANT_HOST |
Qdrant vector database host | No | localhost |
QDRANT_PORT |
Qdrant vector database port | No | 6333 |
MAILTRAP_HOST |
SMTP server host for emails | Yes | - |
MAILTRAP_USERNAME |
SMTP username | Yes | - |
MAILTRAP_PASSWORD |
SMTP password | Yes | - |
CHARACTERS_PER_TOKEN |
Characters per token estimate | No | 4 |
TOKENS_PER_CREDIT |
Tokens per credit conversion | No | 1000 |
-
Create an Account
- Visit the application URL
- Click "Get Started Free"
- Complete the registration process
- Verify your email address
-
Create Your First Notebook
- Log in to your dashboard
- Click "Create New Notebook"
- Give your notebook a name and description
- Click "Create Notebook"
-
Add Content
- Open your notebook
- Click "Add Content"
- Choose your content type:
- Upload PDF: Drag and drop or select PDF files
- Add Website: Enter a URL to extract content
- YouTube Video: Paste a YouTube URL for transcription
- Text Input: Paste or type text directly
-
Chat with Your Content
- Wait for content processing to complete
- Use the chat interface to ask questions
- Get intelligent answers with source citations
-
Monitor Your Usage
- Visit the Statistics page to track your usage
- Monitor credit consumption and data source limits
- View performance metrics and get usage insights
- Select multiple content sources for comprehensive answers
- Cross-reference information across different documents
- Get aggregated insights from multiple sources
- Create multiple notebooks for different projects
- Organize content by topic, subject, or project
- Manage content permissions and sharing
- Export chat conversations
- Share notebooks with team members
- Generate reports from your content
- Track credit consumption in real-time
- Monitor data source usage and limits
- View performance metrics and efficiency scores
- Get personalized usage recommendations
- Access detailed account activity logs
All API endpoints (except registration and login) require authentication via JWT tokens.
# Login to get token
curl -X POST http://localhost:3000/api/v1/users/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "password"}'
# Use token in subsequent requests
curl -X GET http://localhost:3000/api/v1/notebooks \
-H "Authorization: Bearer YOUR_JWT_TOKEN"POST /api/v1/users/register- User registrationGET /api/v1/users/verify/:token- Verify user emailPOST /api/v1/users/login- User loginGET /api/v1/users/logout- User logoutGET /api/v1/users/profile- Get user profilePUT /api/v1/users/profile- Update user profileGET /api/v1/users/stats- Get user statisticsPOST /api/v1/users/forgot-password- Request password resetPOST /api/v1/users/reset-password/:token- Reset password with tokenPOST /api/v1/users/change-password- Change password (authenticated)DELETE /api/v1/users/delete-account- Delete user account
GET /api/v1/notebooks- Get user notebooksPOST /api/v1/notebooks- Create new notebookGET /api/v1/notebooks/:id- Get specific notebookPUT /api/v1/notebooks/:id- Update notebookDELETE /api/v1/notebooks/:id- Delete notebook
POST /api/v1/content/upload- Upload PDF filePOST /api/v1/content/text- Add text contentPOST /api/v1/content/url- Add website content from URLPOST /api/v1/content/youtube- Add YouTube video contentGET /api/v1/content/:id- Get specific content detailsPUT /api/v1/content/:id- Update content (title only)DELETE /api/v1/content/:id- Delete content
POST /api/v1/chat/query- Send chat query
GET /api/health- API health check
All API responses follow a consistent format:
{
"success": true,
"message": "Operation completed successfully",
"data": {
// Response data here
}
}Error responses include detailed information:
{
"success": false,
"message": "Error description",
"error": {
"code": "ERROR_CODE",
"details": "Additional error details"
}
}We welcome contributions to ThinkLM! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests for new functionality
- Ensure all tests pass:
npm test - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow ESLint configuration
- Use Prettier for code formatting
- Write meaningful commit messages
- Add JSDoc comments for functions
- Follow React best practices
- Update documentation for new features
- Add or update tests as needed
- Ensure the build passes
- Request review from maintainers
- Address any feedback promptly
This project is licensed under the ISC License - see the LICENSE file for details.
Milind Kumar Sahu - @milindkusahu
Project Link: https://github.com/milindkusahu/ThinkLM
Built with ❤️ using modern web technologies
Transform your documents into intelligent conversations






