Pular para o conteúdo principal

Configuração

O APAH Assistant utiliza variáveis de ambiente para configuração. Este guia explica todas as opções disponíveis.

Ficheiro de Ambiente

Crie um ficheiro .env na raiz do projeto copiando o exemplo:

cp .env.example .env

Variáveis de Ambiente

Base de Dados

# Connection string do PostgreSQL
DATABASE_URL="postgresql://user:password@localhost:5432/apah_assistant"
VariávelDescriçãoObrigatória
DATABASE_URLConnection string do PostgreSQL✅ Sim

Autenticação

# Segredo para sessões (gere um valor aleatório seguro)
AUTH_SECRET="your-super-secret-key-here"

# URL base da aplicação
NEXT_PUBLIC_APP_URL="http://localhost:3000"
VariávelDescriçãoObrigatória
AUTH_SECRETChave secreta para encriptação de sessões✅ Sim
NEXT_PUBLIC_APP_URLURL pública da aplicação✅ Sim

Serviços de IA

O APAH Assistant suporta múltiplos provedores de IA:

Azure OpenAI

AZURE_OPENAI_API_KEY="your-azure-openai-key"
AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com"
AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4"
AZURE_OPENAI_API_VERSION="2024-02-15-preview"

Cohere

COHERE_API_KEY="your-cohere-api-key"
VariávelDescriçãoObrigatória
AZURE_OPENAI_API_KEYChave da API Azure OpenAIDepende do provedor
AZURE_OPENAI_ENDPOINTEndpoint do Azure OpenAIDepende do provedor
COHERE_API_KEYChave da API CohereDepende do provedor

Email

# Azure Communication Services
AZURE_COMMUNICATION_CONNECTION_STRING="your-connection-string"
EMAIL_FROM="noreply@yourdomain.com"
VariávelDescriçãoObrigatória
AZURE_COMMUNICATION_CONNECTION_STRINGConnection string do Azure Communication ServicesPara envio de emails
EMAIL_FROMEndereço de email remetentePara envio de emails

Configurações Gerais

# Ambiente
NODE_ENV="development" # development | production | test

# Porta do servidor
PORT=3000

Validação de Ambiente

O projeto usa @t3-oss/env-nextjs para validação de variáveis de ambiente. A configuração está em src/env.mjs:

import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";

export const env = createEnv({
server: {
DATABASE_URL: z.string().url(),
AUTH_SECRET: z.string().min(1),
// ... outras variáveis
},
client: {
NEXT_PUBLIC_APP_URL: z.string().url(),
},
runtimeEnv: {
DATABASE_URL: process.env.DATABASE_URL,
AUTH_SECRET: process.env.AUTH_SECRET,
NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
},
});

Gerar Chaves Secretas

Para gerar chaves secretas seguras:

# Usando openssl
openssl rand -base64 32

# Usando Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"

Configuração por Ambiente

Desenvolvimento

NODE_ENV="development"
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/apah_dev"
NEXT_PUBLIC_APP_URL="http://localhost:3000"

Produção

NODE_ENV="production"
DATABASE_URL="postgresql://user:password@prod-server:5432/apah_prod"
NEXT_PUBLIC_APP_URL="https://apah.yourdomain.com"

Verificar Configuração

Após configurar as variáveis, verifique se está tudo correto:

# Verificar tipos e configuração
pnpm typecheck

# Iniciar aplicação
pnpm dev

Se houver variáveis em falta ou inválidas, receberá uma mensagem de erro detalhada.

Segurança

Importante

Nunca cometa o ficheiro .env no controlo de versões. O .gitignore já está configurado para ignorar este ficheiro.

  • Use valores diferentes para cada ambiente
  • Rotacione as chaves secretas regularmente
  • Use gestores de segredos em produção (Azure Key Vault, AWS Secrets Manager, etc.)