Skip to content
/ doc0 Public

Chat with your favorite documentation and get accurate results with source links

License

Notifications You must be signed in to change notification settings

sreehariX/doc0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is the main source code repository for doc0, an AI-powered documentation chat interface that allows users to interact with technical documentation giving accurate results.

Why doc0?

  • Smart Documentation Search: Leverages ChromaDB for semantic search across multiple framework documentations
  • Multi-Framework Support: Currently supports Kestra, React, Next.js, Astro, and Redux documentation
  • Accurate results: Give accurate results with latest documentation including source links
  • Authentication Google OAuth integration with request limiting for free users

Did not won wemakedevs Hackathon

  • Took all the servers downs there are costing too much
  • But i was a good experience

Youtube demo video

Doc0 Demo

Quick Start

  1. Clone the repository
  2. Follow the Installation Guide
  3. Start developing with npm run dev for frontend and uvicorn main:app --reload for backend

Prerequisites

  • Node.js (v18+)
  • Python (v3.8+)
  • Google OAuth credentials
  • Gemini API key
  • ChromaDB server

Installation

Frontend Setup

  1. Clone & Navigate

    git clone https://github.com/sreehariX/doc0
    cd frontend
  2. Install Dependencies

    npm install
  3. Configure Environment Variables Create a .env file in the frontend directory:

    VITE_GOOGLE_CLIENT_ID=your_google_client_id
  4. Start Development Server

    npm run dev

Backend Setup

  1. Navigate to Backend Directory

    cd fastapi
  2. Create & Activate Virtual Environment

    python -m venv venv
    source venv/bin/activate  # On Windows: .\venv\Scripts\activate
  3. Install Dependencies

    pip install -r requirements.txt
  4. Configure Environment Variables Create a .env file in the backend directory:

    GEMINI_API_KEY=your_gemini_api_key
    CHROMA_SERVER_HOST=your_chromadb_server_url
  5. Start Development Server

    uvicorn main:app --reload

Features

Documentation Search

  • Semantic search powered by ChromaDB
  • Support for multiple framework documentations
  • Gives most accurate summary response

Authentication & Rate Limiting

  • Google OAuth integration
  • 10 free requests per day for non-authenticated users
  • Unlimited requests for authenticated users until we run out of google credits

Modern UI Features

  • Responsive design for all devices
  • Code syntax highlighting

Tech Stack

Frontend

  • React with TypeScript
  • Tailwind CSS for styling
  • Framer Motion for animations
  • Zustand for state management

Backend

  • FastAPI
  • ChromaDB for vector search
  • Google Gemini AI for response generation
  • Python scrapers for documentation collection

Hosting

  • Kestra is hosted on azure vm 16gb 2vcpu using docker
  • Chromadb is also hosted on azure vm 16gb 2vcpu using docker
  • Fastapi is hosted on azure vm 8gb 2vcpu using apache server for configuration
  • Frontend vite+react+typescript is deployed on vercel

Kestra

  • By using kestra we are automating the vectore embedding proecess
  • Whenever i upload a file in azure blob storage it will trigger kestra to run a flow
  • The flow execution will connect to chromadb server and make the chromadb embedded collection of the csv file Screenshot 2024-12-01 233229

Documentation Scraping

The project includes custom scrapers for:

  • React documentation
  • Next.js documentation
  • Redux documentation
  • Astro documentation
  • Kestra documentation

Each scraper out is csv file using that you can embed in vector database.

Contributing

We welcome contributions! Please see commit your messages properly

License

MIT License

About

Chat with your favorite documentation and get accurate results with source links

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published