diff --git a/README.md b/README.md index 2decd32..e355545 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@

Quick Start • + ScreenshotsFeaturesInstallationAPI Docs • @@ -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) @@ -100,6 +102,47 @@ --- +## 📸 Screenshots + +### Chat Interface + +

+ LocalMind Chat Interface +

Clean, intuitive chat interface with multi-model support

+
+ +### Model Selection + +
+ AI Model Selection +

Easily switch between local and cloud AI models

+
+ +### RAG Dataset Upload + +
+ RAG Dataset Upload +

Upload and process your own data for custom AI training

+
+ +### Dashboard + +
+ User Dashboard +

Monitor usage, manage models, and configure settings

+
+ +### Real-Time Streaming + +
+ Streaming Responses +

Watch AI responses stream in real-time for better UX

+
+ +> **Note:** Screenshots showcase the latest version. Your interface may vary depending on customization and theme settings. + +--- + ## ✨ Features ### 🧠 AI Model Support @@ -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 --- diff --git a/assets/screenshots/README.md b/assets/screenshots/README.md new file mode 100644 index 0000000..54ecc4d --- /dev/null +++ b/assets/screenshots/README.md @@ -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