Skip to content

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:5173

3. 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.digital

Se VITE_USE_WORKER não for true, chamadas vão direto ao Supabase.


4. Secrets do Supabase

12 secrets configurados no projeto:

SecretPropósito
SUPABASE_URLURL do projeto
SUPABASE_ANON_KEYChave anônima (pública)
SUPABASE_SERVICE_ROLE_KEYChave admin (bypass RLS)
SUPABASE_DB_URLURL direta do banco
SUPABASE_PUBLISHABLE_KEYAlias da anon key
OLP_JWT_SECRETSecret para JWT do sistema e portal (unificado — PostgREST exige secret único para RLS)

| 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 |


5. Primeiro Login

Em Preview (Lovable)

  1. Abra a aplicação no preview
  2. Digite CPF/INEP/CNPJ de um usuário existente
  3. Receba OTP por SMS e digite o código de 6 dígitos

Em Produção

  1. Acesse https://olp.digital
  2. Digite CPF/INEP/CNPJ
  3. Receba OTP por SMS
  4. 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, Troubleshooting

7. Arquivos Sensíveis (Não Modificar)

  • src/components/ui/* — biblioteca shadcn
  • src/integrations/supabase/types.ts — gerado automaticamente
  • App.tsx / main.tsx — estrutura global
  • *.config.* — configs do projeto
  • supabase/migrations/ — migrações (read-only)

Referências

  • docs/architecture/OVERVIEW.md — Visão geral da arquitetura
  • docs/development/CODING_STANDARDS.md — Padrões de código
  • docs/development/NEW_EDGE_FUNCTION.md — Como criar Edge Functions
  • docs/development/NEW_HOOK.md — Como criar hooks React