Plataforma que conecta famílias a cuidadores e profissionais de enfermagem para plantões particulares.
Quem precisa de um cuidador ou técnico de enfermagem em casa costuma depender de indicação ou de grupos de WhatsApp. Do outro lado, o profissional espera semanas para receber e às vezes paga para ver um contato. O CuidaJá está na fase de validação: o match entre família e profissional ainda é feito à mão por um operador, e a ferramenta mede se a operação se sustenta antes de virar um app aberto ao público.
O projeto tem duas áreas:
Painel do operador, protegido por senha:
- Cadastro de profissionais com categoria (enfermeiro, técnico, auxiliar ou cuidador), especialidades, valores por período e registro de quem verificou o COREN e quando.
- Registro das necessidades das famílias: tarefas de cuidado, local, período, urgência, orçamento e canal de origem.
- Match com sugestão de profissionais ativos, priorizando a mesma cidade, e acompanhamento das propostas.
- Painel com fill rate, tempo médio até a primeira proposta e taxa de vazamento, calculados a partir dos registros.
Área do profissional, em /pro:
- Página pública que explica a proposta: pagamento ao fim do plantão, perfil verificado, oportunidades próximas e nenhuma cobrança por contato.
- Autocadastro com telefone e senha, incluindo um questionário curto sobre como o profissional consegue trabalho hoje.
- Início com as propostas ativas e página de conta com o perfil.
flowchart LR
F[Família] -->|pede ajuda| OP[Operador registra<br/>a necessidade]
P[Profissional] -->|/pro/cadastro| DB[(PostgreSQL)]
OP --> DB
OP --> M[Match<br/>mesma cidade primeiro]
M --> PR[Proposta]
PR --> PNL[Painel<br/>fill rate · tempo · vazamento]
Cada proposta percorre o funil abaixo. As datas de envio, aceite e conclusão alimentam as métricas do painel.
stateDiagram-v2
direction LR
[*] --> Sugerido
Sugerido --> Enviada
Enviada --> Aceita
Enviada --> Recusada
Aceita --> EmAndamento
EmAndamento --> Concluida
Sugerido --> Cancelada
Enviada --> Cancelada
Aceita --> Cancelada
Pré-requisitos: Node.js 20 ou superior e Docker (ou um PostgreSQL próprio).
git clone https://github.com/ronnyarruda20/cuideja.git
cd cuideja
docker compose up -d # PostgreSQL 16 na porta 5432
npm install # também gera o cliente do PrismaCrie um .env na raiz:
DATABASE_URL="postgresql://cuidaja:cuidaja123@localhost:5432/cuidaja"
APP_PASSWORD="troque-esta-senha"
APP_SESSION_SECRET="<gere com o comando abaixo>"node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Aplique as migrações e suba o projeto:
npx prisma migrate dev
npm run dev| Endereço | O que é |
|---|---|
| http://localhost:3000/login | Entrada do operador, com a senha de APP_PASSWORD |
| http://localhost:3000/pro | Página pública e cadastro do profissional |
| Comando | O que faz |
|---|---|
npm run dev |
Servidor de desenvolvimento |
npm run build |
Build de produção |
npm start |
Aplica as migrações pendentes e sobe o build |
npx prisma studio |
Interface visual para o banco |
npx prisma migrate dev |
Cria e aplica migrações a partir do schema |
erDiagram
PROFISSIONAL ||--o{ PROPOSTA : recebe
NECESSIDADE ||--o{ PROPOSTA : gera
PROPOSTA ||--o{ AVALIACAO : tem
PROFISSIONAL {
string nome
string telefone "login do autocadastro"
string categoria
string coren
boolean corenVerificado
string cidade
int valorDiurno
int valorNoturno
}
NECESSIDADE {
string familiaNome
string cidade
string tarefas
string periodo
string urgencia
int orcamentoEsperado
string status
}
PROPOSTA {
string status
int valorCombinado
datetime enviadaEm
datetime aceitaEm
boolean vazou
}
AVALIACAO {
string de "FAMILIA ou PROFISSIONAL"
int nota "1 a 5"
}
- O operador entra com uma senha única. A sessão é um cookie assinado com HMAC-SHA256 a partir de
APP_SESSION_SECRET. - Profissionais têm sessão própria, com senha guardada em scrypt e sal aleatório.
- O middleware separa três zonas: páginas públicas, área do profissional e painel do operador.
- O banco guarda dados pessoais como telefone e COREN. Necessidades registram tarefas de cuidado, nunca diagnóstico ou histórico médico.
src/
├── app/
│ ├── (app)/ painel do operador: início, profissionais, necessidades
│ ├── login/ entrada do operador
│ └── pro/ página pública, cadastro, entrada, início e conta do profissional
├── components/ campos de formulário
└── lib/
├── auth.ts sessão do operador
├── auth-pro.ts sessão e senha do profissional
├── dominio.ts categorias, tarefas, status e formatação
└── prisma.ts cliente Prisma com driver adapter do PostgreSQL
prisma/
├── schema.prisma
└── migrations/
proxy.ts controle de acesso por zona
O passo a passo para publicar no Railway, com PostgreSQL gerenciado, está em DEPLOY.md.