Estou sempre pronto para enfrentar desafios e soluções complexas para oferecer as melhores experiências ao utilizador.

Country

Portugal

Website

https://josematoso.com

Links Sociais

Project

Piiply

Piiply é uma aplicação web moderna e completa de gestão de dívidas construída com ASP.NET Core 9.0 que permite a indivíduos rastrear, gerir e cobrar dívidas pessoais e empresariais. A plataforma oferece notificações automáticas por email, suporte multi-moeda, internacionalização (Inglês/Português), rastreamento de pagamentos em tempo real e uma interface responsiva com temas claro/escuro.

Cliente

José Matoso

Data de início

out 01, 2025
Piiply

Piiply é uma plataforma de gestão de dívidas, projetada para indivíduos que desejam controlar as suas obrigações financeiras pessoais. Desenvolvida com tecnologias .NET modernas e seguindo princípios de Clean Architecture, a aplicação oferece ferramentas completas para gestão de dívidas, pagamentos, notificações automáticas e relatórios financeiros.

Core Features

Debt Management

  • Criação e acompanhamento de dívidas com informações detalhadas (nome, e-mail, montante, data de vencimento, descrição).

  • Suporte às perspetivas de credor e devedor (IsOwner).

  • Distinção entre dívidas pessoais e dívidas de serviços/negócios (DebtorType).

  • Cálculos de saldo em tempo real e rastreamento de pagamentos.

  • Gestão de estados da dívida: Open, Partially Paid, Paid, Canceled, Overdue.

  • Ordenação por prioridade (atrasadas, a vencer em breve, normais).

  • Páginas públicas de visualização para partilha transparente.

Automated Notification System

  • Due Today Notifications: lembretes automáticos a cada 10 minutos para dívidas que vencem no dia.

  • Overdue Notifications: alertas diários às 9h UTC para dívidas com mais de dois dias de atraso.

  • Payment Confirmations: confirmações instantâneas por e-mail ao registar um pagamento.

  • Debt Updates: notificações automáticas para criação, atualização e cancelamento de dívidas.

  • Prevenção de duplicados com controlo em base de dados.

  • Conteúdo de e-mails personalizado com informações do credor.

Multi-Currency Support

  • Formatação dinâmica de moeda para mais de 20 moedas (EUR, USD, GBP, BRL, JPY, CAD, AUD, etc.).

  • Preferência de moeda definida por utilizador e armazenada no perfil.

  • Deteção automática de símbolo e formato de moeda.

  • Integração com API externa para dados de câmbio em tempo real.

  • Exibição consistente da moeda em toda a aplicação e e-mails.

Internationalization (i18n)

  • Suporte completo para inglês e português.

  • Alternância de idioma com armazenamento persistente da preferência.

  • Localização de elementos da interface, mensagens e modelos de e-mail.

  • Culturas distintas para formatação de dados e interface.

  • Sistema de tradução baseado em recursos (.resx).

Dashboard & Reporting

  • Indicadores em tempo real: Total Open Balance, Paid This Month, Overdue Count, Total I Owe.

  • Filtro por intervalo de datas para relatórios personalizados.

  • Lista de dívidas recentes com ordenação por prioridade.

  • Análise de principais devedores.

  • Comparação mensal de pagamentos.

  • Exportação de registos financeiros.

User Management

  • Integração com ASP.NET Core Identity e suporte a SSO.

  • Autenticação por e-mail com código de confirmação de 6 dígitos.

  • Validação de perfil completo para novos utilizadores.

  • Funcionalidade segura de redefinição de palavra-passe.

  • Gestão de perfil com preferências de moeda.

Technical Architecture

Technology Stack

  • Framework: ASP.NET Core 9.0 (Razor Pages)

  • Base de Dados: PostgreSQL 16+ com Entity Framework Core 9.0

  • Cache: Redis 7.0+ com StackExchange.Redis

  • Tarefas em segundo plano: Hangfire com armazenamento PostgreSQL

  • Logging: Serilog com integração Sentry

  • E-mail: SMTP com modelos HTML dinâmicos

  • Frontend: Bootstrap 5, FontAwesome e JavaScript puro

  • Estilo: CSS personalizado com navegação otimizada para iOS e efeitos de vidro (glassmorphism)

