A full-stack AI chat application featuring real-time messaging, file ingestion, and vector search capabilities. Optimized for speed, reliability, and seamless AI interactions.
- AI Chat Interface: Interactive chat with AI models.
- File Ingestion: Upload and process documents (PDF, Docx, TXT) for context-aware responses.
- Vector Search: Semantic search powered by Pinecone and Google Gemini embeddings.
- Authentication: Secure user authentication via Clerk.
- Background Processing: Asynchronous file processing with BullMQ workers.
- Infrastructure: Containerized development environment with Docker.
- Node.js (v24+)
- pnpm (v10+)
- Docker & Docker Compose
-
Clone the Repository
git clone https://github.com/sunjay-dev/sleek-ai.git cd sleek-ai -
Install Dependencies
pnpm install
-
Environment Configuration
Copy the
.env.examplefile to.envin the backend directory and fill in your secrets.cp apps/backend/.env.example apps/backend/.env
-
Start Infrastructure (Redis/Postgres)
docker compose up -d redis
-
Database Migration
pnpm --filter @app/db prisma:migrate
-
Run Development Servers
pnpm dev
This will start all services via Turborepo.
This is a Turborepo monorepo containing:
apps/frontend/: Vite + React application with Tailwind CSS.apps/backend/: Hono.js API server serving the frontend and handling chat logic, authentication, and job dispatching.apps/worker/: BullMQ-based background worker for processing file metadata and vector embeddings.packages/shared/: Shared TypeScript types, schemas, and utility functions.packages/db/: Prisma schema and database client.packages/typescript-config/: Shared TypeScript configurations.
| Command | Description |
|---|---|
pnpm dev |
Start all services in development mode |
pnpm build |
Build all packages |
pnpm lint |
Lint with oxlint |
pnpm format |
Check formatting with oxfmt |
pnpm format:fix |
Auto-fix formatting |
# Build and run everything
docker compose up --build
# Or run in detached mode
docker compose up -dSee CONTRIBUTING.md for guidelines on how to contribute to this project.

