{"id":47597886,"url":"https://github.com/chitranklabs/ask-widget","last_synced_at":"2026-04-27T16:00:42.993Z","repository":{"id":345466487,"uuid":"1185929105","full_name":"chitranklabs/ask-widget","owner":"chitranklabs","description":"      A lightweight chat widget for developer portfolios. Drop-in floating chat with SSE streaming, dark/light themes, and configurable positioning. Aligned with the neutral zinc palette.","archived":false,"fork":false,"pushed_at":"2026-04-27T15:15:20.000Z","size":4693,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-27T15:17:07.382Z","etag":null,"topics":["ai","chat","chatbot","portfolio","rag","react","sse","streaming","widget"],"latest_commit_sha":null,"homepage":"https://ask-widget.chitrankagnihotri.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chitranklabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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},"funding":{"ko_fi":"D1D71U581P","custom":["https://www.paypal.com/paypalme/chitrank2050"]}},"created_at":"2026-03-19T04:42:42.000Z","updated_at":"2026-04-27T15:16:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chitranklabs/ask-widget","commit_stats":null,"previous_names":["chitrank2050/ask-widget","chitranklabs/ask-widget"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/chitranklabs/ask-widget","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chitranklabs%2Fask-widget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chitranklabs%2Fask-widget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chitranklabs%2Fask-widget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chitranklabs%2Fask-widget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chitranklabs","download_url":"https://codeload.github.com/chitranklabs/ask-widget/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chitranklabs%2Fask-widget/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32343571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai","chat","chatbot","portfolio","rag","react","sse","streaming","widget"],"created_at":"2026-04-01T18:29:26.590Z","updated_at":"2026-04-27T16:00:42.987Z","avatar_url":"https://github.com/chitranklabs.png","language":"TypeScript","funding_links":["https://ko-fi.com/D1D71U581P","https://www.paypal.com/paypalme/chitrank2050"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./assets/logo.png\" alt=\"ask-widget logo\"  width=\"200\" height=\"auto\" /\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n  \u003ch1\u003eask-widget 🤖\u003c/h1\u003e\n\n  \u003cp\u003eA state-of-the-art, lightweight chat widget for developer portfolios. Powered by \u003cstrong\u003eVite 8\u003c/strong\u003e and the \u003cstrong\u003eRolldown\u003c/strong\u003e engine for sub-5KB performance and perfect CSS isolation.\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://www.npmjs.com/package/@chitrank2050/ask-widget\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/@chitrank2050/ask-widget\" alt=\"npm\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://jsr.io/@chitrank2050/ask-widget\"\u003e\n    \u003cimg src=\"https://jsr.io/badges/@chitrank2050/ask-widget\" alt=\"JSR\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n  \u003ca href=\"https://github.com/chitranklabs/ask-widget/actions/workflows/ci.yml\"\u003e\n  \u003cimg src=\"https://github.com/chitranklabs/ask-widget/actions/workflows/ci.yml/badge.svg\" alt=\"CI 🌊\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/chitranklabs/ask-widget\"\u003e\n  \u003cimg src=\"https://codecov.io/gh/chitranklabs/ask-widget/branch/main/graph/badge.svg\" alt=\"codecov\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://bestpractices.coreinfrastructure.org/projects/1\"\u003e\n  \u003cimg src=\"https://bestpractices.coreinfrastructure.org/projects/1/badge\" alt=\"OpenSSF Best Practices\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/chitranklabs/ask-widget/actions/workflows/scorecard.yml\"\u003e\n  \u003cimg src=\"https://github.com/chitranklabs/ask-widget/actions/workflows/scorecard.yml/badge.svg\" alt=\"Scorecard Status\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://scorecard.dev/viewer/?uri=github.com/chitranklabs/ask-widget\"\u003e\n  \u003cimg src=\"https://api.scorecard.dev/projects/github.com/chitranklabs/ask-widget/badge\" alt=\"OpenSSF Scorecard\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/gitleaks/gitleaks\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Security-Gitleaks-brightgreen?logo=gitleaks\" alt=\"Security: Gitleaks\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/chitranklabs/ask-widget/attestations\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/SLSA-Level_3-blue?logo=slsa\" alt=\"SLSA Level 3\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"./LICENSE\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/chitranklabs/ask-widget\" alt=\"License\" /\u003e\n  \u003c/a\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n   \u003ca href=\"https://ko-fi.com/D1D71U581P\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://ko-fi.com/img/githubbutton_sm.svg\" alt=\"Buy me a coffee at ko-fi.com\"\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## 🚀 2027 Tech Stack\n\nThis project is built for the future of the web:\n\n- **Engine**: [Vite 8](https://vite.dev) + [Rolldown](https://rolldown.rs) (Rust-powered performance)\n- **Compiler**: SWC (Sub-millisecond React transformation)\n- **CSS**: Cascade Layers (`@layer`) + HSL Tokens (Zero global collisions)\n- **Runtime**: Dual ESM/CJS (Native support for Node, Bun, and Deno)\n- **Security**: SLSA Level 3 Provenance + Gitleaks protection\n\n---\n\n## ✨ Features\n\n- **SSE Streaming**: Built-in support for OpenAI-compatible streaming backends.\n- **Themeable**: Zinc-based design system with easy HSL overrides.\n- **Persistence**: Built-in session persistence across page reloads.\n\n---\n\n## 📖 Documentation \u0026 Demo\n\n- **Live Demo**: [ask-widget.chitrankagnihotri.com](https://ask-widget.chitrankagnihotri.com)\n- **API Reference**: [Automated Docs](https://chitranklabs.github.io/ask-widget/api)\n- **Theming Guide**: [Customizing Zinc](https://chitranklabs.github.io/ask-widget/theming)\n\n---\n\n## 📦 Quick Start\n\n```bash\npnpm add @chitrank2050/ask-widget\n```\n\n```tsx\nimport { ChatWidget } from '@chitrank2050/ask-widget';\nimport '@chitrank2050/ask-widget/style.css'; // Optimized CSS Layer styles\n\nexport default function App() {\n  return (\n    \u003cChatWidget\n      apiUrl=\"https://your-api.example.com\"\n      apiToken={import.meta.env.VITE_CHAT_API_TOKEN}\n      title=\"Ask AI\"\n    /\u003e\n  );\n}\n```\n\n---\n\n## 🛠️ Development\n\nWe use **pnpm** and **Lefthook** for a high-performance developer workflow.\n\n```bash\n# Install and setup\npnpm install\npnpm exec lefthook install\n\n# Run dev server\npnpm dev\n\n# Run automated tests (Vitest + SWC)\npnpm run test:coverage\n```\n\n---\n\n## 🚀 Release Process\n\nWe use a two-phase automated release pipeline powered by **[git-hygiene](https://github.com/chitranklabs/git-hygiene)**.\n\n1. **Prepare**: Run the `Release 1 - Prepare PR` workflow. It bumps the version in `package.json`, updates `CHANGELOG.md`, and opens a PR.\n2. **Finalize**: Merge the PR to `main`. The `Release 2 - Finalize Tag` workflow will automatically tag the release, create a GitHub Release, and publish to NPM.\n\n---\n\n## 🛡️ Security \u0026 Quality\n\n- **Secret Scanning**: Gitleaks prevents credential leaks in every commit.\n- **Workflow Auditing**: Zizmor ensures GitHub Actions follow security best practices.\n- **Supply Chain**: All GitHub Actions are pinned to secure commit SHAs.\n- **Provenace**: Automated build attestations for every release.\n\n---\n\nDeveloped with ❤️ by [Chitrank Agnihotri](https://www.chitrankagnihotri.com)\n\n_If you use this in your project, a credit or star is appreciated._ ✨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchitranklabs%2Fask-widget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchitranklabs%2Fask-widget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchitranklabs%2Fask-widget/lists"}