{"id":49614344,"url":"https://github.com/besidka/besidka","last_synced_at":"2026-05-04T20:41:14.270Z","repository":{"id":299883002,"uuid":"1002833952","full_name":"besidka/besidka","owner":"besidka","description":"Your digital besidka for all AI chats. Connect to any LLM using your API key. Open-source, private, and community-driven. Self-hosted solution.","archived":false,"fork":false,"pushed_at":"2026-05-04T15:57:04.000Z","size":5712,"stargazers_count":27,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-04T17:36:57.681Z","etag":null,"topics":["ai","besidka","better-auth","chat","cloudflare","daisyui","drizzle-orm","nuxt","resend","vercel-ai-sdk","workers"],"latest_commit_sha":null,"homepage":"https://besidka.ai","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/besidka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"AGENTS.md","dco":null,"cla":null},"funding":{"patreon":"besidka","ko_fi":"besidka","buy_me_a_coffee":"besidka"}},"created_at":"2025-06-16T08:06:04.000Z","updated_at":"2026-05-04T15:38:45.000Z","dependencies_parsed_at":"2025-07-08T19:27:06.184Z","dependency_job_id":"6e57862d-cf01-4625-8566-caa433eba38c","html_url":"https://github.com/besidka/besidka","commit_stats":null,"previous_names":["serhii-chernenko/chat","besidka/besidka"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/besidka/besidka","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/besidka%2Fbesidka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/besidka%2Fbesidka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/besidka%2Fbesidka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/besidka%2Fbesidka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/besidka","download_url":"https://codeload.github.com/besidka/besidka/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/besidka%2Fbesidka/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32624686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: 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":["ai","besidka","better-auth","chat","cloudflare","daisyui","drizzle-orm","nuxt","resend","vercel-ai-sdk","workers"],"created_at":"2026-05-04T20:41:13.396Z","updated_at":"2026-05-04T20:41:14.262Z","avatar_url":"https://github.com/besidka.png","language":"TypeScript","funding_links":["https://patreon.com/besidka","https://ko-fi.com/besidka","https://buymeacoffee.com/besidka"],"categories":[],"sub_categories":[],"readme":"# Besidka — AI Chat\n\nBring Your API Keys and Pay for What You Use.\n\n\u003cimg width=\"400\" alt=\"og-image\" src=\"https://github.com/user-attachments/assets/ce429ef9-f98d-40fa-9288-2c991346cdd2\" /\u003e\n\nMy detailed post in Twitter about the process of development:\u003cbr\u003e\nhttps://x.com/besidka_ai/status/1946685763183133001\n\n## Project\n\nProject board is available [here](https://github.com/orgs/besidka/projects/2).\n\n## How to try?\n\n1. You are welcome to visit the production site [www.besidka.com](https://www.besidka.com).\n2. Please choose any option of authentication such as Google sign in, GitHub sign in or more common way of the Email + Password flow.\n3. When you are authorized, please put your API keys there: [www.besidka.com/profile/keys](https://www.besidka.com/profile/keys).\n4. You are welcome to start a new chat: [https://www.besidka.com/chats/new](https://www.besidka.com/chats/new)\n\n## Tech stack\n\n- [Nuxt (Vue + Nitro + Cloudflare workers)](https://nuxt.com/)\n- [Drizzle ORM](https://orm.drizzle.team/)\n- [Better Auth](https://www.better-auth.com/)\n- [Resend](https://resend.com/)\n- [Daisy UI](https://daisyui.com/)\n- [Vercel AI SDK](https://ai-sdk.dev/docs)\n\n## Features\n\n- **PINK** — Dark and light themes, both unapologetically pink\n- **BYOK — Bring Your Own API Key** — Use your OpenAI or Google AI Studio keys and only pay for what you use. No subscriptions, no markup\n- **Multiple AI Models** — Switch between GPT-4o, Gemini and other LLMs in one place\n- **Web Search** — Ground AI answers with real-time web context\n- **Reasoning Mode** — Step-by-step thinking for complex questions\n- **File Attachments \u0026 File Manager** — Send images and PDFs, reuse files across chats\n- **Chat Branching** — Fork a conversation mid-thread to explore a different direction\n- **Projects** — Organize chats with shared instructions and memory\n- **Resumable Streams** — Refresh the page and pick up right where you left off\n- **Chat History** — Search, pin and rename past conversations\n- **Syntax Highlighting** — Clean, readable code blocks out of the box\n- **No Install Required** — Works in any browser, sign in and go\n- **Better Auth** — Email/password, Google or GitHub sign-in\n\n## OAuth troubleshooting\n\n### Social OAuth in in-app browsers\n\n- **Symptom:** Google or GitHub social sign-in is unavailable, or Google shows\n  `403: disallowed_useragent`.\n- **Cause:** The app is opened in an embedded/in-app browser\n  (for example Threads, Instagram, Facebook, TikTok), and OAuth providers\n  may block these user agents.\n- **Resolution:** Open the same page in your system browser\n  (Chrome/Safari/Firefox) and try again with social sign-in.\n- **Config sanity check:** Ensure your Google OAuth app has this redirect URI:\n  `https://\u003cyour-domain\u003e/api/auth/callback/google`\n\n## Local installation\n\nPay your attention that the project is designed to run on Cloudflare Workers. It requires additional steps to run it via Cloudflare Workers preview or deploy to the production environment.\n\nThe steps below are for local development only for the quick start and check.\n\n### Prerequisites\n\n- [PNPM](https://pnpm.io/)\n  \n### Steps\n\nClone the repository.\n\n```bash\ngit clone git@github.com:besidka/besidka.git\n```\n\nGo to the project directory. Install the dependencies.\n\n```bash\ncd besidka\npnpm install\n```\n\nCopy ENV related files.\n```bash\ncp .dev.vars.example .dev.vars\n```\n\nGenerate environment types for the project.\n```bash\npnpm run cf-typegen\n```\n\nPrepare drizzle migrations.\n```bash\n# Expected output is .drizzle/migrations/*.sql\npnpm run db:generate\n```\n\nApply the migrations to the D1 database.\n```bash\n# Expected output is .wrangler/state/v3/d1/*.sqlite\npnpx wrangler d1 migrations apply DB\n```\n\nStart the development server.\n```bash\npnpm run dev\n```\n\nor to start Cloudflare Workers preview server\n```bash\npnpm run preview\n```\n\n1. Open [http://localhost:3000](http://localhost:3000) in your browser.\n2. Sign up [http://localhost:3000/signup](http://localhost:3000/signup). Please use the Email + Password flow because you don't have prepared API keys for Google and GitHub OAuth yet. In development mode you don't need to wait for email confirmation. You have to be automatically redirected to the home page as a customer already.\n3. Put your own API keys here: [http://localhost:3000/profile/keys](http://localhost:3000/profile/keys)\n4. You are welcome to start a new chat: [http://localhost:3000/chats/new](http://localhost:3000/chats/new)\n\n## Security\n\n### Snyk code checking repository\n\n- [Snyk](https://snyk.io/) is a tool for finding and fixing vulnerabilities in your code.\n\n```bash\n# Total issues: 0\nsnyk code test\n```\n\n\u003cimg width=\"400\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4ab122b3-bf06-4012-b9b3-fcc6ada029c5\" /\u003e\n\n\n## Preview\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth colspan=\"2\"\u003e\n        Light theme\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cimg width=\"2070\" height=\"1836\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f656ba5c-7f7d-45ec-b43f-7b956df7a9f8\" /\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg width=\"748\" height=\"1638\" alt=\"image\" src=\"https://github.com/user-attachments/assets/88b40b26-7126-43fe-91f0-3566ffbd656d\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n    \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth colspan=\"2\"\u003e\n        Dark theme\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n        \u003cimg width=\"2080\" height=\"1832\" alt=\"image\" src=\"https://github.com/user-attachments/assets/455dc66e-ee43-49b3-bfbc-2e9192ba3d9e\" /\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg width=\"750\" height=\"1642\" alt=\"image\" src=\"https://github.com/user-attachments/assets/5d39986b-3f03-44f1-9f75-9182472dc8a9\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbesidka%2Fbesidka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbesidka%2Fbesidka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbesidka%2Fbesidka/lists"}