Architecture Pattern

  • Layered Architecture: separação entre camadas de Presentation, Service, Data Access e Infrastructure.

  • Service Layer Pattern: serviços dedicados para a lógica de negócio (DebtDetailsService, DebtManagementService, DebtValidationService, etc.).

  • Repository Pattern: abstração de acesso a dados via IDebtRepository.

  • Outbox Pattern: processamento confiável de mensagens com event sourcing.

  • Dependency Injection: configuração completa de DI para todos os serviços.

Key Services

  • DebtDetailsService: operações de dívida (obter detalhes, adicionar pagamento, atualizar, cancelar).

  • DebtManagementService: operações CRUD e criação de dívidas.

  • DebtValidationService: validação de regras de negócio.

  • DebtFilterService: pesquisa e filtragem.

  • DebtQueryService: consultas complexas e paginação.

  • GenericEmailService: envio de e-mails com conteúdo dinâmico.

  • CurrencyFormattingService: formatação e mapeamento de moedas.

  • LocalizationService: gestão de internacionalização e recursos.

  • IdentityService: autenticação e gestão de perfil.

  • OutboxService: publicação e processamento confiável de eventos.

Background Jobs (Hangfire)

  • OutboxProcessorJob: processa eventos a cada 2 minutos.

  • DueTodayNotificationJob: verifica dívidas vencendo a cada 10 minutos.

  • OverdueNotificationJob: envia alertas diários às 9h UTC.

  • Cleanup Jobs: limpeza automática de notificações antigas.

Database Schema

  • Users: integra ASP.NET Identity com campos personalizados (FullName, MainCurrency, IsProfileComplete).

  • Debts: entidade principal com relações para utilizadores e pagamentos.

  • Payments: registos de pagamentos associados às dívidas.

  • OutboxEvents:event sourcing para processamento confiável.

  • DueTodayNotifications / OverdueNotifications: histórico e prevenção de duplicados.

Security Features

  • Encriptação HTTPS em produção.

  • Prevenção de SQL Injection via Entity Framework.

  • Proteção contra XSS com Razor Pages.

  • Proteção CSRF ativada.

  • Cookies seguros com HttpOnly e SameSite.

  • Middleware de conclusão de perfil para controlo de acesso.

  • Integração com Sentry para rastreamento de erros.

Performance Optimizations

  • Cache distribuído com Redis e expiração de 30 segundos.

  • Invalidação de cache em alterações de dados.

  • Consultas otimizadas com índices adequados.

  • Processamento em segundo plano para operações não bloqueantes.

  • CSS acelerado por hardware (translateZ(0)).

  • Lazy loading e paginação para grandes volumes de dados.

Responsive Design

  • Abordagem mobile-first com Bootstrap 5.

  • Navegação otimizada para iOS com suporte a safe area.

  • Efeitos de vidro com backdrop blur.

  • Suporte a temas claro e escuro com transições suaves.

  • Elementos otimizados para toque.

  • Conformidade com acessibilidade (ARIA, HTML semântico).

Use Cases

  • Gestão de dívidas pessoais.

  • Gestão de pagamentos de freelancers e clientes.

  • Gestão de dívidas e cobranças em pequenas empresas.

  • Divisão de despesas entre indivíduos.

  • Gestão de empréstimos pessoais com registo de pagamentos.

Deployment

  • Docker Support: ficheiros Dockerfile e docker-compose.

  • CI/CD: pipelines no GitHub Actions para deploy automatizado.

  • Health Checks:endpoints embutidos de verificação de saúde.

  • Monitoring: integração com Sentry para erros e performance.

  • Logging: Serilog estruturado com saída para consola e ficheiros.

Development Workflow

  • Arquitetura limpa com separação de responsabilidades.

  • Camada de serviços modular e testável.

  • Tratamento consistente de erros e validações.

  • Logging detalhado para depuração e monitorização.

  • Localização baseada em recursos para fácil tradução.

  • Configuração modular através de extension methods.

Piiply representa uma solução moderna, escalável e pronta para produção para gestão de dívidas pessoais e empresariais, combinando tecnologias web avançadas, UX cuidadosamente pensada e uma arquitetura backend robusta.

Compartilhar

Deixe um comentário

Seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

A sua experiência neste site será melhorada ao permitir cookies. Política de Cookies