Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 154 additions & 80 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

<p>
<a href="#-quick-start">Quick Start</a> β€’
<a href="#-screenshots">Screenshots</a> β€’
<a href="#-features">Features</a> β€’
<a href="#-installation-guide">Installation</a> β€’
<a href="#-api-documentation">API Docs</a> β€’
Expand All @@ -40,6 +41,7 @@
## πŸ“– Table of Contents

- [πŸ”₯ Overview](#-overview)
- [πŸ“Έ Screenshots](#-screenshots)
- [✨ Features](#-features)
- [🧠 AI Model Support](#-ai-model-support)
- [πŸ“š RAG: Train with Your Own Data](#-rag-train-with-your-own-data)
Expand Down Expand Up @@ -100,6 +102,47 @@

---

## πŸ“Έ Screenshots

### Chat Interface

<div align="center">
<img src="assets/screenshots/chat-interface.png" alt="LocalMind Chat Interface" width="800"/>
<p><em>Clean, intuitive chat interface with multi-model support</em></p>
</div>

### Model Selection

<div align="center">
<img src="assets/screenshots/model-selection.png" alt="AI Model Selection" width="800"/>
<p><em>Easily switch between local and cloud AI models</em></p>
</div>

### RAG Dataset Upload

<div align="center">
<img src="assets/screenshots/rag-upload.png" alt="RAG Dataset Upload" width="800"/>
<p><em>Upload and process your own data for custom AI training</em></p>
</div>

### Dashboard

<div align="center">
<img src="assets/screenshots/dashboard.png" alt="User Dashboard" width="800"/>
<p><em>Monitor usage, manage models, and configure settings</em></p>
</div>

### Real-Time Streaming

<div align="center">
<img src="assets/screenshots/streaming-response.png" alt="Streaming Responses" width="800"/>
<p><em>Watch AI responses stream in real-time for better UX</em></p>
</div>

> **Note:** Screenshots showcase the latest version. Your interface may vary depending on customization and theme settings.

---

## ✨ Features

### 🧠 AI Model Support
Expand Down Expand Up @@ -643,99 +686,130 @@ git commit --no-verify
```
LocalMind/
β”‚

β”œβ”€β”€ server/ # Backend application
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ config/ # Configuration files
β”‚ β”‚ β”œβ”€β”€ controllers/ # Request handlers
β”‚ β”‚ β”œβ”€β”€ middleware/ # Express middleware
β”‚ β”‚ β”œβ”€β”€ models/ # Database models
β”‚ β”‚ β”œβ”€β”€ routes/ # API routes
β”‚ β”‚ β”œβ”€β”€ services/ # Business logic
β”‚ β”‚ β”‚ β”œβ”€β”€ ai/ # AI provider integrations
β”‚ β”‚ β”‚ β”œβ”€β”€ rag/ # RAG implementation
β”‚ β”‚ β”‚ └── tunnel/ # Tunnel services
β”‚ β”‚ β”œβ”€β”€ utils/ # Helper functions
β”‚ β”‚ β”œβ”€β”€ validators/ # Input validation
β”‚ β”‚ └── index.ts # Entry point
β”‚ β”œβ”€β”€ tests/ # Test files
β”‚ β”œβ”€β”€ .env.example # Environment template
β”‚ β”œβ”€β”€ package.json
β”‚ └── tsconfig.json
β”‚
β”œβ”€β”€ client/ # Frontend application
β”‚ β”œβ”€β”€ public/ # Static assets
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ assets/ # Images, fonts, etc.
β”‚ β”‚ β”œβ”€β”€ components/ # React components
β”‚ β”‚ β”‚ β”œβ”€β”€ chat/
β”‚ β”‚ β”‚ β”œβ”€β”€ upload/
β”‚ β”‚ β”‚ └── settings/
β”‚ β”‚ β”œβ”€β”€ hooks/ # Custom React hooks
β”‚ β”‚ β”œβ”€β”€ pages/ # Page components
β”‚ β”‚ β”œβ”€β”€ services/ # API client
β”‚ β”‚ β”œβ”€β”€ store/ # State management
β”‚ β”‚ β”œβ”€β”€ styles/ # CSS/SCSS files
β”‚ β”‚ β”œβ”€β”€ types/ # TypeScript types
β”‚ β”‚ β”œβ”€β”€ utils/ # Helper functions
β”‚ β”‚ β”œβ”€β”€ App.tsx # Root component
β”‚ β”‚ └── main.tsx # Entry point
β”‚ β”œβ”€β”€ .env.example
β”‚ β”œβ”€β”€ package.json
β”‚ β”œβ”€β”€ tsconfig.json
β”‚ └── vite.config.ts
β”œβ”€β”€ assets/ # Project assets and media
β”‚ β”œβ”€β”€ Banner_LocalMind.png # Main banner image
β”‚ └── screenshots/ # Application screenshots for documentation
β”‚ β”œβ”€β”€ chat-interface.png
β”‚ β”œβ”€β”€ model-selection.png
β”‚ β”œβ”€β”€ rag-upload.png
β”‚ β”œβ”€β”€ dashboard.png
β”‚ └── streaming-response.png
β”‚
β”œβ”€β”€ docs/ # Documentation
β”œβ”€β”€ scripts/ # Utility scripts
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ .gitignore
β”œβ”€β”€ LICENSE
└── README.md
=======
β”œβ”€β”€ assets/
β”‚ └── Banner_LocalMind.png
β”‚
β”œβ”€β”€ LocalMind-Backend/
β”œβ”€β”€ LocalMind-Backend/ # Backend Node.js/Express application
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ └── ... (backend source code)
β”‚ β”‚
β”‚ β”œβ”€β”€ types/
β”‚ β”‚ └── ... (TypeScript types)
β”‚ β”‚
β”‚ β”œβ”€β”€ .env.example
β”‚ β”‚ β”œβ”€β”€ api/
β”‚ β”‚ β”‚ └── v1/ # API v1 routes and controllers
β”‚ β”‚ β”‚ β”œβ”€β”€ Ai-model/ # AI model integrations
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Google/ # Google Gemini integration
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Groq/ # Groq integration
β”‚ β”‚ β”‚ β”‚ └── Ollama/ # Ollama local models
β”‚ β”‚ β”‚ β”œβ”€β”€ AiModelConfig/ # AI configuration management
β”‚ β”‚ β”‚ β”œβ”€β”€ DataSet/ # Dataset upload & management
β”‚ β”‚ β”‚ └── user/ # User authentication & management
β”‚ β”‚ β”œβ”€β”€ config/ # Configuration files
β”‚ β”‚ β”‚ └── mongoose.connection.ts
β”‚ β”‚ β”œβ”€β”€ constant/ # Application constants
β”‚ β”‚ β”‚ β”œβ”€β”€ env.constant.ts
β”‚ β”‚ β”‚ └── Status.constant.ts
β”‚ β”‚ β”œβ”€β”€ data/ # Sample data files
β”‚ β”‚ β”‚ └── Sample.csv
β”‚ β”‚ β”œβ”€β”€ doc/ # API documentation
β”‚ β”‚ β”œβ”€β”€ routes/ # Route aggregation
β”‚ β”‚ β”‚ └── app.ts
β”‚ β”‚ β”œβ”€β”€ Template/ # AI prompt templates
β”‚ β”‚ β”‚ └── v1/
β”‚ β”‚ β”‚ β”œβ”€β”€ Ai.template.ts
β”‚ β”‚ β”‚ └── text/
β”‚ β”‚ β”œβ”€β”€ utils/ # Utility functions
β”‚ β”‚ β”‚ └── SendResponse.utils.ts
β”‚ β”‚ β”œβ”€β”€ validator/ # Input validation schemas
β”‚ β”‚ β”‚ └── env.ts
β”‚ β”‚ └── server.ts # Application entry point
β”‚ β”œβ”€β”€ types/ # TypeScript type definitions
β”‚ β”‚ └── express.d.ts
β”‚ β”œβ”€β”€ .env.example # Environment variables template
β”‚ β”œβ”€β”€ .gitignore
β”‚ β”œβ”€β”€ .prettierignore
β”‚ β”œβ”€β”€ .prettierrc
β”‚ β”œβ”€β”€ a.md
β”‚ β”œβ”€β”€ jest.config.ts
β”‚ β”œβ”€β”€ jest.config.ts # Jest testing configuration
β”‚ β”œβ”€β”€ package.json
β”‚ β”œβ”€β”€ pnpm-lock.yaml
β”‚ β”œβ”€β”€ setup-cloudflare.sh
β”‚ β”œβ”€β”€ tsconfig.json
β”‚ β”œβ”€β”€ setup-cloudflare.sh # Cloudflare tunnel setup script
β”‚ └── tsconfig.json # TypeScript configuration
β”‚
β”œβ”€β”€ LocalMind-Frontend/
β”‚ β”œβ”€β”€ public/
β”‚ β”‚ └── ... (static assets)
β”‚ β”‚
β”œβ”€β”€ LocalMind-Frontend/ # Frontend React application
β”‚ β”œβ”€β”€ public/ # Static assets served directly
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ └── ... (React code)
β”‚ β”‚
β”‚ β”‚ β”œβ”€β”€ app/ # Core application components
β”‚ β”‚ β”‚ β”œβ”€β”€ css/
β”‚ β”‚ β”‚ β”‚ └── global.css # Global styles
β”‚ β”‚ β”‚ β”œβ”€β”€ routes/ # Route definitions
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ AdminRoutes.tsx
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ AppRoutes.tsx
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ PrivateRoute.tsx
β”‚ β”‚ β”‚ β”‚ └── UserRoutes.tsx
β”‚ β”‚ β”‚ β”œβ”€β”€ store/ # State management
β”‚ β”‚ β”‚ β”‚ └── store.ts
β”‚ β”‚ β”‚ └── App.tsx # Root component
β”‚ β”‚ β”œβ”€β”€ assets/ # Images, fonts, icons
β”‚ β”‚ β”‚ └── Fonts/
β”‚ β”‚ β”œβ”€β”€ constants/ # Frontend constants
β”‚ β”‚ β”œβ”€β”€ core/ # Core utilities
β”‚ β”‚ β”œβ”€β”€ features/ # Feature-based modules
β”‚ β”‚ β”‚ β”œβ”€β”€ Dashboard/
β”‚ β”‚ β”‚ β”‚ └── V1/
β”‚ β”‚ β”‚ └── Homepage/
β”‚ β”‚ β”‚ └── V1/
β”‚ β”‚ β”‚ β”œβ”€β”€ Components/
β”‚ β”‚ β”‚ └── Homepage.tsx
β”‚ β”‚ β”œβ”€β”€ hooks/ # Custom React hooks
β”‚ β”‚ β”œβ”€β”€ shared/ # Shared components
β”‚ β”‚ β”‚ └── component/
β”‚ β”‚ β”‚ └── v1/
β”‚ β”‚ β”‚ β”œβ”€β”€ Card.tsx
β”‚ β”‚ β”‚ └── Navbar.tsx
β”‚ β”‚ β”œβ”€β”€ types/ # TypeScript interfaces
β”‚ β”‚ β”‚ └── Interfaces.ts
β”‚ β”‚ └── index.tsx # Application entry point
β”‚ β”œβ”€β”€ .gitignore
β”‚ β”œβ”€β”€ eslint.config.js
β”‚ β”œβ”€β”€ index.html
β”‚ β”œβ”€β”€ eslint.config.js # ESLint configuration
β”‚ β”œβ”€β”€ index.html # HTML template
β”‚ β”œβ”€β”€ package.json
β”‚ β”œβ”€β”€ pnpm-lock.yaml
β”‚ β”œβ”€β”€ tsconfig.app.json
β”‚ β”œβ”€β”€ tsconfig.json
β”‚ β”œβ”€β”€ tsconfig.node.json
β”‚ β”œβ”€β”€ vite.config.ts
β”‚ β”œβ”€β”€ README.md
β”‚ β”œβ”€β”€ tsconfig.app.json # TypeScript app config
β”‚ β”œβ”€β”€ tsconfig.json # TypeScript base config
β”‚ β”œβ”€β”€ tsconfig.node.json # TypeScript Node config
β”‚ └── vite.config.ts # Vite build configuration
β”‚
β”œβ”€β”€ Contributing.md
β”œβ”€β”€ LICENSE
└── README.md


```
β”œβ”€β”€ .gitignore # Git ignore rules
β”œβ”€β”€ Contributing.md # Contribution guidelines
β”œβ”€β”€ docker-compose.yml # Docker Compose configuration
β”œβ”€β”€ dockerfile.md # Dockerfile documentation
β”œβ”€β”€ env.example # Root environment template
β”œβ”€β”€ LICENSE # MIT License
β”œβ”€β”€ package.json # Root package.json (workspace)
└── README.md # This file
```

### Directory Purpose Explanation

#### Backend (`LocalMind-Backend/`)

- **`src/api/v1/`** β€” Versioned API routes, controllers, and services
- **`src/config/`** β€” Database connections and app configuration
- **`src/constant/`** β€” Environment variables and status codes
- **`src/Template/`** β€” AI system prompts and templates
- **`src/utils/`** β€” Helper functions for responses, validation
- **`types/`** β€” TypeScript type extensions and declarations

#### Frontend (`LocalMind-Frontend/`)

- **`src/app/`** β€” Application shell, routing, and global state
- **`src/features/`** β€” Feature-based architecture (Dashboard, Homepage, etc.)
- **`src/shared/`** β€” Reusable UI components (Card, Navbar)
- **`src/hooks/`** β€” Custom React hooks for logic reuse
- **`src/types/`** β€” TypeScript interfaces and types

---

Expand Down
92 changes: 92 additions & 0 deletions assets/screenshots/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# LocalMind Screenshots

This directory contains screenshots for the project README.

## Required Screenshots

Please add the following screenshots to properly showcase LocalMind:

### 1. chat-interface.png
- **Description:** Main chat interface showing a conversation with an AI model
- **Recommended size:** 1600x1000px
- **Content should show:**
- Message history with user and AI responses
- Clean, modern UI design
- Model selector visible
- Input box at the bottom

### 2. model-selection.png
- **Description:** Model selection dropdown or modal
- **Recommended size:** 1600x900px
- **Content should show:**
- List of available local models (Ollama)
- List of cloud models (Gemini, GPT, Groq)
- Current selected model highlighted
- Model descriptions

### 3. rag-upload.png
- **Description:** RAG dataset upload interface
- **Recommended size:** 1600x900px
- **Content should show:**
- File upload area (drag & drop)
- Supported file formats (Excel, CSV, Word, PDF)
- Upload progress or success state
- List of uploaded datasets

### 4. dashboard.png
- **Description:** User dashboard/analytics
- **Recommended size:** 1600x1000px
- **Content should show:**
- Usage statistics (tokens, messages)
- Active models
- Recent conversations
- System status indicators

### 5. streaming-response.png
- **Description:** Real-time streaming response
- **Recommended size:** 1600x900px
- **Content should show:**
- AI response appearing in real-time
- Typing indicator or streaming animation
- Partial response being generated

## Image Guidelines

- **Format:** PNG (with transparency if needed) or JPG
- **Quality:** High resolution (1600px width minimum)
- **Compression:** Optimize for web (keep under 500KB per image)
- **Theme:** Match the project's design system
- **Privacy:** Ensure no sensitive data is visible

## How to Capture Screenshots

1. **Run LocalMind locally:**
```bash
cd LocalMind-Frontend && pnpm dev
cd LocalMind-Backend && pnpm dev
```

2. **Use browser tools:** Chrome DevTools device emulation for consistent sizing

3. **Clean UI:** Remove any test data, use professional examples

4. **Lighting:** Ensure good contrast and readability

5. **Edit if needed:** Use tools like:
- macOS: Preview, Pixelmator
- Windows: Paint, GIMP
- Online: Photopea, Canva

## Current Status

- [ ] chat-interface.png
- [ ] model-selection.png
- [ ] rag-upload.png
- [ ] dashboard.png
- [ ] streaming-response.png

## Placeholder Images

Until real screenshots are available, you can use placeholder services:
- https://placehold.co/1600x1000/1a1a2e/16213e?text=Chat+Interface
- Or create simple mockups with Figma/Canva