Getting Started
Como configurar e rodar o projeto OLP localmente
1. Pré-requisitos
- Node.js 18+ ou Bun
- Acesso ao projeto Supabase (
mjvuzsizjlcalyfmbquy)
2. Instalação
bash
git clone <repo-url>
cd olp
npm install # ou bun install
npm run dev # Vite dev server em http://localhost:51733. Variáveis de Ambiente (.env)
env
# Supabase (obrigatórios)
VITE_SUPABASE_PROJECT_ID="mjvuzsizjlcalyfmbquy"
VITE_SUPABASE_PUBLISHABLE_KEY="eyJ..."
VITE_SUPABASE_URL="https://mjvuzsizjlcalyfmbquy.supabase.co"
# Gateway Cloudflare Worker (produção)
VITE_USE_WORKER=true
VITE_WORKER_URL=https://gateway.olp.digitalSe VITE_USE_WORKER não for true, chamadas vão direto ao Supabase.
4. Secrets do Supabase
14 secrets configurados no projeto:
| Secret | Propósito |
|---|---|
SUPABASE_URL | URL do projeto |
SUPABASE_ANON_KEY | Chave anônima (pública) |
SUPABASE_SERVICE_ROLE_KEY | Chave admin (bypass RLS) |
SUPABASE_DB_URL | URL direta do banco |
SUPABASE_PUBLISHABLE_KEY | Alias da anon key |
OLP_JWT_SECRET | Secret para JWT do sistema e portal (unificado — PostgREST exige secret único para RLS) |
OLP_PEPPER_SECRET | Pepper para hashing de senhas (password-helper.ts) |
CRON_SECRET | Autenticação dos jobs CRON |
WASENDER_API_KEY | API key do Wasender (WhatsApp) |
WASENDER_WEBHOOK_SECRET | Secret do webhook Wasender |
MP_ACCESS_TOKEN | MercadoPago access token |
NTFY_TOPIC | Tópico para alertas push via ntfy.sh |
E2E_TEST_PASSWORD | Senha para login E2E em staging |
5. Primeiro Login
Em Preview (Lovable)
- Abra a aplicação no preview
- Digite CPF/INEP/CNPJ de um usuário existente
- Receba OTP por WhatsApp e digite o código de 6 dígitos
Em Produção
- Acesse
https://olp.digital - Digite CPF/INEP/CNPJ
- Receba OTP por WhatsApp
- Digite o código de 6 dígitos
6. Estrutura de Pastas
src/
├── components/ # Componentes React (por módulo)
│ ├── ui/ # shadcn/ui (NÃO modificar)
│ ├── admin-*.tsx # Telas admin
│ ├── dashboard-*.tsx # Dashboards
│ ├── mural-olimpico/ # Módulo mural
│ └── importacao-alunos/ # Módulo importação
├── contexts/ # React Contexts (auth-context)
├── hooks/ # Hooks customizados (useAdmin*, useGestao*, etc.)
├── lib/ # Helpers (edge-function, auth, masks, etc.)
├── pages/ # Pages (cadastro, portal)
├── constants/ # Constantes (log-actions)
├── types/ # TypeScript types
├── integrations/ # Supabase client + types
└── assets/ # SVGs e imagens
supabase/
├── functions/ # Edge Functions (Deno)
│ ├── _shared/ # Helpers compartilhados
│ ├── admin-*/ # Funções admin
│ ├── gestao-*/ # Funções gestão escola
│ └── ...
├── config.toml # Configuração do Supabase CLI
└── migrations/ # Migrações SQL (read-only)
docs/ # Documentação técnica
├── architecture/ # Schema, Edge Functions, Overview
├── development/ # Getting Started, Hooks, Edge Functions
├── security/ # Auth, RLS, Rate Limits, Audit Log
└── operations/ # CRON Jobs, Troubleshooting7. Arquivos Sensíveis (Não Modificar)
src/components/ui/*— biblioteca shadcnsrc/integrations/supabase/types.ts— gerado automaticamenteApp.tsx/main.tsx— estrutura global*.config.*— configs do projetosupabase/migrations/— migrações (read-only)
Referências
docs/architecture/OVERVIEW.md— Visão geral da arquiteturadocs/development/CODING_STANDARDS.md— Padrões de códigodocs/development/NEW_EDGE_FUNCTION.md— Como criar Edge Functionsdocs/development/NEW_HOOK.md— Como criar hooks React