{"id":44378815,"url":"https://github.com/sequenzia/mamba-chat","last_synced_at":"2026-02-11T21:36:57.647Z","repository":{"id":334467314,"uuid":"1137786849","full_name":"sequenzia/mamba-chat","owner":"sequenzia","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-25T03:44:33.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-25T12:40:41.568Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sequenzia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-19T20:48:15.000Z","updated_at":"2026-01-25T03:44:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sequenzia/mamba-chat","commit_stats":null,"previous_names":["sequenzia/mamba-chat"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/sequenzia/mamba-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequenzia%2Fmamba-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequenzia%2Fmamba-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequenzia%2Fmamba-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequenzia%2Fmamba-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sequenzia","download_url":"https://codeload.github.com/sequenzia/mamba-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequenzia%2Fmamba-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29345694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-11T21:36:56.671Z","updated_at":"2026-02-11T21:36:57.637Z","avatar_url":"https://github.com/sequenzia.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mamba Chat\n\nA modern, feature-rich AI chatbot application built with React and TypeScript. Mamba Chat provides a streaming chat interface with rich content blocks, offline-first persistence, and a pluggable architecture for AI backend integration. Currently configured to connect to a mamba-server backend.\n\n---\n\n## Overview\n\nMamba Chat is a modular Single-Page Application (SPA) that delivers a polished conversational AI experience. The architecture emphasizes clean separation of concerns through a service layer pattern for AI abstraction, repository pattern via custom hooks for data access, and context-based state management.\n\n### Key Features\n\n- **Streaming Chat Interface** - Real-time streaming responses with character-by-character display\n- **Rich Content Blocks** - Interactive forms, charts, code snippets, and cards rendered from AI tool calls\n- **Offline-First Persistence** - IndexedDB storage for conversations and messages via Dexie\n- **Multi-Model Support** - Architecture supports switching between AI providers and models\n- **Theme Support** - Dark/light mode with flash prevention\n- **Responsive Design** - Mobile-first with adaptive layouts\n- **Auto Title Generation** - Automatically generates conversation titles from context\n\n---\n\n## Tech Stack\n\n| Category | Technologies |\n|----------|--------------|\n| Language | TypeScript 5.0 |\n| Framework | React 18.3.1, Vite 6.0 |\n| AI Integration | @ai-sdk/react, ai SDK |\n| Database | Dexie 4.2.1 (IndexedDB) |\n| UI Components | Radix UI, Material UI 7.3.5, shadcn/ui (49 components) |\n| Styling | TailwindCSS 4.0, Emotion, class-variance-authority |\n| Animation | motion 12.23.24 |\n| Forms | React Hook Form 7.55.0, Zod 3.23.0 |\n| Charts | Recharts 2.15.2 |\n| Code Highlighting | Shiki 3.20.0 |\n\n---\n\n## Project Structure\n\n```\nmamba-chat/\n├── src/\n│   ├── components/          # React components\n│   │   ├── ai-elements/     # AI SDK UI elements (10 files)\n│   │   ├── blocks/          # Content block components (5 files)\n│   │   ├── chat/            # Core chat components (5 files)\n│   │   ├── layout/          # Layout components (Sidebar)\n│   │   ├── providers/       # Context providers (ThemeProvider)\n│   │   └── ui/              # shadcn/ui components (49 files)\n│   ├── hooks/               # Custom React hooks (7 files)\n│   ├── lib/                 # Utility libraries\n│   │   ├── ai/              # AI configs (models, prompts, tools)\n│   │   ├── db/              # Dexie IndexedDB schema and types\n│   │   ├── motion/          # Animation utilities\n│   │   └── utils/           # General utilities\n│   ├── pages/               # Page components\n│   ├── services/            # Business logic services\n│   │   └── chat/            # Chat service layer (mock/real/transport)\n│   ├── styles/              # CSS files\n│   ├── types/               # TypeScript type definitions\n│   └── constants/           # Application constants\n├── public/                  # Static assets\n└── internal/                # Internal documentation\n```\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n- pnpm (recommended)\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/your-username/mamba-chat.git\n   cd mamba-chat\n   ```\n\n2. Install dependencies:\n   ```bash\n   pnpm install\n   ```\n\n3. Create environment configuration:\n   ```bash\n   cp .env.example .env.local\n   ```\n\n4. Start the development server:\n   ```bash\n   pnpm dev\n   ```\n\n5. Open [http://localhost:5173](http://localhost:5173) in your browser.\n\n---\n\n## Configuration\n\nCreate a `.env.local` file from `.env.example` and configure the following variables:\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `VITE_USE_MOCK_CHAT` | Enable mock backend (set `false` for real backend) | `true` |\n| `VITE_API_BASE_URL` | Backend API URL (when mock disabled) | `http://localhost:8000` |\n| `VITE_MOCK_STREAM_DELAY_MS` | Character streaming delay in milliseconds | `25` |\n| `VITE_AI_DEFAULT_MODEL` | Default AI model identifier | `openai/gpt-4o` |\n| `VITE_AI_DEBUG_ON` | Enable debug logging | `false` |\n\n**Backend Modes:**\n- **Mock Mode** (`VITE_USE_MOCK_CHAT=true`): Uses simulated AI responses for development without a backend\n- **Real Mode** (`VITE_USE_MOCK_CHAT=false`): Connects to mamba-server backend at the configured URL\n\n---\n\n## Available Scripts\n\n| Command | Description |\n|---------|-------------|\n| `pnpm dev` | Start development server on port 5173 |\n| `pnpm build` | Build for production |\n| `pnpm preview` | Preview production build locally |\n| `pnpm lint` | Run ESLint for code quality checks |\n| `pnpm test` | Run tests with Vitest |\n| `pnpm test:ui` | Run tests with Vitest UI |\n\n---\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsequenzia%2Fmamba-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsequenzia%2Fmamba-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsequenzia%2Fmamba-chat/lists"}