RevParts
Loja de peças auto end-to-end: pesquisa por fitment, catálogo, página de produto com galeria, serviço On Demand e backoffice.
// Portfolio
FULL-STACK & MOBILE DEVELOPER · 5 ANOS
Construo SaaS, mobile e infraestrutura com segurança, qualidade e automação a sério - da arquitetura ao deploy.
// Sobre
Sou full-stack e mobile developer com 5 anos de experiência profissional. Trabalho .NET Core, Angular, Kotlin e mobile multiplataforma - e levo a infraestrutura até ao fim, com homelab próprio e CI/CD self-hosted.
// Percurso
Início numa software house portuguesa: consultoria, implementação e suporte de ERP (PHC), gestão documental e apps de equipas comerciais. Ponto de contacto técnico em todo o ciclo - levantamento, parametrização, formação e suporte.
Desenvolvi de forma autónoma uma app web de gestão e marcação de férias (Angular + Node.js + SQL Server), para conclusão do CTeSP em Desenvolvimento Web e Multimédia no IPCA (pós-laboral).
Programador principal dos produtos da empresa: app de trading multi-plataforma (v5 → v6), ANE de impressão nativa, registo de tempos de produção e app Android de picking - mantendo o papel de consultor.
Duplo papel na empresa e, fora dela, SaaS próprios em produção (+50.000 utilizadores no flagship) sobre homelab self-hosted com CI/CD.
// Números
// Habilidades
// Como trabalho
OWASP por defeito: IDOR, SQL injection, auth, rate limiting, secrets e RGPD. A base, não um extra.
Testes automatizados, mutation testing ≥70%, complexidade ciclomática ≤10 e BDD com Gherkin.
Staging e produção, fluxo tag-driven (Gitea com mirror para GitHub) e launch checklists.
Claude Code com skills, hooks e agents num vault partilhado. Acelera sem baixar a fasquia.
Homelab com Docker, Gitea CI/CD, NPM, WireGuard, PostgreSQL e MSSQL, com backups automatizados.
98 tabelas e ~80 queries de SQL Server para PostgreSQL à mão, com um gate que faz grep ao próprio source para banir T-SQL e impedir regressões.
70 POSTs seguidos sem um único 429: o k6 apanhou o que os testes de atributos não viam. Testar comportamento, não decoradores.
Um backup que falhava em silêncio há 13 dias, detetado e corrigido por monitorização. Um backup nunca restaurado não é backup.
// Trabalho selecionado
Loja de peças auto end-to-end: pesquisa por fitment, catálogo, página de produto com galeria, serviço On Demand e backoffice.
SaaS de finanças pessoais: OCR de recibos, IA de categorização, Stripe multi-tier, tempo real e E2E. +50.000 utilizadores.
App de trading multi-plataforma com integração simultânea a vários ERP. Liderei a evolução v5 → v6. Projeto de empresa (NDA).
Registo de tempos de tarefas na produção agrícola (replicação de plantas em estufas): formulários condicionais encadeados e backoffice de análises por datas, plantas e operadores.
App Android nativa de picking e expedição em armazém grossista: picagem de etiquetas com baixa automática de quantidades, caixas com N plantas, criação de vasos e integração em linhas no ERP PHC.
Offline-first cifrado. A chave nunca sai do dispositivo; o servidor só guarda blobs opacos. Deploy CI/CD self-hosted.
Air Native Extension que liga AS3 ao código nativo de impressão em iOS (Obj-C) e Android (Java).
Assistente por Telegram, voz no PC e no carro (CarPlay) e OBD2, com privacidade híbrida: LLM local (Ollama) para dados sensíveis, Claude na cloud para o resto.
Infraestrutura production-grade em servidor próprio: VPN, containers e CI/CD a correr em casa, documentado em runbooks.
Pipeline autónomo de tendência a clip curto: núcleo Python (faster-whisper, scoring, render ffmpeg PT-aware) + gestão Fastify/BullMQ e dashboard Angular. Custo de LLM ~0,012 USD/clip via OpenRouter.
Engenharia multi-agente em Gitea self-hosted: vários agentes em paralelo, cada um isolado no seu git worktree, com modelo de propriedade que evita guerras de merge. Cada PR passa por um quality gate com catraca de métricas.
Sistema de retalho portátil, constraint-driven: corre de pen USB como binário único, offline-first, com cifragem at-rest e importação de uma base de dados legada.
// Contacto
luisfernandesa664@gmail.com