Skip to content

Repository files navigation

Dr. Agenda 🩺📅

License Stars Forks

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.


🌟 Sobre o Projeto

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.


✨ Funcionalidades Principais

  • 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.

🛠️ Tecnologias Utilizadas

Este projeto foi construído utilizando um stack moderno e eficiente:


🚀 Começando

Siga estas instruções para configurar e rodar o projeto em seu ambiente local.

Pré-requisitos

Instalação

  1. Clone o repositório:

    git clone git@github.com:Dnowdd/Dr.Agenda.git
    cd Dr.Agenda
  2. Instale as dependências:

    npm install
    # ou
    # yarn install
    # ou
    # pnpm install
  3. Configure as Variáveis de Ambiente:

    • Copie o arquivo .env.example para um novo arquivo chamado .env:
      cp .env.example .env
    • Preencha as variáveis no arquivo .env com suas respectivas chaves e URLs. Veja a seção Variáveis de Ambiente para mais detalhes.
  4. Configure o Banco de Dados (Drizzle ORM):

    • Certifique-se que sua string de conexão DATABASE_URL no arquivo .env está correta e apontando para seu banco de dados PostgreSQL.
    • Execute as migrações do Drizzle para criar o schema no seu banco de dados:
      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
      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. Para um setup inicial, você pode precisar de um comando como npx drizzle-kit push.
  5. 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.


⚙️ Variáveis de Ambiente

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ção

Importante: Nunca exponha suas chaves secretas e credenciais em repositórios públicos. O arquivo .env deve ser incluído no seu .gitignore.


📖 Uso

Após a instalação e configuração completa:

  1. Acesse a aplicação no seu navegador (normalmente http://localhost:3000).
  2. Crie uma conta ou faça login (inclusive com Google).
  3. Realize a assinatura de algum plano para usufruir do sistema. (utilize modo de testes da stripe para prosseguir em desenvolvimento).
  4. Crie sua própria clínica no sistema.
  5. Explore as funcionalidades de gerenciamento de médicos, pacientes e agendamentos.
  6. 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:dev

Isso irá encaminhar os webhooks do Stripe para sua aplicação local.


🤝 Contribuindo

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! ⭐

  1. Faça um Fork do projeto (https://github.com/Dnowdd/Dr.Agenda/fork)
  2. Crie sua Feature Branch (git checkout -b feature/AmazingFeature)
  3. Adicione suas mudanças (git add .)
  4. Comite suas mudanças (git commit -m 'Add some AmazingFeature')
  5. Faça o Push para a Branch (git push origin feature/AmazingFeature)
  6. Abra um Pull Request

As Pull Requests serão revisadas e, se alinhadas com os objetivos do projeto, poderão ser incorporadas.


📜 Licença

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

📞 Contato

David Queiroz - david.queiroz@dnowdd.com

Link do Projeto: https://github.com/Dnowdd/Dr.Agenda


🙏 Agradecimentos

FullStackClub: Pelo conhecimento base fornecido através do curso.

About

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.

Topics

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages