Sistema web da Clinica Odontologica Nova Previne.
O projeto esta sendo desenvolvido em fases incrementais. No momento, foram concluidas as Fases 1, 2, 3 e 4: setup inicial, Docker, PostgreSQL, Prisma, modelagem completa do banco e layout base com identidade visual.
- Next.js com App Router
- React
- TypeScript
- Tailwind CSS
- ESLint
- Prettier
- Prisma ORM
- PostgreSQL
- Docker e Docker Compose
- Bcryptjs para hashes de senha no seed
- Lucide React para icones da interface
npm run dev
npm run build
npm run start
npm run lint
npm run type-check
npm run format
npm run format:check
npm run prisma:generate
npm run prisma:migrate
npm run prisma:deploy
npm run prisma:seed
npm run prisma:studioInstale as dependencias:
npm installCrie o arquivo .env a partir do exemplo:
Copy-Item .env.example .envSuba o banco com Docker Compose:
docker compose up -d dbSe o ambiente usar o binario legado:
docker-compose up -d dbGere o Prisma Client e aplique as migrations:
npm run prisma:generate
npm run prisma:migrate
npm run prisma:seedExecute o servidor de desenvolvimento:
npm run devAcesse:
http://localhost:3000Endpoint de validacao do banco:
http://localhost:3000/api/health/dbPara visualizar os dados pelo Prisma Studio:
npm run prisma:studioSuba banco e aplicacao:
docker compose up -d --buildOu, com o binario legado:
docker-compose up -d --buildO servico app executa automaticamente:
npm run prisma:deploynpm run prisma:seednpm run dev
Credenciais de desenvolvimento:
Admin:
E-mail: admin@novaprevine.com
Senha: admin123
Paciente:
E-mail: paciente@teste.com
Senha: paciente123
Dentistas:
E-mail: joao.almeida@novaprevine.com
Senha: dentista123
E-mail: marina.costa@novaprevine.com
Senha: dentista123
E-mail: pedro.henrique@novaprevine.com
Senha: dentista123O seed tambem cria:
- 6 servicos odontologicos.
- 3 perfis profissionais de dentistas.
- Disponibilidades basicas para os dentistas.
- Consultas de exemplo.
- Notificacoes internas de exemplo.
- Log simulado de lembrete por WhatsApp.
- Mensagem de contato de exemplo.
NEXT_PUBLIC_APP_URL="http://localhost:3000"
NEXT_PUBLIC_CLINIC_NAME="Clinica Odontologica Nova Previne"
DATABASE_URL="postgresql://nova_previne:nova_previne_dev@localhost:5432/nova_previne?schema=public"
POSTGRES_USER="nova_previne"
POSTGRES_PASSWORD="nova_previne_dev"
POSTGRES_DB="nova_previne"
POSTGRES_PORT="5432"nova-previne/
├── docker-compose.yml
├── Dockerfile
├── prisma/
│ ├── migrations/
│ ├── schema.prisma
│ └── seed.ts
├── public/
│ └── images/
│ └── nova-previne-clinic-hero.png
├── src/
│ ├── app/
│ │ └── api/
│ │ └── health/
│ │ └── db/
│ ├── components/
│ │ ├── layout/
│ │ └── ui/
│ ├── lib/
│ │ └── prisma.ts
│ ├── services/
│ ├── styles/
│ └── types/
├── .env.example
├── AGENTS.md
├── package.json
└── README.mdConcluido:
- Projeto
nova-previnecriado. - Next.js configurado com TypeScript.
- Tailwind CSS configurado.
- ESLint e Prettier configurados.
- Estrutura inicial de pastas criada.
- README inicial criado.
.env.examplecriado.- Pagina inicial simples criada para validacao local.
Concluido:
Dockerfilecriado.docker-compose.ymlcriado com servicosappedb.- PostgreSQL configurado em container.
- Prisma instalado e configurado.
prisma.config.tscriado.schema.prismainicial criado com modelHealthCheck.- Primeira migration criada e aplicada.
- Seed basico criado e executado.
- Prisma Client configurado com adapter PostgreSQL.
- Endpoint
/api/health/dbcriado para validar conexao app/banco.
Nao implementado nesta fase:
- Modelagem completa do banco.
- Autenticacao.
- Cadastros de pacientes/dentistas.
- Dashboards.
- Paginas publicas completas.
- Fluxo de agendamento.
Esses itens pertencem as fases seguintes e nao devem ser antecipados.
Concluido:
- Models principais criados no Prisma:
UserPatientProfileDentistProfileServiceDentistAvailabilityScheduleBlockAppointmentNotificationWhatsAppReminderLogContactMessage
- Enums criados:
UserRoleAppointmentStatusNotificationTypeReminderStatus
- Relacoes, indices e unicidades configurados.
- Migration
phase_3_core_domain_modelscriada e aplicada. - Seed completo criado com admin, paciente, dentistas, servicos, disponibilidades e dados de exemplo.
- Hashes de senha gerados com bcryptjs.
Nao implementado nesta fase:
- Autenticacao.
- Telas publicas completas.
- Dashboards.
- Fluxo real de agendamento.
- Acoes de aceitar, recusar, cancelar ou concluir consultas.
Esses itens pertencem as proximas fases.
Concluido:
- Design system inicial aplicado com paleta azul, verde, branco e cinzas suaves.
- Componentes base criados:
HeaderFooterButtonButtonLinkCardBadgeStatusBadgeSectionTitleContainerInputTextareaSelect
- Layout global com header e footer responsivos.
- Pagina inicial ajustada como superficie visual da identidade Nova Previne.
- Imagem hero odontologica adicionada em
public/images/nova-previne-clinic-hero.png. - Revisao mobile feita no Browser integrado.
Nao implementado nesta fase:
- Paginas publicas completas.
- Formulario de contato funcional.
- Listagem de servicos ou dentistas vinda do banco.
- Autenticacao.
- Dashboards.
Esses itens pertencem as proximas fases.