| Título | Contato / Empresa | Estágio | Valor | Vencimento | Tags | Ações |
|---|
Agenda de Clientes
Gerencie os contatos vinculados aos orçamentos.
Indicadores & Funil de Vendas
Resultados e conversões do CRM Aero Tecnologia em tempo real.
Acompanhamento do Funil
Volume financeiro aproximado de negociação por etapa.
Integração com Supabase
Sincronize o site web e o app Android via backend compartilhado. Ambos leem e escrevem no mesmo banco de dados.
Arquitetura de integração
O app Android usa Room (SQLite local). O site web usa Supabase (PostgreSQL remoto). Para sincronizar, você precisa de uma camada de API REST compartilhada.
┌─────────────┐ REST API ┌──────────────────┐ │ App Android │ ─────────────▶│ Supabase Cloud │ │ (Room local) │◀───────────── │ (PostgreSQL) │ └─────────────┘ └────────┬─────────┘ │ ┌────────────────────────┘ ▼ ┌────────────────┐ │ TR CRM Web │ (este site) └────────────────┘
Criar projeto no Supabase
Acesse supabase.com, crie um novo projeto e copie a URL e a anon key.
Criar as tabelas (SQL)
Execute no SQL Editor do Supabase:
-- Contatos CREATE TABLE contacts ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, email TEXT, phone TEXT, company TEXT, created_at TIMESTAMPTZ DEFAULT NOW() ); -- Estágios do Kanban CREATE TABLE stages ( key TEXT PRIMARY KEY, display_name TEXT NOT NULL, color BIGINT, icon_name TEXT, order_index INT DEFAULT 0 ); -- Tags CREATE TABLE tags ( name TEXT PRIMARY KEY, color BIGINT ); -- Tarefas / Negócios CREATE TABLE tasks ( id SERIAL PRIMARY KEY, title TEXT NOT NULL, description TEXT, estimate_value NUMERIC(12,2) DEFAULT 0, status TEXT NOT NULL DEFAULT 'UNREGISTERED', due_date BIGINT, assigned_contact_id INT REFERENCES contacts(id) ON DELETE SET NULL, tags TEXT DEFAULT '', created_at BIGINT DEFAULT EXTRACT(EPOCH FROM NOW())*1000 );
Configurar credenciais neste site
Clique no botão abaixo e insira a URL e a chave do seu projeto.
Adaptar o app Android
No app, adicione a dependência do cliente Supabase Kotlin e substitua as queries do Room por chamadas à API REST. Use o arquivo .env.example já incluso no projeto.
// build.gradle.kts implementation("io.github.jan-tennert.supabase:postgrest-kt:2.x.x") // Inicialização val supabase = createSupabaseClient( supabaseUrl = "https://SEU_PROJETO.supabase.co", supabaseKey = BuildConfig.SUPABASE_ANON_KEY ) { install(Postgrest) } // Exemplo: buscar tarefas val tasks = supabase.from("tasks") .select().decodeList<CRMTask>()
Realtime (dados ao vivo)
Ative Realtime no Supabase para que app e site se atualizem instantaneamente quando qualquer ponta muda um dado.
// No site (JavaScript) const channel = supabase .channel('tasks-changes') .on('postgres_changes', { event: '*', schema: 'public', table: 'tasks' }, (payload) => { // atualiza UI automaticamente loadData() }) .subscribe()