Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Organize bills, expenses, income and installments for the family in one place.
AI translation
Organize contas, despesas, receitas e parcelas da família em um só lugar.
FinanceTypeScript · PLpgSQLGitHub @jveigaa23OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Aplicativo web instalável (PWA) para organizar as finanças da família: contas a pagar, despesas, receitas, parcelas, juros, orçamentos e relatórios. Feito para uso diário no celular por pessoas sem familiaridade técnica, e utilizável também no computador. O Cashly não movimenta dinheiro nem se conecta a bancos. Todos os registros são manuais. Estimativas de juros e multas não substituem os valores oficiais do contrato, boleto ou credor.Read the full README ↗
Aplicativo web instalável (PWA) para organizar as finanças da família: contas a pagar, despesas, receitas, parcelas, juros, orçamentos e relatórios. Feito para uso diário no celular por pessoas sem familiaridade técnica, e utilizável também no computador.
O Cashly não movimenta dinheiro nem se conecta a bancos. Todos os registros são manuais. Estimativas de juros e multas não substituem os valores oficiais do contrato, boleto ou credor.
| Fase | Conteúdo | Situação |
|---|---|---|
| 0 | Inspeção e planejamento — docs/00-planejamento.md | Concluída |
| 1 | Fundação, identidade visual e PWA | Concluída |
| 2 | Banco de dados, autenticação e segurança (Supabase) | Concluída — pendências de configuração abaixo |
| 3 | Contas, despesas, receitas e pagamentos manuais | Concluída |
| 4 | Juros, multas, recorrências e parcelas | Concluída |
| 5 | Dashboard, orçamento, gráficos e relatórios | Concluída |
| 6 | Notificações internas, push e WhatsApp (opcional) | Concluída — push depende de configuração (Fase 8); WhatsApp não ativado |
| 7 | Testes de integração, E2E, segurança, acessibilidade | Concluída |
| 8 | Produção, documentação final e implantação | Concluída — no ar em https://cashly-familia.vercel.app |
No ar em https://cashly-familia.vercel.app (implantação, guia dos pais). Funcionam: login, família, convites, contas a pagar (com pagamentos parciais, encargos pagos, cancelamentos e histórico) e lançamentos de receitas e despesas (realizados e previstos), juros e multas estimados, contas e lançamentos que se repetem e parcelamentos (com juros simples opcionais), painel com saldo registrado e gráficos, orçamento mensal por categoria e relatórios mensal/trimestral/anual com planilha (CSV) e impressão/PDF, avisos no app (contas a vencer e vencidas, parcelas, orçamento) e avisos no celular (Web Push), que passam a funcionar quando as chaves forem configuradas na hospedagem.
Pendências do responsável (ver docs/implantacao.md):
URLs de redirecionamento no Supabase (Site URL e /auth/callback de
produção), SUPABASE_SECRET_KEY na Vercel (avisos no celular) e, se quiser
um APK, o pacote do PWABuilder.
corepack enable habilita a versão fixada em package.json)pnpm exec playwright install chromium
se ainda não estiver instalado)pnpm install
cp .env.example .env.local # preencha URL e chave publishable do Supabase
pnpm dev # http://localhost:3000
O Service Worker só é registrado no build de produção, para não interferir no recarregamento automático do modo de desenvolvimento. Para testar a PWA:
pnpm build && pnpm start
| Comando | Descrição |
|---|---|
pnpm dev | Servidor de desenvolvimento |
pnpm build / pnpm start | Build e servidor de produção |
pnpm lint | ESLint |
pnpm typecheck | Tipos de rotas + tsc --noEmit |
pnpm test | Testes unitários e de componentes (Vitest) |
pnpm test:watch | Vitest em modo contínuo |
pnpm test:e2e | Build + Playwright (celular 360 px e desktop) contra a pilha Supabase local, com login real; inclui a varredura de qualidade (tests/e2e/authenticated/quality.spec.ts: axe WCAG 2.1 AA em claro/escuro, 320/360 px, fonte grande 150%/200%, alvos de toque, CSP e console) |
pnpm test:db | Testes de banco/RLS em PostgreSQL temporário e isolado |
pnpm test:integration | Consultas e ações do servidor via supabase-js + PostgREST real, local |
pnpm check | Lint + typecheck + unitários + banco + integração |
pnpm stack:local | Sobe uma pilha Supabase local (PostgreSQL + Auth + REST) em http://127.0.0.1:54321 |
pnpm icons | Regera os ícones a partir do desenho em scripts/generate-icons.mjs |
A política de segurança de conteúdo (CSP) permite scripts inline: o modo
de pré-renderização parcial do Next não é compatível com nonces. Scripts de
outros sites, eval, iframes e conexões externas continuam bloqueados.
A acessibilidade foi verificada com axe (automático), teclado e larguras pequenas; ainda não houve teste com leitor de tela real (TalkBack) nem com os pais usando o app.
Sem SMTP próprio, e-mails de confirmação/recuperação só chegam a membros da equipe do Supabase.
Cada conta participa de uma única família.
A preferência de tema fica salva no aparelho (localStorage), não na conta.
Os testes (banco, integração e E2E) rodam numa pilha Supabase local (PostgreSQL 16 + GoTrue + PostgREST); o projeto real usa PostgreSQL 17. Requisitos: PostgreSQL 15+ instalado e acesso a github.com para baixar PostgREST/GoTrue na primeira execução.
Uma página inexistente dentro do app (ex.: conta de outra família) mostra “Página não encontrada”, mas com status HTTP 200 por causa do streaming.
Juros compostos (tabela Price) e ajuste de vencimento para dia útil não são calculados; as estimativas de encargos não são valores oficiais.
Repetições semanais não existem (só mensal e anual); editar a regra de uma repetição exige parar e cadastrar de novo.
Categorias ainda não podem ser editadas pela interface (usam o cadastro inicial). Contas de registro podem ter nome e saldo inicial ajustados em Ajustes, mas não criadas/arquivadas; o saldo inicial não pode ser negativo.
O “Saldo registrado” é calculado só com o que foi lançado no Cashly; não é o saldo do banco.
O relatório tem limite de 20.000 lançamentos por período (mostra erro em vez de totais incompletos).
A verificação de senha vazada (HaveIBeenPwned, por k-anonimato) é feita pelo app no cadastro e na troca de senha; se o serviço estiver fora do ar, a senha é aceita (o login não fica bloqueado por um serviço externo).
Uso offline limitado a uma página informativa; nada é salvo sem conexão.
Avisos no app são gerados quando a pessoa abre o Cashly; avisos no celular dependem do agendador diário (Vercel Cron, ~8h de Brasília no plano grátis, horário aproximado) e das chaves VAPID. Contas vencidas há mais de 30 dias não geram aviso novo (continuam no painel e em Contas).
WhatsApp não envia mensagens: exige conta Meta Business, número e modelos aprovados, com custo; aparece como "Não configurado".
O teste E2E não cobre a atualização do Service Worker (limitação do Playwright); o fluxo é coberto por testes unitários.