https://github.com/joaomacaoli/mind-support-server
Conectando pessoas a atendimento psicológico acessível.
https://github.com/joaomacaoli/mind-support-server
Last synced: about 2 months ago
JSON representation
Conectando pessoas a atendimento psicológico acessível.
- Host: GitHub
- URL: https://github.com/joaomacaoli/mind-support-server
- Owner: joaomacaoli
- Created: 2025-02-16T19:24:11.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-03-28T22:14:38.000Z (6 months ago)
- Last Synced: 2025-03-28T23:24:17.730Z (6 months ago)
- Language: JavaScript
- Size: 52.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MindSupport - Backend API
## Tabela de Conteúdos
- [MindSupport - Backend API](#mindsupport---backend-api)
- [Tabela de Conteúdos](#tabela-de-conteúdos)
- [Descrição](#descrição)
- [Tecnologias Utilizadas](#tecnologias-utilizadas)
- [Pré-requisitos](#pré-requisitos)
- [Instalação](#instalação)
- [Execução com Docker](#execução-com-docker)
- [Rotas da API](#rotas-da-api)
- [Autenticação](#autenticação)
- [Usuários](#usuários)
- [Profissionais](#profissionais)
- [Grupos de Apoio](#grupos-de-apoio)
- [Depoimentos](#depoimentos)
- [Migrações do Banco de Dados](#migrações-do-banco-de-dados)
- [Contribuição](#contribuição)
- [Licença](#licença)## Descrição
API backend para a clínica psicológica MindSupport, desenvolvida com Node.js, Express e Prisma ORM. Esta API fornece endpoints para gerenciamento de profissionais, grupos de apoio, depoimentos e usuários.
## Tecnologias Utilizadas
- Node.js
- Express
- Prisma ORM
- PostgreSQL
- Docker
- JWT (Autenticação)
- Bcrypt (Hash de senhas)## Pré-requisitos
- Node.js (v18+)
- Docker
- npm ou yarn## Instalação
1. Clone o repositório:
```bash
git clone https://github.com/seu-usuario/mindsupport-backend.git
cd mindsupport-backend
```2. Instale as dependências:
```bash
npm install
```3. Configure as variáveis de ambiente:
Crie um arquivo `.env` na raiz do projeto com base no `.env.example`:
```
POSTGRES_URL=postgresql://postgres:postgres@localhost:5432/postgres?schema=public
JWT_SECRET=sua_chave_secreta_jwt
PORT=3000
```## Execução com Docker
O projeto inclui um arquivo `docker-compose.yml` para facilitar a execução:
```yaml
version: "3.8"services:
postgres:
image: postgres:latest
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: postgres
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/dataadminer:
image: adminer:latest
ports:
- "8080:8080"
depends_on:
- postgresapp:
build: .
ports:
- "3000:3000"
depends_on:
- postgres
environment:
POSTGRES_URL: postgresql://postgres:postgres@postgres:5432/postgres?schema=public
JWT_SECRET: sua_chave_secreta_jwt
volumes:
- .:/app
- /app/node_modulesvolumes:
postgres_data:
```Para iniciar os containers:
```bash
docker-compose up -d
```## Rotas da API
### Autenticação
**POST /login**
- Autentica um usuário e retorna um token JWT
- Payload:
```json
{
"email": "usuario@exemplo.com",
"password": "senha123"
}
```### Usuários
**POST /users**
- Cria um novo usuário
- Payload:
```json
{
"name": "Nome do Usuário",
"email": "usuario@exemplo.com",
"password": "senha123",
"type": "patient" // ou "professional"
}
```**GET /users**
- Lista todos os usuários
**GET /users/:id**
- Obtém um usuário específico
**PUT /users/:id**
- Atualiza um usuário
- Payload:
```json
{
"name": "Novo Nome",
"email": "novoemail@exemplo.com",
"password": "novasenha123",
"type": "professional"
}
```**DELETE /users/:id**
- Remove um usuário
### Profissionais
**POST /professionals**
- Cria um novo profissional
- Payload:
```json
{
"specialty": "Psicologia Clínica",
"location": "São Paulo",
"ageRangeService": "Adultos",
"freeServices": 5,
"userId": "uuid-do-usuario"
}
```**GET /professionals**
- Lista todos os profissionais
**GET /professionals/:id**
- Obtém um profissional específico
**PUT /professionals/:id**
- Atualiza um profissional
- Payload:
```json
{
"specialty": "Nova Especialidade",
"location": "Rio de Janeiro",
"ageRangeService": "Crianças e Adolescentes",
"freeServices": 3
}
```**DELETE /professionals/:id**
- Remove um profissional
### Grupos de Apoio
**POST /support-groups**
- Cria um novo grupo de apoio
- Payload:
```json
{
"name": "Grupo de Ansiedade",
"description": "Grupo para pessoas que sofrem com ansiedade",
"location": "Online"
}
```**GET /support-groups**
- Lista todos os grupos de apoio
**GET /support-groups/:id**
- Obtém um grupo de apoio específico
**PUT /support-groups/:id**
- Atualiza um grupo de apoio
- Payload:
```json
{
"name": "Novo Nome do Grupo",
"description": "Nova descrição",
"location": "Presencial"
}
```**DELETE /support-groups/:id**
- Remove um grupo de apoio
### Depoimentos
**POST /testimonials**
- Cria um novo depoimento
- Payload:
```json
{
"description": "A terapia mudou minha vida para melhor!"
}
```**GET /testimonials**
- Lista todos os depoimentos
**GET /testimonials/:id**
- Obtém um depoimento específico
**PUT /testimonials/:id**
- Atualiza um depoimento
- Payload:
```json
{
"description": "Atualização do meu depoimento"
}
```**DELETE /testimonials/:id**
- Remove um depoimento
## Migrações do Banco de Dados
Para executar as migrações do Prisma:
```bash
npx prisma migrate dev
```Para visualizar o banco de dados (após iniciar o Docker Compose):
- Acesse http://localhost:8080
- Servidor: postgres
- Usuário: postgres
- Senha: postgres
- Banco de dados: postgres## Contribuição
1. Faça um fork do projeto
2. Crie uma branch para sua feature (`git checkout -b feature/nova-feature`)
3. Commit suas mudanças (`git commit -m 'Adiciona nova feature'`)
4. Push para a branch (`git push origin feature/nova-feature`)
5. Abra um Pull Request## Licença
Este projeto está licenciado sob a licença MIT.