O React Clinic Scheduler é um sistema web full stack para gerenciamento de pacientes e agendamento de consultas. O projeto combina uma interface em React com uma API REST em Node.js/Express e persistência em MongoDB, mostrando uma evolução prática para aplicações com frontend componentizado, backend separado e banco NoSQL.
A proposta do sistema é organizar o fluxo básico de uma clínica: cadastro de pacientes, controle de consultas, filtros por período/tipo/paciente e validações para evitar conflitos de horários. O projeto foi estruturado para demonstrar domínio de integração entre frontend, API e banco de dados.
- 🧑⚕️ Cadastro, edição, listagem e exclusão de pacientes.
- 📅 Agendamento, edição, conclusão e cancelamento de consultas.
- 🔎 Filtros de consultas por hoje, semana, mês, ano, atrasadas, tipo e paciente.
⚠️ Validação de conflitos de horário entre consultas.- 🚑 Regra especial para consultas de urgência.
- 🔁 Regra de retorno entre 20 e 30 dias após consulta anterior.
- 🗂️ Exclusão automática de consultas vinculadas ao paciente removido.
- 🌐 Integração frontend/backend via Axios.
- 🍃 Persistência dos dados em MongoDB usando Mongoose.
- React
- React Router DOM
- Styled Components
- Axios
- Node.js
- Express
- MongoDB
- Mongoose
- date-fns
flowchart LR
USER["Usuário"] --> REACT["Frontend React"]
REACT -->|Axios / HTTP| API["API Node.js + Express"]
API --> ROUTES["Rotas de Pacientes e Consultas"]
ROUTES --> CONTROLLERS["Controllers"]
CONTROLLERS --> MODELS["Models Mongoose"]
MODELS --> MONGO["MongoDB"]
backend/
src/
config/
controller/
middlewares/
model/
routes/
index.js
package.json
.env.example
frontend/
public/
src/
assets/
components/
routes/
services/
utils/
views/
package.json
.env.example
POST /pacientecria um paciente.GET /paciente/listarlista pacientes.GET /paciente/buscar/:idbusca um paciente.PUT /paciente/:idatualiza um paciente.DELETE /paciente/deletar/:idremove um paciente e suas consultas.
POST /consultacria uma consulta.GET /consulta/listarlista consultas.GET /consulta/hojelista consultas do dia.GET /consulta/semanalista consultas da semana.GET /consulta/meslista consultas do mês.GET /consulta/anolista consultas do ano.GET /consulta/atrasadaslista consultas atrasadas.GET /consulta/buscar/:idbusca uma consulta.PUT /consulta/:idatualiza uma consulta.PUT /consulta/concluida/:id/:terminomarca consulta como concluída ou pendente.DELETE /consulta/deletar/:idremove uma consulta.POST /consulta/filtrar/tipofiltra consultas por tipo.GET /consulta/filtrar/paciente/:idPacientefiltra consultas por paciente.
- Separação entre frontend e backend.
- API REST organizada por rotas, controllers, models e middlewares.
- Uso de Mongoose para modelagem de pacientes e consultas.
- Validação de regras de negócio no backend.
- Interface React com componentes reutilizáveis e rotas internas.
- Configuração por variáveis de ambiente para evitar dados fixos no código.
O repositório ignora dependências, builds, logs, arquivos temporários e arquivos .env. Isso mantém o GitHub focado no código-fonte e na documentação, sem subir configurações locais ou arquivos gerados.