{"id":28902793,"url":"https://github.com/dnowdd/dr.agenda","last_synced_at":"2026-03-09T18:09:04.690Z","repository":{"id":296628184,"uuid":"992819671","full_name":"Dnowdd/Dr.Agenda","owner":"Dnowdd","description":"O Dr. Agenda é uma plataforma para gestão eficiente de clínicas, com CRUD de médicos, pacientes, agendamentos, dashboard analítico e integração de assinaturas via Stripe. Construído com Next.js, Drizzle ORM e Tailwind CSS.","archived":false,"fork":false,"pushed_at":"2025-06-01T00:35:14.000Z","size":281,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-21T03:22:21.698Z","etag":null,"topics":["appointment-scheduling","clinic-management","drizzle-orm","fullstack","healthcare","medical-agenda","nextjs","postgresql","react","saas","stripe","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","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/Dnowdd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-29T19:04:47.000Z","updated_at":"2025-06-09T19:30:04.000Z","dependencies_parsed_at":"2025-06-01T11:03:51.899Z","dependency_job_id":"bd2e68c4-bda0-4927-9aae-adc57778d872","html_url":"https://github.com/Dnowdd/Dr.Agenda","commit_stats":null,"previous_names":["dnowdd/dr.agenda"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Dnowdd/Dr.Agenda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnowdd%2FDr.Agenda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnowdd%2FDr.Agenda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnowdd%2FDr.Agenda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnowdd%2FDr.Agenda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dnowdd","download_url":"https://codeload.github.com/Dnowdd/Dr.Agenda/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dnowdd%2FDr.Agenda/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261115155,"owners_count":23111894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["appointment-scheduling","clinic-management","drizzle-orm","fullstack","healthcare","medical-agenda","nextjs","postgresql","react","saas","stripe","tailwindcss","typescript"],"created_at":"2025-06-21T11:31:44.265Z","updated_at":"2025-10-09T17:07:51.185Z","avatar_url":"https://github.com/Dnowdd.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dr. Agenda 🩺📅\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Stars](https://img.shields.io/github/stars/Dnowdd/Dr.Agenda?style=social) ![Forks](https://img.shields.io/github/forks/Dnowdd/Dr.Agenda?style=social)\n\n**Dr. Agenda** é um Software como Serviço (SaaS) robusto e intuitivo, projetado para simplificar e otimizar o gerenciamento de consultas em clínicas médicas e consultórios.\n\nEste projeto foi desenvolvido com base nos aprendizados do curso pago **FullStackClub**, com significativas modificações e adições pessoais para atender a requisitos específicos e implementar funcionalidades desejadas.\n\n---\n\n## 🌟 Sobre o Projeto\n\nO Dr. Agenda visa resolver a complexidade no agendamento e gerenciamento de pacientes e médicos, oferecendo uma plataforma centralizada que facilita a organização diária de uma clínica. Com ele, é possível gerenciar horários, informações de pacientes, disponibilidade médica e muito mais, tudo de forma eficiente e integrada.\n\n---\n\n## ✨ Funcionalidades Principais\n\n- **Gerenciamento Completo (CRUD):**\n  - Médicos\n  - Pacientes\n  - Agendamentos\n- **Dashboard Interativo:** Visualização de dados e métricas importantes da clínica.\n- **Sistema de Autenticação:**\n  - Criação de conta e login seguros.\n  - Login social com Google (OAuth).\n- **Integração com Stripe:** Gerenciamento de assinaturas e pagamentos para o SaaS.\n- **Interface Moderna e Responsiva.**\n\n---\n\n## 🛠️ Tecnologias Utilizadas\n\nEste projeto foi construído utilizando um stack moderno e eficiente:\n\n- **Frontend:**\n  - [Next.js](https://nextjs.org/) (v15.3.2) - Framework React para produção.\n  - [React](https://react.dev/) (v19.0.0) - Biblioteca para construção de interfaces de usuário.\n  - [Tailwind CSS](https://tailwindcss.com/) (v4) - Framework CSS utility-first.\n  - [Radix UI](https://www.radix-ui.com/) - Primitivas de UI acessíveis e não estilizadas.\n  - [Lucide React](https://lucide.dev/) - Ícones SVG.\n  - [Shadcn/ui](https://ui.shadcn.com/) (implícito pelo uso de Radix e convenções)\n  - [TanStack Query (React Query)](https://tanstack.com/query/latest) - Gerenciamento de estado de servidor e data fetching.\n  - [TanStack Table (React Table)](https://tanstack.com/table/latest) - Tabelas agnósticas de UI.\n  - [Recharts](https://recharts.org/) - Biblioteca de gráficos para React.\n  - [React Hook Form](https://react-hook-form.com/) - Gerenciamento de formulários.\n  - [Zod](https://zod.dev/) - Validação de esquemas.\n  - [Sonner](https://sonner.emilkowal.ski/) - Notificações toast.\n  - `date-fns` / `dayjs` - Manipulação de datas.\n  - `next-themes` - Gerenciamento de temas (dark/light mode).\n- **Backend \u0026 Base de Dados:**\n  - [Next.js API Routes](https://nextjs.org/docs/api-routes/introduction)\n  - [Drizzle ORM](https://orm.drizzle.team/) - ORM TypeScript.\n  - [PostgreSQL](https://www.postgresql.org/) - Banco de dados relacional (recomendado).\n  - [Better Auth](https://github.com/LukyVj/better-auth) - Biblioteca de autenticação.\n  - [Next Safe Action](https://next-safe-action.dev/) - Para Server Actions seguras.\n- **Pagamentos:**\n  - [Stripe](https://stripe.com/) - Plataforma de pagamentos online.\n- **Ferramentas de Desenvolvimento:**\n  - [TypeScript](https://www.typescriptlang.org/)\n  - [ESLint](https://eslint.org/)\n  - [Prettier](https://prettier.io/)\n  - `drizzle-kit` - Ferramenta para migrações com Drizzle.\n\n---\n\n## 🚀 Começando\n\nSiga estas instruções para configurar e rodar o projeto em seu ambiente local.\n\n### Pré-requisitos\n\n- [Node.js](https://nodejs.org/) (versão LTS recomendada, ex: v20 ou superior)\n- [npm](https://www.npmjs.com/) ou [yarn](https://yarnpkg.com/) ou [pnpm](https://pnpm.io/)\n- Uma instância de banco de dados [PostgreSQL](https://www.postgresql.org/download/) rodando.\n- [Git](https://git-scm.com/)\n\n### Instalação\n\n1.  **Clone o repositório:**\n\n    ```bash\n    git clone git@github.com:Dnowdd/Dr.Agenda.git\n    cd Dr.Agenda\n    ```\n\n2.  **Instale as dependências:**\n\n    ```bash\n    npm install\n    # ou\n    # yarn install\n    # ou\n    # pnpm install\n    ```\n\n3.  **Configure as Variáveis de Ambiente:**\n\n    - Copie o arquivo `.env.example` para um novo arquivo chamado `.env`:\n      ```bash\n      cp .env.example .env\n      ```\n    - Preencha as variáveis no arquivo `.env` com suas respectivas chaves e URLs. Veja a seção [Variáveis de Ambiente](#variáveis-de-ambiente) para mais detalhes.\n\n4.  **Configure o Banco de Dados (Drizzle ORM):**\n\n    - Certifique-se que sua string de conexão `DATABASE_URL` no arquivo `.env` está correta e apontando para seu banco de dados PostgreSQL.\n    - Execute as migrações do Drizzle para criar o schema no seu banco de dados:\n      ```bash\n      npx drizzle-kit generate # Para gerar os arquivos de migração (se necessário ao modificar o schema)\n      npx drizzle-kit migrate  # Para aplicar as migrações ao banco de dados\n      ```\n      _**Nota:** Verifique a documentação do Drizzle para os comandos exatos de geração e aplicação de migrações (`push` para desenvolvimento rápido ou `generate` + `migrate` para produção). Você pode precisar de `drizzle-kit studio` para visualizar seu schema._\n      _Para um setup inicial, você pode precisar de um comando como `npx drizzle-kit push`._\n\n5.  **Rode o servidor de desenvolvimento:**\n    ```bash\n    npm run dev\n    # ou\n    # yarn dev\n    # ou\n    # pnpm dev\n    ```\n    Abra [http://localhost:3000](http://localhost:3000) no seu navegador para ver o resultado.\n\n---\n\n## ⚙️ Variáveis de Ambiente\n\nAs seguintes variáveis de ambiente precisam ser configuradas no seu arquivo `.env` para o correto funcionamento da aplicação:\n\n```env\n# URL da sua base de dados PostgreSQL\nDATABASE_URL=\"postgresql://USER:PASSWORD@HOST:PORT/DATABASE\"\n\n# Segredos para a autenticação com Better Auth\nBETTER_AUTH_SECRET=\"[SEU_SEGREDO_COMPLEXO_PARA_BETTER_AUTH]\"\nBETTER_AUTH_URL=\"http://localhost:3000\" # Ou a URL de produção\n\n# Credenciais do Google OAuth para login social\nGOOGLE_CLIENT_ID=\"[SEU_GOOGLE_CLIENT_ID]\"\nGOOGLE_CLIENT_SECRET=\"[SEU_GOOGLE_CLIENT_SECRET]\"\n\n# Chaves do Stripe\nNEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=\"[SUA_CHAVE_PUBLICAVEL_STRIPE]\"\nSTRIPE_SECRET_KEY=\"[SUA_CHAVE_SECRETA_STRIPE]\"\nSTRIPE_ESSENTIAL_PLAN_PRICE_ID=\"[ID_DO_SEU_PLANO_ESSENCIAL_NO_STRIPE]\"\nSTRIPE_WEBHOOK_SECRET=\"[SEU_SEGREDO_DO_WEBHOOK_STRIPE]\" # Use `npm run stripe:listen:dev` para obter um durante o desenvolvimento\nNEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL_URL=\"[URL_DO_SEU_PORTAL_DO_CLIENTE_STRIPE]\"\n\n# URL pública da sua aplicação\nNEXT_PUBLIC_APP_URL=\"http://localhost:3000\" # Ou a URL de produção\n```\n\n**Importante:** Nunca exponha suas chaves secretas e credenciais em repositórios públicos. O arquivo `.env` deve ser incluído no seu `.gitignore`.\n\n---\n\n## 📖 Uso\n\nApós a instalação e configuração completa:\n\n1.  Acesse a aplicação no seu navegador (normalmente `http://localhost:3000`).\n2.  Crie uma conta ou faça login (inclusive com Google).\n3.  Realize a assinatura de algum plano para usufruir do sistema. (utilize modo de testes da stripe para prosseguir em desenvolvimento).\n4.  Crie sua própria clínica no sistema.\n5.  Explore as funcionalidades de gerenciamento de médicos, pacientes e agendamentos.\n6.  Acesse o dashboard para visualizar informações relevantes.\n\nPara testar a integração com Stripe em desenvolvimento, você pode usar o comando:\n\n```bash\nnpm run stripe:listen:dev\n```\n\nIsso irá encaminhar os webhooks do Stripe para sua aplicação local.\n\n---\n\n## 🤝 Contribuindo\n\nContribuições são o que fazem a comunidade open source um lugar incrível para aprender, inspirar e criar. Qualquer contribuição que você fizer será **muito bem-vinda**.\n\nSe você tem alguma sugestão para melhorar este projeto, por favor, faça um fork do repositório e crie um pull request. Você também pode simplesmente abrir uma issue com a tag \"enhancement\".\nNão se esqueça de dar uma estrela ao projeto! Obrigado novamente! ⭐\n\n1.  Faça um Fork do projeto (`https://github.com/Dnowdd/Dr.Agenda/fork`)\n2.  Crie sua Feature Branch (`git checkout -b feature/AmazingFeature`)\n3.  Adicione suas mudanças (`git add .`)\n4.  Comite suas mudanças (`git commit -m 'Add some AmazingFeature'`)\n5.  Faça o Push para a Branch (`git push origin feature/AmazingFeature`)\n6.  Abra um Pull Request\n\nAs Pull Requests serão revisadas e, se alinhadas com os objetivos do projeto, poderão ser incorporadas.\n\n---\n\n## 📜 Licença\n\nEste projeto é distribuído sob a Licença MIT. Veja o arquivo LICENSE para mais informações, ou leia abaixo:\n\n```\nMIT License\n\nCopyright (c) 2025 David Aquino Queiroz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n## David Queiroz\n\n## 📞 Contato\n\nDavid Queiroz - david.queiroz@dnowdd.com\n\nLink do Projeto: https://github.com/Dnowdd/Dr.Agenda\n\n---\n\n## 🙏 Agradecimentos\n\nFullStackClub: Pelo conhecimento base fornecido através do curso.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnowdd%2Fdr.agenda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnowdd%2Fdr.agenda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnowdd%2Fdr.agenda/lists"}