FEATURE: Adicionado novo modelo CI/CD

This commit is contained in:
Rafael Alves Lopes 2026-03-31 18:14:52 -03:00
parent d467e3dade
commit c854086e69
6 changed files with 66 additions and 76 deletions

17
.env.example Normal file
View File

@ -0,0 +1,17 @@
# Deploy (docker-compose) environment variables
# Postgres (used by postgres service)
POSTGRES_USER=omnichannel
POSTGRES_PASSWORD=change-me
POSTGRES_DB=omnichannel
# App database connection (used by backend)
DB_HOST=postgres
DB_PORT=5432
DB_USER=omnichannel
DB_PASSWORD=change-me
DB_NAME=omnichannel
# Ports (optional, if you want to reference in compose later)
FRONTEND_PORT=3000
BACKEND_PORT=3001

2
MakeFile Normal file
View File

@ -0,0 +1,2 @@
deploy-dev:
ssh desenvolvimento@10.0.120.75 -p 60000 "/home/desenvolvimento/scripts/deploy-omnichannel-dev.sh"

View File

@ -1,89 +1,29 @@
# Omnichannel Sothis
# Omnichannel Sothis - Deploy
Protótipo visual do frontend MVP do sistema Omnichannel da Sothis.
Este repositorio e o **deploy** do ecossistema. Ele **nao** contem o codigo do frontend nem do backend em producao. Esses dois sao repositorios separados e devem ser clonados ao lado deste deploy para subir o ambiente completo.
O foco desta versão é apresentação de produto: a aplicação simula fluxos reais de atendimento com dados mockados, UX moderna e navegação entre telas principais.
## Estrutura esperada (3 repositorios)
## O que existe hoje
- `deploy/` (este repo): `docker-compose.yml`, `database/`, `.gitignore`, `README.md`
- `frontend/`: interface do produto
- `backend/`: API e regras de negocio
- Frontend em React + Vite dentro de `frontend/`
- Docker Compose na raiz para subir o frontend desta apresentação
- Telas implementadas:
- Login
- Home / Dashboard
- Chat
- Call / Softphone mock
- Novo Atendimento
## Como subir tudo localmente
## Estrutura esperada do ecossistema
Passo a passo (na mesma pasta raiz):
Hoje este repositório cobre o frontend e um `docker-compose.yml` local para desenvolvimento/apresentação.
Para rodar o ambiente completo no futuro, a separação esperada é:
- `frontend`: interface do produto
- `backend`: API e regras de negócio
- `deploy`: repositório raiz de infraestrutura/orquestração, onde ficará o `docker-compose` final com frontend, backend, banco e demais serviços
## Como rodar somente o frontend
### Opção 1: com Docker
Na raiz deste projeto:
1. Clonar o repo de deploy na raiz (.)
2. Clonar o repo de frontend na pasta `frontend`
3. Clonar o repo de backend na pasta `backend`
4. Subir tudo:
```bash
docker compose up -d --build
```
Depois acesse:
Isso sobe `frontend`, `backend` e `database` em uma unica operacao.
```text
http://localhost:3000
```
## Observacoes
### Opção 2: com Node local
Entre na pasta do frontend:
```bash
cd frontend
npm install
npm run dev
```
Depois acesse:
```text
http://localhost:3000
```
## Como gerar build do frontend
```bash
cd frontend
npm run build
```
## Para rodar o ambiente completo
Quando a solução estiver separada em múltiplos repositórios, o fluxo esperado será:
1. Fazer `pull` do repositório `frontend`
2. Fazer `pull` do repositório `backend`
3. Fazer `pull` do repositório `deploy`
4. Entrar no repositório `deploy` (raiz de infraestrutura)
5. Subir tudo com:
```bash
docker compose up -d --build
```
Em outras palavras: o `docker compose` definitivo do ambiente completo deve ser executado a partir do repositório `deploy`, que será a raiz de orquestração.
## Documentação
A documentação funcional do frontend está em [`frontend/docs`](./frontend/docs):
- visão geral do projeto
- documentação por módulo/tela
- documentação em formato narrativo/RPG para explicar os casos de uso
- O `docker-compose.yml` deste repo espera `frontend/` e `backend/` presentes na mesma raiz.
- Em producao, o fluxo pode mudar para imagens pre-buildadas, mas para desenvolvimento local esta estrutura funciona bem.

0
database/Dockerfile Normal file
View File

View File

View File

@ -5,3 +5,34 @@ services:
dockerfile: Dockerfile
ports:
- "3000:3000"
backend:
build:
context: ./backend
dockerfile: Dockerfile
ports:
- "3001:3001"
env_file:
- .env.development
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:16-alpine
restart: always
env_file:
- .env.development
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
- ./database/init:/docker-entrypoint-initdb.d
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
pgdata: