{"repo": "christianfonseca03/keshai", "files": {"README.md": {"872414cf2b51f70a0fa3026e5eb0487394460c92": {"t": 1785747259.746201, "n": 6291, "h": "748e7b5e22ac68f2", "c": "# KeshAI\n\n> Todas as suas IAs em uma única plataforma.\n\nKeshAI é uma plataforma web onde o usuário conversa com diversos modelos de\ninteligência artificial (GPT-4o, Claude, Gemini, Llama, DeepSeek, Grok,\nPerplexity Sonar e outros) a partir de uma única conta — sem trocar de aba e sem\nmanter várias assinaturas paralelas.\n\nO modelo de negócio é **pré-pago por uso**: o usuário compra créditos via Stripe\ne cada mensagem é cobrada conforme o modelo escolhido e a quantidade de tokens\nconsumida. Não há mensalidade obrigatória, os créditos não expiram e, quando o\nsaldo zera, o uso é pausado automaticamente.\n\n---\n\n## O que o projeto faz\n\n- **Landing page** que apresenta a proposta, os modelos disponíveis e os pacotes\n de crédito.\n- **Autenticação** completa (login/cadastro) via [Clerk](https://clerk.com).\n- **Chat com streaming** em tempo real, intermediado pela\n [OpenRouter](https://openrouter.ai), com seletor de modelo, histórico de\n conversas e markdown nas respostas.\n- **Cobrança por token**: cada resposta debita créditos do saldo do usuário, com\n margem aplicada sobre o custo real da API.\n- **Compra de créditos** via Stripe Checkout, com confirmação por webhook.\n- **Dashboard financeiro** (somente admin) com receita, custo, lucro e valor de\n saque seguro.\n\n---\n\n## Stack\n\n| Camada | Tecnologia |\n| ----------------- | ----------------------------------------------------- |\n| Framework | Next.js 16 (App Router) + React 19 |\n| Linguagem | TypeScript |\n| Estilo | Tailwind CSS 4 |\n| Banco de dados | PostgreSQL (Neon serverless) via Prisma 7 |\n| Autenticação | Clerk |\n| Pagamentos | Stripe (Checkout + Webhooks) |\n| Gateway de IA | OpenRouter |\n| Webhooks (verify) | Svix |\n\n> ⚠️ **Atenção:** este projeto usa uma versão do Next.js com mudanças que podem\n> diferir do que você conhece. Consulte os guias em\n> `node_modules/next/dist/docs/` antes de alterar APIs ou convenções do\n> framework. Veja também o [AGENTS.md](AGENTS.md).\n\n---\n\n## Pré-requisitos\n\n- **Node.js** 20 ou superior\n- **npm** (ou pnpm/yarn/bun)\n- Um banco **PostgreSQL** (recomendado: [Neon](https://neon.tech))\n- Contas em **Clerk**, **Stripe** e **OpenRouter**\n\n---\n\n## Instalação\n\n### 1. Clone o repositório\n\n```bash\ngit clone \ncd keshai\n```\n\n### 2. Instale as dependências\n\n```bash\nnpm install\n```\n\n### 3. Configure as variáveis de ambiente\n\nCrie um arquivo `.env` na raiz do projeto com as chaves abaixo:\n\n```bash\n# Banco de dados (PostgreSQL / Neon)\nDATABASE_URL=\"postgresql://usuario:senha@host/banco?sslmode=require\"\n\n# Clerk (autenticação)\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=\"pk_...\"\nCLERK_SECRET_KEY=\"sk_...\"\nCLERK_WEBHOOK_SECRET=\"whsec_...\"\n\n# Stripe (pagamentos)\nSTRIPE_SECRET_KEY=\"sk_...\"\nSTRIPE_WEBHOOK_SECRET=\"whsec_...\"\n\n# OpenRouter (gateway de IA)\nOPENROUTER_API_KEY=\"sk-or-...\"\n\n# ID do Clerk do administrador (acesso ao dashboard financeiro)\nADMIN_CLERK_ID=\"user_...\"\n```\n\n| Variável | Para que serve |\n| ------------------------------------ | ------------------------------------------------------------------------ |\n| `DATABASE_URL` | String de conexão do PostgreSQL usada pelo Prisma. |\n| `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` | Chave pública do Clerk (usada no cliente). |\n| `CLERK_SECRET_KEY` | Chave secreta do Clerk (usada no servidor). |\n| `CLERK_WEBHOOK_SECRET` | Segredo para validar o webhook de criação/exclusão de usuários. |\n| `STRIPE_SECRET_KEY` | Chave secreta da API do Stripe. |\n| `STRIPE_WEBHOOK_SECRET` | Segredo para validar o webhook de pagamento concluído. |\n| `OPENROUTER_API_KEY` | Chave da OpenRouter para encaminhar as requisições aos modelos de IA. |\n| `ADMIN_CLERK_ID` | ID Clerk do usuário com acesso ao `/admin/financeiro`. |\n\n> ⚠️ Nunca commite o arquivo `.env` — ele já está no `.gitignore`. Em produção,\n> defina essas variáveis no painel da Vercel.\n\n### 4. Prepare o banco de dados\n\nGere o cliente Prisma e aplique as migrações:\n\n```bash\nnpx prisma generate\nnpx prisma migrate deploy # produção\n# ou, em desenvolvimento:\nnpx prisma migrate dev\n```\n\n### 5. Rode em desenvolvimento\n\n```bash\nnpm run dev\n```\n\nAbra [http://localhost:3000](http://localhost:3000).\n\n---\n\n## Configurando os webhooks\n\nDuas integrações dependem de webhooks para funcionar corretamente:\n\n### Clerk → `/api/webhooks/clerk`\nSincroniza usuários com o banco. Ao criar uma conta no Clerk, um registro `User`\né criado; ao excluir, é removido. Configure no painel do Clerk apontando para\n`https://SEU_DOMINIO/api/webhooks/clerk` e copie o segredo para\n`CLERK_WEBHOOK_SECRET`.\n\n### Stripe → `/api/webhooks/stripe`\nCredita o saldo do usuário após um pagamento. Escute o evento\n`checkout.session.completed` apontando para\n`https://SEU_DOMINIO/api/webhooks/stripe` e copie o segredo para\n`STRIPE_WEBHOOK_SECRET`.\n\nEm desenvolvimento, use a [Stripe CLI](https://stripe.com/docs/stripe-cli):\n\n```bash\nstripe listen --forward-to localhost:3000/api/webhooks/stripe\n```\n\n---\n\n## Scripts disponíveis\n\n| Comando | Descrição |\n| --------------- | ------------------------------------------------------ |\n| `npm run dev` | Sobe o servidor de desenvolvimento. |\n| `npm run build` | Gera o cliente Prisma e compila para produção. |\n| `npm run start` | Inicia o servidor em modo produção (após o build). |\n| `npm run lint` | Roda o ESLint. |\n\n---\n\n## Documentação\n\nA descrição detalhada de cada página, rota de API e função do projeto está em\n[docs/DOCUMENTACAO.md](docs/DOCUMENTACAO.md).\n"}, "9868140f211a438963f700a49e31bfff57837b54": {"t": 1785771941.5643835, "n": 4454, "h": "005ca1b2fa33e769", "c": "# KeshAI\n\n> Todas as suas IAs em uma única plataforma.\n\nKeshAI é uma plataforma web onde o usuário conversa com diversos modelos de\ninteligência artificial (GPT-4o, Claude, Gemini, Llama, DeepSeek, Grok,\nPerplexity Sonar e outros) a partir de uma única conta — sem trocar de aba e sem\nmanter várias assinaturas paralelas.\n\nO modelo de negócio é **pré-pago por uso**: o usuário compra créditos via Stripe\ne cada mensagem é cobrada conforme o modelo escolhido e a quantidade de tokens\nconsumida. Não há mensalidade obrigatória, os créditos não expiram e, quando o\nsaldo zera, o uso é pausado automaticamente.\n\n---\n\n## O que o projeto faz\n\n- **Landing page** que apresenta a proposta, os modelos disponíveis e os pacotes\n de crédito.\n- **Autenticação** completa (login/cadastro) via [Clerk](https://clerk.com).\n- **Chat com streaming** em tempo real, intermediado pela\n [OpenRouter](https://openrouter.ai), com seletor de modelo, histórico de\n conversas e markdown nas respostas.\n- **Cobrança por token**: cada resposta debita créditos do saldo do usuário, com\n margem aplicada sobre o custo real da API.\n- **Compra de créditos** via Stripe Checkout, com confirmação por webhook.\n- **Dashboard financeiro** (somente admin) com receita, custo, lucro e valor de\n saque seguro.\n\n---\n\n## Stack\n\n| Camada | Tecnologia |\n| ----------------- | ----------------------------------------------------- |\n| Framework | Next.js 16 (App Router) + React 19 |\n| Linguagem | TypeScript |\n| Estilo | Tailwind CSS 4 |\n| Banco de dados | PostgreSQL (Neon serverless) via Prisma 7 |\n| Autenticação | Clerk |\n| Pagamentos | Stripe (Checkout + Webhooks) |\n| Gateway de IA | OpenRouter |\n| Webhooks (verify) | Svix |\n\n> ⚠️ **Atenção:** este projeto usa uma versão do Next.js com mudanças que podem\n> diferir do que você conhece. Consulte os guias em\n> `node_modules/next/dist/docs/` antes de alterar APIs ou convenções do\n> framework. Veja também o [AGENTS.md](AGENTS.md).\n\n---\n\n## Pré-requisitos\n\n- **Node.js** 20 ou superior\n- **npm** (ou pnpm/yarn/bun)\n- Um banco **PostgreSQL** (recomendado: [Neon](https://neon.tech))\n- Contas em **Clerk**, **Stripe** e **OpenRouter**\n\n---\n\n## Instalação\n\n### 1. Clone o repositório\n\n```bash\ngit clone \ncd keshai\n```\n\n### 2. Instale as dependências\n\n```bash\nnpm install\n```\n\n### 3. Configure as variáveis de ambiente\n\n### 4. Prepare o banco de dados\n\nGere o cliente Prisma e aplique as migrações:\n\n```bash\nnpx prisma generate\nnpx prisma migrate deploy # produção\n# ou, em desenvolvimento:\nnpx prisma migrate dev\n```\n\n### 5. Rode em desenvolvimento\n\n```bash\nnpm run dev\n```\n\nAbra [http://localhost:3000](http://localhost:3000).\n\n---\n\n## Configurando os webhooks\n\nDuas integrações dependem de webhooks para funcionar corretamente:\n\n### Clerk → `/api/webhooks/clerk`\nSincroniza usuários com o banco. Ao criar uma conta no Clerk, um registro `User`\né criado; ao excluir, é removido. Configure no painel do Clerk apontando para\n`https://SEU_DOMINIO/api/webhooks/clerk` e copie o segredo para\n`CLERK_WEBHOOK_SECRET`.\n\n### Stripe → `/api/webhooks/stripe`\nCredita o saldo do usuário após um pagamento. Escute o evento\n`checkout.session.completed` apontando para\n`https://SEU_DOMINIO/api/webhooks/stripe` e copie o segredo para\n`STRIPE_WEBHOOK_SECRET`.\n\nEm desenvolvimento, use a [Stripe CLI](https://stripe.com/docs/stripe-cli):\n\n```bash\nstripe listen --forward-to localhost:3000/api/webhooks/stripe\n```\n\n---\n\n## Scripts disponíveis\n\n| Comando | Descrição |\n| --------------- | ------------------------------------------------------ |\n| `npm run dev` | Sobe o servidor de desenvolvimento. |\n| `npm run build` | Gera o cliente Prisma e compila para produção. |\n| `npm run start` | Inicia o servidor em modo produção (após o build). |\n| `npm run lint` | Roda o ESLint. |\n\n---\n\n## Documentação\n\nA descrição detalhada de cada página, rota de API e função do projeto está em\n[docs/DOCUMENTACAO.md](docs/DOCUMENTACAO.md).\n"}, "388381967100c96f0e4bee7623baddc640c28719": {"t": 1785771942.7835338, "n": 1450, "h": "7ba16f1bf0991960", "c": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"}}}}