Command Palette

Search for a command to run...

olá, chamo-me

João Ferro

A construir sistemas com foco na sua segurança e performance!
Com 🧡 de Lisboa, Portugal.

Trabalho

Projetos

Vulnerability Management Platform

2025-current

Empresa - Produção

Backend em FastAPI combinado com frontend Next.js para centralizar a gestão de vulnerabilidades. Usámos Alembic para gerir migrações de base de dados. Substituímos assim fluxos de trabalho fragmentados por uma interface estruturada e pesquisável (para além de muitas mais funcionalidades) — reduzindo assim a necessidade de triagem manual em muitos casos e permitindo a priorização da remediação baseada em dados, tal como a possível correlação de informação estruturada.

FastAPINext.jsPythonPostgreSQLSecurity

Security by Design & TPRM Platform

2024 - current

Empresa - Produção

Aplicação full-stack Django que automatiza requisitos de Security by Design (SbD) e Third-Party Risk Management (TPRM). Integrei o sistem com diversas verificações automatizadas de conformidade/segurança, explorando boas práticas dos pipelines CI/CD do GitLab. Trabalhei ainda com Power BI para criar dashboards de risco e visualização de dados.

DjangoPythonGRCCI/CDDevSecOpsPostgreSQLPower BIPhishing

Personal Homelab

2024 - current

Pessoal

Hospedagem (o termo em português não favorece muito) de uma infraestrutura de um Fedora Server (um servidor em casa) com vários serviços como Vaultwarden, Portainer, Uptime Kuma — contentorizados via Docker. Scripts personalizados em Python e Bash para automatizar monitorização, healthchecks e backups. Ambiente principalmente para investigações de segurança e testes de rede via virtualização, entre outros casos de uso.

DockerLinuxPythonBashSelf-hostedFedora

Fora de horas

Projetos Pessoais

Coisas que construo fora do trabalho — online e prontas a explorar.

Demo: Janeiro de Cima, Aldeia do Xisto no Zêzere

2026

Pessoal - Online

Homenagem não oficial a Janeiro de Cima, no Fundão, para mostrar o que uma aldeia, junta de freguesia ou município pode ter. Ilustrações SVG desenhadas à mão que seguem a hora de Lisboa do dia para a noite, um passeio em ecrã inteiro pela aldeia, uma agenda que esconde sozinha os eventos passados e um painel Decap CMS para a aldeia editar o conteúdo. Feito em Astro com 9 KB de JavaScript e sem scripts de terceiros, com 14 tipos de dados estruturados para Google e assistentes de IA, llms.txt e uma CSP restrita. Tem uma página que explica como foi feito.

AstroTypeScriptSVGSEO / GEO / AEOJSON-LDDecap CMSCSPCloudflare Pages

Demo: Café de Bairro em Marvila

2026

Pessoal - Online

Site completo para um café fictício em Lisboa, com carta, loja online, agenda de eventos e um laboratório de torra interativo. Feito em Astro com 7 KB de JavaScript, micro-animações em CSS e SVG, dados estruturados para Google e assistentes de IA (Menu, Event, Product, FAQ), llms.txt e uma CSP com hashes. Tem uma página que explica como foi feito.

AstroTypeScriptSEO / GEO / AEOJSON-LDCSPCloudflare Pages

Demos de Sites para Restaurantes

2026

Pessoal - Online

Um template sem dependências que gera um site de uma página por restaurante a partir de um único ficheiro de configuração. Mobile-first, Lighthouse entre 97 e 100 em todas as categorias, imagens AVIF/WebP, SEO por restaurante com Open Graph e JSON-LD Restaurant, e uma CSP restrita. As demos abaixo são montras fictícias.

+ Mais demos a caminho
HTMLCSSJavaScriptNode.jsSEOCloudflare Pages

Lisboa 2054

2026

Pessoal - Experiência

Uma cena interativa de uma rua de Lisboa à noite, à chuva, depois de a IA ter tomado conta da infraestrutura urbana — calçada molhada, fachadas de azulejo, elétrico amarelo, néons, drones e som ambiente. Desenhada inteiramente num canvas em JS vanilla.

CanvasJavaScriptWeb AudioGenerative art

Arcade

2026

Pessoal - Playground

Uma pequena arcada de jogos no browser que construo para praticar e experimentar, com o mesmo stack e linguagem visual deste portfólio.

Next.jsTypeScriptFramer Motion

Diz olá! 👋

Entra em contacto comigo

Disponível a explorar novas oportunidades, colaborações e sempre interessado em conversas interessantes.