Recursos
O que o Financy faz hoje, e o que vem a seguir
O Financy está sendo reconstruído. O que funciona hoje: contas em qualquer moeda e a base por trás delas: login, acesso compartilhado com funções, atualizações ao vivo, um app offline, exportação, nove idiomas e seu próprio servidor. Cada seção leva ao código dela.
Por Anton ShubinAtualizado em
Lançamentos e orçamentos ainda não existem. Veja em que ponto está a reconstrução.
Funciona hoje
A base onde vai ficar o dinheiro da sua família
Estas partes funcionam e são testadas na CI. As contas em qualquer moeda e suas categorias já estão aqui; os lançamentos vêm a seguir.
Já funcionaEntrar com Google e GitHub exige chaves próprias do servidor, então uma instalação nova começa só com o login por e-mail.
Cada conta na própria moeda
Dinheiro, contas bancárias, cartões, poupança, ativos e dívidas, cada um na própria moeda, agrupados por tipo e com uma conta padrão. Toda a família vê cada mudança na hora.
Para desenvolvedores
- O servidor calcula cada saldo quando ele é lido e nunca o guarda, então ele não se desvia
- Os valores são inteiros na menor unidade da moeda: o iene não tem nenhuma, o dinar tem três casas
- Quem só visualiza vê as contas; só editores ou acima as alteram, e o servidor confere
Categorias de um só nível
Organize despesas e receitas em categorias, cada uma com seu ícone e sua cor. Ponha Mercado e Comer fora dentro de Alimentação. Uma família nova começa com uma lista curta no seu idioma.
Para desenvolvedores
- Uma categoria nunca é excluída: arquivá-la a tira das listas de escolha, e os lançamentos passados a mantêm
- Uma subcategoria tem o tipo da principal, e uma principal não pode ter principal, conferido no servidor
- Quem só vê lê as categorias; só um editor ou acima as altera
Login resolvido
Você cria a conta com e-mail e senha e confirma o e-mail com um código. Pode redefinir uma senha esquecida, continuar com Google ou GitHub, entrar com uma chave de acesso ou receber um código por e-mail. Um app autenticador adiciona a verificação em duas etapas (2FA), e você vê todos os dispositivos conectados e pode desconectar os outros.
Para desenvolvedores
- Senhas com hash PBKDF2-SHA-256 via Web Crypto, 600.000 iterações por padrão
- Cookies de sessão assinados e um histórico de auditoria de cada evento de login
- Tokens de API pessoais, guardados só como hashes com chave
Uma família, cada pessoa com seu próprio login
Uma família (um grupo, no app) são as pessoas que dividem o dinheiro. Convide seu parceiro, sua parceira ou parentes, dê a cada um uma função de leitor a dono e transfira a família para outro dono quando precisar. Uma família excluída pode ser restaurada em até 30 dias, e o registro de atividade mostra quem mudou o quê.
Para desenvolvedores
- A família é a única fronteira pela qual todo dado é verificado
- Cada pessoa vê só as famílias de que faz parte
- Convites, troca de funções e transferência de dono, cada um com seus próprios testes
Mudanças aparecem em todo dispositivo sem recarregar
Quando alguém da família muda algo, os outros veem na hora, em todo dispositivo aberto. Um notebook que sai da suspensão recupera o que perdeu.
Para desenvolvedores
- Um WebSocket padrão, com um número de sequência em cada mudança
- Um dispositivo que reconecta busca o que perdeu
Um app que abre sem internet
Instale o Financy no celular ou no computador: ele abre offline e mostra o que viu por último.
Para desenvolvedores
- Uma cópia local de cada lista no IndexedDB, e uma fila de gravação com chaves de idempotência
- “Manter a minha versão” ou “Usar a outra versão” em cada conflito
Seus dados vão com você
O dono pode exportar uma família para um arquivo JSON aberto a qualquer hora, e importá-lo depois como uma nova família. A importação nunca sobrescreve o original.
Para desenvolvedores
- O arquivo inteiro é verificado antes de qualquer gravação, e depois importado num único passo
- Cada registro recebe um id novo, então uma importação nunca colide com o que já existe
Em nove idiomas
O app e este site falam inglês, russo, espanhol, alemão, português (Brasil), árabe, francês, japonês e chinês simplificado. Cada pessoa escolhe seu idioma no app, então uma família pode usar mais de um.
Para desenvolvedores
- Um catálogo por idioma, verificado por um teste que aponta cada mensagem que falta
- Números e datas pelo Intl do próprio navegador
- As páginas em árabe são lidas da direita para a esquerda
Roda no seu próprio servidor
O Financy roda em qualquer servidor Linux, alugado ou seu, com Docker Compose. Hospedar você mesmo é grátis sob a licença AGPL‑3.0, e os dados da sua família ficam no seu servidor.
Para desenvolvedores
- Traefik na frente, com certificados automáticos
- Postgres e Valkey ao lado dos apps
- Métricas, logs e alertas com VictoriaMetrics, VictoriaLogs e Grafana
- Um backup diário e criptografado do banco, opcional, com os passos de restauração por escrito
- Traefik
- Postgres
- Valkey
- VictoriaMetrics
- VictoriaLogs
- Grafana
- Alertmanager
- Garage file store
- restic backups
Perguntas
O Financy faz isso?
Posso rodar o Financy em hospedagem compartilhada ou serverless?
Não. O Financy roda como contêineres permanentes com Docker Compose num servidor Linux, porque a API mantém conexões WebSocket abertas e um worker esvazia uma fila.
Qual banco de dados o Financy usa?
Postgres. As migrações, consultas e testes de integração contam com ele.
Tem app para celular?
Ainda não está nas lojas. Hoje o app web se instala pelo navegador no celular e no computador e abre offline.