Skip to content

LucasDoGit/odontopro

Repository files navigation

OdontoPRO - Sistema para Clínicas

capa do projeto

Sumário

Introdução

Este é um projeto de sistema Sass para clínicas, com objetivo principal de organizar e facilitar o agendamento de consultas e também oferecer serviços para clientes. Cada clínica possui uma agenda que pode ser acessada pelos clientes e verificar a disponibilidade de horários e datas, os clientes também conseguem agendar suas consultas por meio de links de cada clínica.

Descrição Geral

O OdontoPRO é um sistema completo para clínicas, onde:

  • Clínicas usam a interface web para gerenciar e agendar consultas e ofercer serviços.
  • Clientes podem agendar consultas, escolhecendo o serviço oferecido e os horários disponíveis.

Tecnologias Usadas

NextJS  Typescript  Git  Prisma  Postgres  Stripe  Shadcnui  Tailwind

  • Linguagem: TypeScript
  • Framework: Next 15
  • Ferramentas de Desenvolvimento:
    • Utilizado Neon Serverless Postgres com prismaORM para banco de dados;
    • Imagens estão hospedadas no Cloudnary;
    • Utilizado TailwindCSS e Shadcnui para estilização;
    • Utilizado Sonner para mostrar toasts;
    • Hospedagem da aplicação foi realizada na Vercel;
    • Login realizado com o Google oAuth e NextAuth.js;

Pricipais funcionalidades

1. Consultas e Serviços

  • Agendar consultas: As clínicas podem agendar consultas na sua agenda, quando tem disponbilidade para aquela data e horário disponpivel.
  • Criar serviços: As clínicas podem cadastar serviços para oferecer a seus clientes respeitando o limite contratado pela assinatura mensal.
  • Gerenciar consultas: As clínicas podem acessar suas consultas e verificar qual o serviço que será feito, além dos valores e informações do cliente.
  • Criar Lembretes: As clínicas podem criar lembretes e verificar sempre que acessar a conta.

2. Agendamento e horários (Cliente)

  • Agendar consulta: Os clientes podem agendar uma consulta para uma clínica específica e verificar quais os horários disponíveis.
  • Consultar clínicas: Consultar todas as clínicas disponíveis na plataforma e ver todos os serviços oferecidos.

3. Autenticação e Cadastro

  • Autenticação de usuários realizada com NextAuth.js e Google oAuth.

4. Assinaturas de serviços

  • Clínicas premium: Acesso ao cadastro ilimitado de serviços e selo premium na página home.
  • Clínicas básicas: Acesso limitado ao cadastro de serviços.
  • Gerenciamento de assinatura: Pagamento de plano mensal usando o Stripe.

Snapshots

Home

home

Agendamentos da Clínica

Dashboard de agendamentos

Cadastrar agendamento

agendamento de consultas

Cadastrar serviços

criar serviços

Informações da Clínica

perfil da clínica

Planos para clínicas

planos disponíveis para clínicas

Criando assinatura com Stripe

assinatura de plano usando stripe

Como Executar o Projeto

Pré-requisitos

  • Node.js - Version 22.11.0
  • Neon PostgreSQL v17 ou banco de dados com integração ao PrismaORM.
  • Conta ativa na Cloudnary para hospedagem de imagens.
  • Conta na Google Cloud para login dos usuários.
  • Conta ativa na Stripe para receber pagamentos e crair os planos.
  • (Opcional) configurar webhook local do stripe
  1. Clone o repositório:
git clone https://github.com/LucasDoGit/odontopro
cd odontopro
  1. Instale as dependências:
npm install --force
  1. Crie o arquivo .env na raiz do projeto e configure as variáveis de ambiente, conforme abaixo.
AUTH_SECRET="" # chave secreta aleatória, pode ser gerada com "npx auth secret"
DATABASE_URL="" # url do seu banco de dados

# cloudnary
AUTH_GITHUB_ID= # oAuth id github
AUTH_GITHUB_SECRET= # chave secreta do github

# google
AUTH_GOOGLE_ID= # oAuth id google
AUTH_GOOGLE_SECRET= # chave secreta do google

NEXT_PUBLIC_URL=http://localhost:3000 # ou a url de hospdedagem

# stripe 
NEXT_PUBLIC_STRIPE_PUBLIC_KEY= # chave publica do stripe
STRIPE_SECRET_KEY= # chave secreta do stripe

STRIPE_SECRET_WEBHOOK_KEY= # chave secreta do webook do stripe

STRIPE_PLAN_BASIC= # id da assinatura básica do stripe
STRIPE_PLAN_PROFESSIONAL=# id da assinatura básica do stripe
STRIPE_SUCCESS_URL=http://localhost:3000/dashboard/plans # url de sucesso ao criar assinatura
STRIPE_CANCEL_URL=http://localhost:3000/dashboard/plans # url para o cancelamento de assiantura

# cloudnary
CLOUDINARY_NAME=# nome de indentificação no cloudnary
CLOUDINARY_KEY=# chave de acesso ao cloudnary
CLOUDINARY_SECRET=# chave secreta do cloudnary
  1. (opcional) Configurar webook local para receber eventos do stripe.

    • Baixar o stripe CLI e seguir a documentação clicando neste link.
  2. Criar as migrations com o prisma

npx prisma generate 
npx prisma migrate dev
  1. Execute o comando:
npm run dev
  1. Feito! O projeto deve ser iniciado e pode ser acessado usando um navegador web pelo localhost ou a url de hospodagem do seu projeto.

Links Úteis

  • Google oAuth docs - Link
  • Github oAuth docs - Link
  • Stripe docs - Link
  • Integração prismaORM com Neon - Link

Contato

Para obter mais informações, entre em contato comigo em:

About

Sistema Sass para clínicas agendarem consultas e oferecer serviços.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published