2026-10-04 10:42:23 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 11:20:19 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 10:42:23 -03:00
2026-10-04 11:20:19 -03:00

Briefing de Site SeConectai

Sistema web para cadastro de clientes e preenchimento guiado do briefing de criação de sites.

As pastas Conhecimento/ e Schema/ ficam como documentação de referência. O sistema em si é criado na raiz do projeto, com app/, components/, lib/, prisma/, Docker e configurações do Next.js.

Stack

  • Next.js 14+ com App Router
  • TypeScript
  • Tailwind CSS
  • shadcn/ui como padrão de componentes
  • Prisma + PostgreSQL 16
  • Auth.js v5
  • React Hook Form + Zod
  • Docker Compose

Desenvolvimento

Crie um .env a partir do exemplo quando for implementar autenticação, banco e integrações reais:

cp .env.example .env

Instale as dependências:

npm install

Rode o app:

npm run dev

Ou suba com Docker:

docker compose up

Estrutura inicial

  • app/: rotas e layout base.
  • components/ui/: componentes base no padrão shadcn.
  • lib/: utilitários compartilhados.
  • prisma/briefing-seed.json: cópia do seed usado para carregar as seções e perguntas do briefing.
  • Schema/: documentação das etapas do backend e regras de negócio.
  • Conhecimento/: guias de frontend, UI, responsividade, acessibilidade e revisão.

Observação

O ambiente atual do shell não tem node, npm nem docker instalados, então a validação de instalação, lint, build e compose precisa ser feita em uma máquina com essas ferramentas disponíveis.

Backup

Com DATABASE_URL e UPLOAD_DIR configurados:

sh scripts/backup.sh

Os arquivos são salvos em ./backups por padrão, com rotação de 14 dias.

Para restaurar:

sh scripts/restore.sh backups/db-YYYYMMDD-HHMMSS.sql backups/uploads-YYYYMMDD-HHMMSS.tar.gz

Produção

Crie o .env no servidor. Variáveis mínimas:

POSTGRES_DB=briefing
POSTGRES_USER=briefing
POSTGRES_PASSWORD=troque-esta-senha
DATABASE_URL=postgresql://briefing:troque-esta-senha@db:5432/briefing?schema=public
AUTH_SECRET=gere-um-segredo-forte
APP_URL=https://seu-dominio.com.br
APP_DOMAIN=seu-dominio.com.br
LETSENCRYPT_EMAIL=voce@dominio.com.br
CPF_ENC_KEY=chave-base64-com-32-bytes
CPF_HASH_KEY=segredo-hmac-forte
ADMIN_EMAIL=admin@dominio.com.br
ADMIN_INITIAL_PASSWORD=senha-inicial-forte
UPLOAD_DIR=/app/storage/uploads
UPLOAD_MAX_MB=25

Para gerar uma chave base64 de 32 bytes:

openssl rand -base64 32

Suba em produção:

docker compose -f docker-compose.prod.yml up -d --build

O serviço release roda prisma migrate deploy e o seed idempotente antes do app iniciar. O seed cria o admin inicial usando ADMIN_EMAIL e ADMIN_INITIAL_PASSWORD somente se o usuário ainda não existir.

Instalador em um comando

Depois que o repositório estiver acessível pelo servidor, você pode instalar em uma máquina limpa com Docker usando:

curl -fsSL https://gitea.seconectai.com.br/tiago/SeConectai_Web/raw/branch/main/scripts/install-server.sh \
  | APP_DOMAIN=seu-dominio.com.br \
    LETSENCRYPT_EMAIL=voce@dominio.com.br \
    ADMIN_EMAIL=admin@dominio.com.br \
    ADMIN_INITIAL_PASSWORD='troque-esta-senha' \
    sh

Opcionalmente defina também:

INSTALL_DIR=/opt/seconectai-web
POSTGRES_PASSWORD=senha-forte-do-banco
AUTH_SECRET=segredo-auth
CPF_ENC_KEY=base64-32-bytes
CPF_HASH_KEY=segredo-hmac
SMTP_HOST=smtp.exemplo.com
SMTP_PORT=587
SMTP_USER=usuario
SMTP_PASS=senha
SMTP_FROM=contato@dominio.com.br

Evite colocar senha em parâmetro de URL. URL pode ficar gravada em histórico, logs e proxy. Passe segredo por variável de ambiente no comando ou edite o .env no servidor.

Para atualizar:

docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d --build

O Postgres não publica porta externa no docker-compose.prod.yml; ele fica acessível apenas na rede interna do Compose. Os uploads ficam no volume nomeado uploads, e o banco no volume pgdata.

HTTPS

O docker-compose.prod.yml usa Caddy com o Caddyfile da raiz. Configure APP_DOMAIN e LETSENCRYPT_EMAIL no .env; o Caddy emite e renova o certificado automaticamente e redireciona HTTP para HTTPS.

Healthcheck

A aplicação expõe:

/api/health

Ela verifica app + conexão com o banco.

E-mail

Configure SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS e SMTP_FROM. No DNS do remetente, confira SPF e DKIM do provedor SMTP para reduzir chance de spam. O sistema nunca envia CPF completo por e-mail.

S
Description
No description provided
Readme
174 KiB
Languages
TypeScript 95.3%
Shell 3%
JavaScript 0.7%
Dockerfile 0.6%
CSS 0.4%