Config self convex #48
@@ -1,29 +0,0 @@
|
|||||||
# ⚙️ Configuração de Variáveis de Ambiente
|
|
||||||
|
|
||||||
## 📁 Arquivo .env
|
|
||||||
|
|
||||||
Crie um arquivo `.env` na pasta `apps/web/` com as seguintes variáveis:
|
|
||||||
|
|
||||||
```env
|
|
||||||
# Google Maps API Key (opcional)
|
|
||||||
# Obtenha sua chave em: https://console.cloud.google.com/
|
|
||||||
# Ative a "Geocoding API" para buscar coordenadas por endereço
|
|
||||||
# Deixe vazio para usar OpenStreetMap (gratuito, sem necessidade de chave)
|
|
||||||
VITE_GOOGLE_MAPS_API_KEY=
|
|
||||||
|
|
||||||
# VAPID Public Key para Push Notifications (opcional)
|
|
||||||
VITE_VAPID_PUBLIC_KEY=
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📖 Documentação Completa
|
|
||||||
|
|
||||||
Para instruções detalhadas sobre como obter e configurar a Google Maps API Key, consulte:
|
|
||||||
|
|
||||||
📄 **[GOOGLE_MAPS_SETUP.md](./GOOGLE_MAPS_SETUP.md)**
|
|
||||||
|
|
||||||
## ⚠️ Importante
|
|
||||||
|
|
||||||
- O arquivo `.env` não deve ser commitado no Git (já está no .gitignore)
|
|
||||||
- Variáveis de ambiente começam com `VITE_` para serem acessíveis no frontend
|
|
||||||
- Reinicie o servidor de desenvolvimento após alterar o arquivo `.env`
|
|
||||||
|
|
||||||
@@ -2,47 +2,52 @@
|
|||||||
FROM oven/bun:1 AS base
|
FROM oven/bun:1 AS base
|
||||||
|
|
||||||
# Set the working directory inside the container
|
# Set the working directory inside the container
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /app
|
||||||
|
|
||||||
# Create a non-root user for security
|
# ---
|
||||||
RUN addgroup --system --gid 1001 sveltekit
|
FROM base AS prepare
|
||||||
RUN adduser --system --uid 1001 sveltekit
|
# Replace <your-major-version> with the major version installed in your repository. For example:
|
||||||
|
# RUN yarn global add turbo@^2
|
||||||
|
RUN bun add -g turbo@^2
|
||||||
|
COPY . .
|
||||||
|
# Add lockfile and package.json's of isolated subworkspace
|
||||||
|
# Generate a partial monorepo with a pruned lockfile for a target workspace.
|
||||||
|
# Assuming "web" is the name entered in the project's package.json: { name: "web" }
|
||||||
|
RUN turbo prune web --docker
|
||||||
|
|
||||||
|
|
||||||
# Copy package.json and bun.lock (if available)
|
# ---
|
||||||
COPY package.json bun.lock* ./
|
FROM base AS builder
|
||||||
|
|
||||||
# Install dependencies (including dev dependencies for build)
|
# First install the dependencies (as they change less often)
|
||||||
# This will resolve workspace dependencies using the package.json files we just copied
|
COPY --from=prepare /app/out/json/ .
|
||||||
RUN bun install --frozen-lockfile
|
RUN bun install
|
||||||
|
# Build the project
|
||||||
|
COPY --from=prepare /app/out/full/ .
|
||||||
|
|
||||||
# Copy the rest of the source code
|
# Copy the rest of the source code
|
||||||
COPY . .
|
COPY --from=prepare /app/out/full/ .
|
||||||
|
|
||||||
# Prepare SvelteKit and build the application
|
RUN bunx turbo build
|
||||||
# Navigate to web app directory and build
|
|
||||||
WORKDIR /usr/src/app/apps/web
|
|
||||||
RUN bun run prepare
|
|
||||||
RUN bun run build
|
|
||||||
|
|
||||||
# Production stage
|
# Production stage
|
||||||
FROM oven/bun:1-slim AS production
|
FROM oven/bun:1-slim AS production
|
||||||
|
|
||||||
# Set working directory
|
# Set working directory
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /app
|
||||||
|
|
||||||
# Create non-root user
|
# Create non-root user
|
||||||
RUN addgroup --system --gid 1001 sveltekit
|
RUN addgroup --system --gid 1001 sveltekit
|
||||||
RUN adduser --system --uid 1001 sveltekit
|
RUN adduser --system --uid 1001 sveltekit
|
||||||
|
|
||||||
# Copy built application from base stage
|
# Copy built application from base stage
|
||||||
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/build ./build
|
COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/build ./build
|
||||||
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/package.json ./package.json
|
COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/package.json ./package.json
|
||||||
# Copy node_modules from root (Bun manages workspaces centrally)
|
# Copy node_modules from root (Bun manages workspaces centrally)
|
||||||
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/node_modules ./node_modules
|
COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/node_modules ./node_modules
|
||||||
|
|
||||||
# Copy any additional files needed for runtime
|
# Copy any additional files needed for runtime
|
||||||
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/static ./static
|
COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/static ./static
|
||||||
|
|
||||||
# Switch to non-root user
|
# Switch to non-root user
|
||||||
USER sveltekit
|
USER sveltekit
|
||||||
|
|||||||
@@ -1,174 +0,0 @@
|
|||||||
# 📍 Configuração do Google Maps API para Busca de Coordenadas
|
|
||||||
|
|
||||||
Este guia explica como configurar a API do Google Maps para obter coordenadas GPS de forma automática e precisa no sistema de Endereços de Marcação.
|
|
||||||
|
|
||||||
## 🎯 Por que usar Google Maps?
|
|
||||||
|
|
||||||
- ✅ **Maior Precisão**: Resultados mais exatos para endereços brasileiros
|
|
||||||
- ✅ **Melhor Cobertura**: Banco de dados mais completo e atualizado
|
|
||||||
- ✅ **Geocoding Avançado**: Entende melhor endereços incompletos ou parciais
|
|
||||||
|
|
||||||
> **Nota**: O sistema funciona perfeitamente sem a API key do Google Maps, usando OpenStreetMap (gratuito). A configuração do Google Maps é opcional.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📋 Passo a Passo
|
|
||||||
|
|
||||||
### 1. Criar Projeto no Google Cloud Platform
|
|
||||||
|
|
||||||
1. Acesse [Google Cloud Console](https://console.cloud.google.com/)
|
|
||||||
2. Clique em **"Criar Projeto"** ou selecione um projeto existente
|
|
||||||
3. Preencha o nome do projeto (ex: "SGSE-App")
|
|
||||||
4. Clique em **"Criar"**
|
|
||||||
|
|
||||||
### 2. Ativar a Geocoding API
|
|
||||||
|
|
||||||
1. No menu lateral, vá em **"APIs e Serviços"** > **"Biblioteca"**
|
|
||||||
2. Procure por **"Geocoding API"**
|
|
||||||
3. Clique no resultado e depois em **"Ativar"**
|
|
||||||
4. Aguarde alguns segundos para a ativação
|
|
||||||
|
|
||||||
### 3. Criar Chave de API
|
|
||||||
|
|
||||||
1. Ainda em **"APIs e Serviços"**, vá em **"Credenciais"**
|
|
||||||
2. Clique em **"Criar Credenciais"** > **"Chave de API"**
|
|
||||||
3. Copie a chave gerada (você precisará dela depois)
|
|
||||||
|
|
||||||
### 4. Configurar Restrições de Segurança (Recomendado)
|
|
||||||
|
|
||||||
Para proteger sua chave de API:
|
|
||||||
|
|
||||||
1. Clique na chave criada para editá-la
|
|
||||||
2. Em **"Restrições de API"**:
|
|
||||||
- Selecione **"Restringir chave"**
|
|
||||||
- Escolha **"Geocoding API"**
|
|
||||||
3. Em **"Restrições de aplicativo"**:
|
|
||||||
- Para desenvolvimento local: escolha **"Referenciadores de sites HTTP"**
|
|
||||||
- Adicione: `http://localhost:*` e `http://127.0.0.1:*`
|
|
||||||
- Para produção: adicione o domínio do seu site
|
|
||||||
4. Clique em **"Salvar"**
|
|
||||||
|
|
||||||
### 5. Configurar no Projeto
|
|
||||||
|
|
||||||
1. No diretório `apps/web/`, copie o arquivo de exemplo:
|
|
||||||
```bash
|
|
||||||
cp .env.example .env
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Abra o arquivo `.env` e adicione sua chave:
|
|
||||||
```env
|
|
||||||
VITE_GOOGLE_MAPS_API_KEY=sua_chave_aqui
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Reinicie o servidor de desenvolvimento:
|
|
||||||
```bash
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6. Verificar se está funcionando
|
|
||||||
|
|
||||||
1. Acesse a página de **Endereços de Marcação** (`/ti/configuracoes-ponto/enderecos`)
|
|
||||||
2. Clique em **"Novo Endereço"**
|
|
||||||
3. Preencha um endereço e clique em **"Buscar GPS"**
|
|
||||||
4. Se configurado corretamente, verá a mensagem: *"Coordenadas encontradas via Google Maps!"*
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 💰 Custos
|
|
||||||
|
|
||||||
### Google Maps Geocoding API
|
|
||||||
|
|
||||||
- **$5.00 por 1.000 requisições** (primeiros 40.000 são gratuitos por mês)
|
|
||||||
- **$0.005 por requisição** após os 40.000 gratuitos
|
|
||||||
|
|
||||||
> 💡 Para a maioria dos casos de uso, os 40.000 gratuitos são suficientes!
|
|
||||||
|
|
||||||
### OpenStreetMap (Fallback)
|
|
||||||
|
|
||||||
- **100% Gratuito** e ilimitado
|
|
||||||
- Sem necessidade de configuração
|
|
||||||
- Precisão levemente menor, mas ainda muito boa
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔄 Como funciona o sistema
|
|
||||||
|
|
||||||
O sistema foi projetado para usar uma estratégia de **fallback inteligente**:
|
|
||||||
|
|
||||||
1. **Primeiro**: Tenta buscar via Google Maps (se API key configurada)
|
|
||||||
2. **Se falhar ou não tiver API key**: Usa automaticamente OpenStreetMap
|
|
||||||
3. **Feedback**: Informa qual serviço foi usado na mensagem de sucesso
|
|
||||||
|
|
||||||
Isso garante que o sistema sempre funcione, mesmo sem a API key do Google Maps.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔒 Segurança
|
|
||||||
|
|
||||||
### ⚠️ Importante
|
|
||||||
|
|
||||||
- **Nunca** commite o arquivo `.env` no Git (já está no .gitignore)
|
|
||||||
- **Nunca** compartilhe sua chave de API publicamente
|
|
||||||
- Configure **restrições de API** no Google Cloud Console
|
|
||||||
- Para produção, use variáveis de ambiente seguras no seu provedor de hospedagem
|
|
||||||
|
|
||||||
### Configuração em Produção
|
|
||||||
|
|
||||||
Para ambientes de produção (Vercel, Netlify, etc.):
|
|
||||||
|
|
||||||
1. Acesse as configurações do projeto no seu provedor
|
|
||||||
2. Vá em **"Environment Variables"** ou **"Variáveis de Ambiente"**
|
|
||||||
3. Adicione: `VITE_GOOGLE_MAPS_API_KEY` com o valor da sua chave
|
|
||||||
4. Faça o deploy novamente
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ❓ Solução de Problemas
|
|
||||||
|
|
||||||
### A busca não está usando Google Maps
|
|
||||||
|
|
||||||
- Verifique se a variável `VITE_GOOGLE_MAPS_API_KEY` está no arquivo `.env`
|
|
||||||
- Reinicie o servidor de desenvolvimento
|
|
||||||
- Verifique no console do navegador se há erros
|
|
||||||
|
|
||||||
### Erro: "This API project is not authorized to use this API"
|
|
||||||
|
|
||||||
- Verifique se a **Geocoding API** está ativada no projeto
|
|
||||||
- Aguarde alguns minutos após a ativação (pode levar até 5 minutos)
|
|
||||||
|
|
||||||
### Erro: "API key not valid"
|
|
||||||
|
|
||||||
- Verifique se copiou a chave corretamente
|
|
||||||
- Verifique se as restrições de API permitem o uso da Geocoding API
|
|
||||||
- Verifique se as restrições de aplicativo permitem seu domínio/endereço
|
|
||||||
|
|
||||||
### Mensagem: "Coordenadas encontradas via OpenStreetMap"
|
|
||||||
|
|
||||||
- Isso é normal se:
|
|
||||||
- Não há API key configurada
|
|
||||||
- A API key não é válida
|
|
||||||
- O Google Maps falhou na busca
|
|
||||||
- O sistema continua funcionando normalmente com OpenStreetMap
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📚 Recursos Úteis
|
|
||||||
|
|
||||||
- [Google Cloud Console](https://console.cloud.google.com/)
|
|
||||||
- [Documentação Geocoding API](https://developers.google.com/maps/documentation/geocoding)
|
|
||||||
- [Preços Google Maps](https://developers.google.com/maps/billing-and-pricing/pricing)
|
|
||||||
- [OpenStreetMap Nominatim](https://nominatim.org/)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ✅ Resumo
|
|
||||||
|
|
||||||
1. ✅ Crie projeto no Google Cloud
|
|
||||||
2. ✅ Ative Geocoding API
|
|
||||||
3. ✅ Crie chave de API
|
|
||||||
4. ✅ Configure restrições (recomendado)
|
|
||||||
5. ✅ Adicione `VITE_GOOGLE_MAPS_API_KEY` no `.env`
|
|
||||||
6. ✅ Reinicie o servidor
|
|
||||||
|
|
||||||
**Pronto!** O sistema agora usará Google Maps para busca de coordenadas com maior precisão.
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user