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.
Este 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.
O 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.
- Gerenciamento Completo (CRUD):
- Médicos
- Pacientes
- Agendamentos
- Dashboard Interativo: Visualização de dados e métricas importantes da clínica.
- Sistema de Autenticação:
- Criação de conta e login seguros.
- Login social com Google (OAuth).
- Integração com Stripe: Gerenciamento de assinaturas e pagamentos para o SaaS.
- Interface Moderna e Responsiva.
Este projeto foi construído utilizando um stack moderno e eficiente:
- Frontend:
- Next.js (v15.3.2) - Framework React para produção.
- React (v19.0.0) - Biblioteca para construção de interfaces de usuário.
- Tailwind CSS (v4) - Framework CSS utility-first.
- Radix UI - Primitivas de UI acessíveis e não estilizadas.
- Lucide React - Ícones SVG.
- Shadcn/ui (implícito pelo uso de Radix e convenções)
- TanStack Query (React Query) - Gerenciamento de estado de servidor e data fetching.
- TanStack Table (React Table) - Tabelas agnósticas de UI.
- Recharts - Biblioteca de gráficos para React.
- React Hook Form - Gerenciamento de formulários.
- Zod - Validação de esquemas.
- Sonner - Notificações toast.
date-fns/dayjs- Manipulação de datas.next-themes- Gerenciamento de temas (dark/light mode).
- Backend & Base de Dados:
- Next.js API Routes
- Drizzle ORM - ORM TypeScript.
- PostgreSQL - Banco de dados relacional (recomendado).
- Better Auth - Biblioteca de autenticação.
- Next Safe Action - Para Server Actions seguras.
- Pagamentos:
- Stripe - Plataforma de pagamentos online.
- Ferramentas de Desenvolvimento:
- TypeScript
- ESLint
- Prettier
drizzle-kit- Ferramenta para migrações com Drizzle.
Siga estas instruções para configurar e rodar o projeto em seu ambiente local.
- Node.js (versão LTS recomendada, ex: v20 ou superior)
- npm ou yarn ou pnpm
- Uma instância de banco de dados PostgreSQL rodando.
- Git
-
Clone o repositório:
git clone git@github.com:Dnowdd/Dr.Agenda.git cd Dr.Agenda -
Instale as dependências:
npm install # ou # yarn install # ou # pnpm install
-
Configure as Variáveis de Ambiente:
- Copie o arquivo
.env.examplepara um novo arquivo chamado.env:cp .env.example .env
- Preencha as variáveis no arquivo
.envcom suas respectivas chaves e URLs. Veja a seção Variáveis de Ambiente para mais detalhes.
- Copie o arquivo
-
Configure o Banco de Dados (Drizzle ORM):
- Certifique-se que sua string de conexão
DATABASE_URLno arquivo.envestá correta e apontando para seu banco de dados PostgreSQL. - Execute as migrações do Drizzle para criar o schema no seu banco de dados:
Nota: Verifique a documentação do Drizzle para os comandos exatos de geração e aplicação de migrações (
npx drizzle-kit generate # Para gerar os arquivos de migração (se necessário ao modificar o schema) npx drizzle-kit migrate # Para aplicar as migrações ao banco de dados
pushpara desenvolvimento rápido ougenerate+migratepara produção). Você pode precisar dedrizzle-kit studiopara visualizar seu schema. Para um setup inicial, você pode precisar de um comando comonpx drizzle-kit push.
- Certifique-se que sua string de conexão
-
Rode o servidor de desenvolvimento:
npm run dev # ou # yarn dev # ou # pnpm dev
Abra http://localhost:3000 no seu navegador para ver o resultado.
As seguintes variáveis de ambiente precisam ser configuradas no seu arquivo .env para o correto funcionamento da aplicação:
# URL da sua base de dados PostgreSQL
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE"
# Segredos para a autenticação com Better Auth
BETTER_AUTH_SECRET="[SEU_SEGREDO_COMPLEXO_PARA_BETTER_AUTH]"
BETTER_AUTH_URL="http://localhost:3000" # Ou a URL de produção
# Credenciais do Google OAuth para login social
GOOGLE_CLIENT_ID="[SEU_GOOGLE_CLIENT_ID]"
GOOGLE_CLIENT_SECRET="[SEU_GOOGLE_CLIENT_SECRET]"
# Chaves do Stripe
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="[SUA_CHAVE_PUBLICAVEL_STRIPE]"
STRIPE_SECRET_KEY="[SUA_CHAVE_SECRETA_STRIPE]"
STRIPE_ESSENTIAL_PLAN_PRICE_ID="[ID_DO_SEU_PLANO_ESSENCIAL_NO_STRIPE]"
STRIPE_WEBHOOK_SECRET="[SEU_SEGREDO_DO_WEBHOOK_STRIPE]" # Use `npm run stripe:listen:dev` para obter um durante o desenvolvimento
NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL_URL="[URL_DO_SEU_PORTAL_DO_CLIENTE_STRIPE]"
# URL pública da sua aplicação
NEXT_PUBLIC_APP_URL="http://localhost:3000" # Ou a URL de produçãoImportante: Nunca exponha suas chaves secretas e credenciais em repositórios públicos. O arquivo .env deve ser incluído no seu .gitignore.
Após a instalação e configuração completa:
- Acesse a aplicação no seu navegador (normalmente
http://localhost:3000). - Crie uma conta ou faça login (inclusive com Google).
- Realize a assinatura de algum plano para usufruir do sistema. (utilize modo de testes da stripe para prosseguir em desenvolvimento).
- Crie sua própria clínica no sistema.
- Explore as funcionalidades de gerenciamento de médicos, pacientes e agendamentos.
- Acesse o dashboard para visualizar informações relevantes.
Para testar a integração com Stripe em desenvolvimento, você pode usar o comando:
npm run stripe:listen:devIsso irá encaminhar os webhooks do Stripe para sua aplicação local.
Contribuiçõ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.
Se 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". Não se esqueça de dar uma estrela ao projeto! Obrigado novamente! ⭐
- Faça um Fork do projeto (
https://github.com/Dnowdd/Dr.Agenda/fork) - Crie sua Feature Branch (
git checkout -b feature/AmazingFeature) - Adicione suas mudanças (
git add .) - Comite suas mudanças (
git commit -m 'Add some AmazingFeature') - Faça o Push para a Branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
As Pull Requests serão revisadas e, se alinhadas com os objetivos do projeto, poderão ser incorporadas.
Este projeto é distribuído sob a Licença MIT. Veja o arquivo LICENSE para mais informações, ou leia abaixo:
MIT License
Copyright (c) 2025 David Aquino Queiroz
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
David Queiroz - david.queiroz@dnowdd.com
Link do Projeto: https://github.com/Dnowdd/Dr.Agenda
FullStackClub: Pelo conhecimento base fornecido através do curso.