Este é um aplicativo completo em Flutter para gestão de pequenos negócios, integrado com Supabase.
- Dashboard: Resumo de vendas, contas a receber e gráfico de categorias.
- Gestão de Estoque: Cadastro de produtos, controle de saldo e histórico de entradas.
- Vendas: Fluxo de venda com carrinho de compras e seleção de clientes.
- Contas a Receber: Controle de parcelas e pagamentos pendentes.
- Clientes: Cadastro rápido e atalho para WhatsApp.
- Flutter SDK (>= 3.0.0)
- Conta no Supabase
No Editor SQL do Supabase, execute o seguinte script para criar as tabelas:
CREATE TABLE clientes (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
nome TEXT NOT NULL,
celular TEXT,
referencia TEXT,
bairro TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE TABLE produtos (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tipo TEXT NOT NULL,
modelo TEXT NOT NULL,
complemento TEXT,
fornecedor TEXT,
preco_custo NUMERIC DEFAULT 0,
valor_venda NUMERIC DEFAULT 0,
quantidade_estoque INTEGER DEFAULT 0
);
CREATE TABLE vendas (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
cliente_id UUID REFERENCES clientes(id),
data_venda TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
valor_total NUMERIC DEFAULT 0,
tipo_pagamento TEXT, -- a_vista, parcelado, fiado
status TEXT DEFAULT 'concluida'
);
CREATE TABLE itens_venda (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
venda_id UUID REFERENCES vendas(id),
produto_id UUID REFERENCES produtos(id),
quantidade INTEGER NOT NULL,
preco_unitario NUMERIC NOT NULL,
custo_unitario NUMERIC NOT NULL
);
CREATE TABLE parcelas (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
venda_id UUID REFERENCES vendas(id),
numero_parcela INTEGER,
valor NUMERIC NOT NULL,
data_vencimento DATE NOT NULL,
data_pagamento DATE,
status TEXT DEFAULT 'pendente' -- pendente, pago
);
CREATE TABLE entradas_estoque (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
produto_id UUID REFERENCES produtos(id),
quantidade_comprada INTEGER NOT NULL,
custo_unitario NUMERIC NOT NULL,
fornecedor TEXT,
data_entrada TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
- Clone o repositório.
- No arquivo
lib/main.dart, substituaSUA_URL_DO_SUPABASEeSUA_ANON_KEYpelas suas credenciais encontradas em Project Settings > API no painel do Supabase. - Rode os comandos: flutter pub get flutter run
lib/models: Classes de dados.lib/services: Integração direta com Supabase.lib/providers: Lógica de negócio e estado da aplicação.lib/screens: Telas da interface.lib/utils: Constantes e formatadores (Moeda R$).