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ável | Descrição | Obrigatória |
|---|---|---|
DATABASE_URL | Connection 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ável | Descrição | Obrigatória |
|---|---|---|
AUTH_SECRET | Chave secreta para encriptação de sessões | ✅ Sim |
NEXT_PUBLIC_APP_URL | URL 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ável | Descrição | Obrigatória |
|---|---|---|
AZURE_OPENAI_API_KEY | Chave da API Azure OpenAI | Depende do provedor |
AZURE_OPENAI_ENDPOINT | Endpoint do Azure OpenAI | Depende do provedor |
COHERE_API_KEY | Chave da API Cohere | Depende do provedor |
Email
# Azure Communication Services
AZURE_COMMUNICATION_CONNECTION_STRING="your-connection-string"
EMAIL_FROM="noreply@yourdomain.com"
| Variável | Descrição | Obrigatória |
|---|---|---|
AZURE_COMMUNICATION_CONNECTION_STRING | Connection string do Azure Communication Services | Para envio de emails |
EMAIL_FROM | Endereço de email remetente | Para 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.)