diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..9eb68fb --- /dev/null +++ b/.env.example @@ -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 diff --git a/MakeFile b/MakeFile new file mode 100644 index 0000000..01b58f6 --- /dev/null +++ b/MakeFile @@ -0,0 +1,2 @@ +deploy-dev: + ssh desenvolvimento@10.0.120.75 -p 60000 "/home/desenvolvimento/scripts/deploy-omnichannel-dev.sh" \ No newline at end of file diff --git a/README.md b/README.md index 83d625b..7417b7e 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/database/Dockerfile b/database/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/database/init/001.schema.sql b/database/init/001.schema.sql new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml index 41329fb..05e123a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: