Alexandre Chainho · Arquitectura GIS e automação operacional

Problemas reais transformados em sistemas que funcionam.

Um portefólio unificado de plataformas operacionais, cartografia de incêndio, automação, produtos digitais, jogos e IA — da recolha de dados no terreno à decisão, ao relatório e à notificação.

61Entradas
46Cartografia técnica
6Plataformas GNR / UEPS
9Produtos, jogos e ferramentas

Sobre mim / Overview

Transformo estrangulamentos operacionais em tecnologia funcional, do terreno ao centro de decisão.

Marcos do trabalho técnico

  1. Estatística e georreferenciação operacionalRelatórios Excel com coordenadas, consolidação em VBA e criação de KML: os primeiros dados georreferenciados do GIPS.
  2. Fiscalização preventiva de terrenosProjecto-piloto em Porto de Mós e Alcanena para prevenção de incêndios rurais.
  3. Operação Floresta SeguraConcepção, desenvolvimento e manutenção de plataformas de prevenção à escala nacional.
    Fluxo Floresta SeguraDescarregar
    Ver detalhes
  4. Evolução das ferramentas GISTransição para QGIS, ArcMap, ArcGIS Online e Pro; início de Python em 2022 e de ferramentas próprias em 2023.
  5. Plataforma Integrada de Gestão de EmergênciasPIGE da UEPS/GNR, com recolha operacional, dashboards e automação de relatórios e estatísticas.
    PIGE — ArcGISDescarregar
    PIGE Next-Gen — ReactDescarregar
    Ver detalhes
  6. Plataformas GIS do SEPNA/GNRDIVDIR e Alertas EMEIF para registo, monitorização e apoio ao comando de incêndios.
    SEPNA — EMEIFDescarregar
    DIVDIRDescarregar
    Ver detalhes
  7. Plataforma CIPOMonitorização de trabalhos em ArcGIS Online e Field Maps, com partilha através da PLIS da AGIF para CIM e municípios.
    Ver detalhes

Competências demonstradas

Geoprocessamento

Rasters e vectores à escala nacional: mosaicos de 10 m para Portugal Continental, reprojecção, recorte por grelha de sectores, álgebra de mapas.
rasterio · geopandas · GDAL · shapely · pyproj

Modelação de risco

Índices FWI/CFFDRS, equações de Rothermel, scores compostos com pesos justificados, classificação supervisionada.
numpy · scipy · scikit-learn · XGBoost

Integração de sistemas

APIs REST autenticadas, publicação em ArcGIS Online, ETL para MySQL, tolerância a falhas de rede e paginação de milhares de registos.
requests · SQLAlchemy · arcpy · ArcGIS REST

Automação em produção

Jobs agendados de 10 minutos a semanais, com locks, retomas, auditoria e notificação de falhas ao operador.
Task Scheduler · Docker · logging estruturado

Interfaces

Dashboards em tempo real, aplicação móvel, ferramentas de escritório em Tkinter para quem não usa terminal.
Next.js 14 · React · Flutter/Dart · Tkinter · Plotly

IA aplicada

RAG local sobre documentação interna, geração de relatórios com modelo servido na própria máquina, sem dependência de nuvem.
LangChain · ChromaDB · Ollama · llama.cpp

61 projectos

Nenhum projecto corresponde ao filtro.

Modelação de risco de incêndio

6 projectos

Onde é provável arder, com que intensidade, e quanto tempo falta até ao próximo ciclo. Cada modelo produz cartografia que alimenta directamente as decisões de patrulhamento.

Período
Mai 2026
Commits
7
Python
2 237 L
Estado
Concluído

Carta de Retorno de Incêndios

Mapa de risco de reincêndio para Portugal Continental, calculado pixel a pixel a partir de 50 anos de perímetros ardidos.

Problema
O histórico de áreas ardidas existe desde 1975, mas em forma de milhares de polígonos anuais — não responde à pergunta operacional «este sítio está em risco de voltar a arder?».
Abordagem
Rasterização de todo o histórico e cálculo de um score 0–100 com três componentes ponderadas: tempo desde o último fogo normalizado pelo tipo de vegetação (50 %), frequência de ocorrência desde 1975 (25 %) e atraso face ao ciclo de fogo típico daquela vegetação (25 %).
Resultado
Raster nacional a 10 m com seis classes de risco, reutilizado como camada de entrada por outros projectos de classificação de risco diário.
  • Python
  • geopandas
  • rasterio
  • numpy
  • matplotlib
  • python-pptx
Período
Jun – Jul 2026
Commits
62
Python
7 653 L
Estado
Activo

PoF Portugal — Probabilidade de Incêndio

Modelo de aprendizagem automática que estima a probabilidade de ignição por pixel, inspirado no AI Probability of Fire do ECMWF e adaptado a dados nacionais.

Problema
Os índices meteorológicos clássicos descrevem condições favoráveis ao fogo, mas não incorporam combustível, topografia, presença humana nem a idade da vegetação — variáveis que decidem se uma ignição chega a acontecer.
Abordagem
Pipeline que descarrega reanálise ERA5-Land, calcula os índices do sistema FWI canadiano e cruza-os com combustível, declive, proximidade a estradas e povoações e anos desde o último fogo; treino com gradient boosting sobre o histórico de ignições.
Resultado
Raster diário de probabilidade 0–1 para Portugal Continental, com armazenamento intermédio em Parquet e persistência dos resultados em base de dados.
  • XGBoost
  • scikit-learn
  • xarray
  • netCDF4
  • cdsapi (ERA5-Land)
  • rasterio
  • pyarrow
  • MySQL
Período
Jan – Fev 2026
Commits
8
Python
5 608 L
Estado
Cancelado

Fire Simulator Portugal

Sistema de modelação da propagação de incêndios florestais assente nas equações de Rothermel (1972).

Projecto interrompido antes da entrada em produção.

Problema
Os simuladores de referência exigem um conjunto de rasters rigorosamente alinhados (combustível, copa, declive, exposição) e uma grelha meteorológica coerente — preparação manual que demora mais do que a própria simulação.
Abordagem
Camada de preparação automática: cálculo de declive e exposição por blocos para rasters grandes, realinhamento e correcção de coberto de copa, construção de grelhas meteorológicas e clientes próprios para duas fontes de previsão com fallback entre elas.
Resultado
Cenários de simulação gerados a partir de uma data e de uma área, com os modelos de combustível definidos em ficheiro de configuração em vez de codificados.
  • Python
  • rasterio
  • numpy
  • Rothermel
  • API IPMA
  • Open-Meteo
Período
Fev – Jun 2026
Commits
20
Python
11 475 L
Estado
Cancelado

Pipeline de Modelos de Combustível (LiDAR)

Geração automática de cartografia de modelos de combustível NFFL e altura de copa a partir do LiDAR nacional, cobrindo 1 013 polígonos.

Problema
A cartografia de combustível disponível é grosseira e desactualizada; o LiDAR nacional tem a resolução necessária mas é distribuído em mais de mil blocos independentes, impossíveis de tratar à mão.
Abordagem
Pipeline por polígono que deriva altura de vegetação e coberto de copa do LiDAR e classifica cada pixel num dos 13 modelos NFFL, seguido de mosaicagem para uma cobertura nacional contínua.
Resultado
Três rasters a 10 m por polígono (modelo de combustível, altura, coberto) mais o mosaico nacional — a camada de entrada usada pelos simuladores de propagação.
  • Python
  • LiDAR
  • rasterio
  • GDAL
  • numpy
  • NFFL
Período
Ago 2025 – Ago 2026
Commits
24
Python
7 152 L
Estado
Produção · semanal

CAPVI — Actualização de Prioridades de Vigilância

Workflow semanal que converte a cartografia de prioridade de vigilância em mapas, relatórios e camadas publicadas, com envio automático por email.

Problema
A actualização semanal envolvia dezenas de passos manuais em SIG, repetidos por pessoas diferentes em duas fases da semana — lento e sujeito a divergências entre operadores.
Abordagem
Menu único que fixa utilizador e fase, e a partir daí faz tudo: junção dos shapefiles finais, relatório de texto com os dez concelhos prioritários por dia, mapas coropléticos em PNG, actualização das camadas online e preparação do email.
Resultado
Ciclo semanal reduzido a duas execuções guiadas, com resultado idêntico independentemente de quem corre o processo.
  • Python
  • geopandas
  • matplotlib
  • ArcGIS Online
  • pywin32
  • Tkinter
Período
Mar 2026
Commits
1
Python
3 979 L
Estado
Em desenvolvimento

Sistema de Risco Unificado (Planeamento de Inverno)

Modelo de risco de duplo domínio — hidrológico e incêndio — para planeamento de patrulhamento ao longo do ano inteiro.

Problema
O esforço de patrulhamento era planeado só para a época de incêndios, deixando o semestre húmido sem critério objectivo, apesar de o risco existir noutra forma — cheias e episódios hidrológicos.
Abordagem
Modelo v5.0 que mantém os dois domínios de risco em paralelo, aplica pesos sazonais a cada um e dispara gatilhos automáticos quando um limiar é ultrapassado.
Resultado
Critério único de prioridade válido nos doze meses, alimentado pelo repositório meteorológico próprio.
  • Python
  • geopandas
  • numpy
  • MySQL

Meteorologia e satélite

6 projectos

Aquisição contínua de dados de observação e previsão, de APIs públicas a produtos de satélite geoestacionário, guardados em formato próprio para não depender da disponibilidade da fonte.

Período
Fev – Jun 2026
Commits
2
Python
3 358 L
Estado
Produção · horário

MeteoDataHub

Repositório central de dados meteorológicos horários para Portugal Continental, servido a todos os outros projectos.

Problema
Cada projecto chamava as APIs meteorológicas por sua conta: pedidos repetidos, limites de utilização atingidos e valores diferentes para a mesma hora conforme o momento da consulta.
Abordagem
Grelha fixa de cerca de 300 pontos a 12 km, recolha automática de arquivo e previsão para MySQL, com camada de API interna para consumo pelos restantes sistemas.
Resultado
Fonte única de verdade meteorológica, com histórico próprio e independente da janela de retenção da API externa.
  • Python
  • MySQL
  • Open-Meteo
  • pandas
  • geopandas
  • Task Scheduler
Período
Out 2025
Commits
3
Python
6 336 L
Estado
Concluído

Fire Weather Data Collector

Aplicação de recolha meteorológica para análise de incêndios, com cálculo completo dos índices CFFDRS calibrados para Portugal.

Problema
Os índices de perigo de incêndio dependem de valores acumulados dos dias anteriores: uma leitura pontual dá um número errado, e nenhuma fonte isolada é fiável o suficiente para um serviço operacional.
Abordagem
Integração de cinco fontes meteorológicas com fallback automático entre elas, mais 90 dias de preenchimento histórico para que os valores de arrasto (FFMC, DMC, DC) entrem calibrados, com ajustes sazonais para clima mediterrânico.
Resultado
Mais de 25 parâmetros por localização, de −12 h a +24 h, exportados em CSV com metadados; interface gráfica para uso por não-programadores.
  • Python
  • CFFDRS / FWI
  • asyncio · aiohttp
  • ECMWF EarthKit
  • Tkinter
  • scipy
Período
Jul 2026
Commits
7
Python
1 137 L
Estado
Produção · 10 min

MTG FRP — Focos activos por satélite

Recolha em tempo real de hotspots de potência radiativa de fogo do Meteosat de terceira geração, recortados para Portugal.

Problema
O produto oficial cobre todo o disco visível do satélite e é publicado comprimido a cada dez minutos — descarregar e guardar tudo para usar uma fracção mínima é insustentável em disco e em tempo.
Abordagem
Descompressão do fluxo em memória e filtragem espacial imediata pela caixa envolvente de Portugal Continental mais 50 km, descartando o resto antes de tocar no disco.
Resultado
GeoJSON e CSV actualizados de dez em dez minutos, prontos a consumir por SIG e por plataformas de imagem operacional comum.
  • Python
  • GeoJSON
  • requests
  • geopandas
  • SQLAlchemy
  • MySQL
Período
Jun 2026
Commits
3
Formato
10 estudos
Estado
Concluído

LSA SAF — Catálogo de aplicações operacionais

Estudo sistemático dos produtos de satélite disponíveis e da aplicação concreta de cada um ao trabalho de protecção civil.

Problema
O catálogo de produtos de satélite é vasto e descrito em linguagem científica; sem tradução para casos de uso, fica por explorar.
Abordagem
Dez fichas, uma por produto — risco diário, focos activos, área ardida, condição da vegetação (VCI), condição térmica (TCI), saúde da vegetação (VHI), carta de retorno dinâmica, risco composto para patrulhamento, neve e cheia — cada uma com fonte, cadência, limitações e decisão que suporta.
Resultado
Especificação de origem para os projectos de aquisição que se seguiram, incluindo o recolector de focos activos.
  • Análise de requisitos
  • LSA SAF
  • Detecção remota
Período
Jan 2026
Commits
1
Python
1 115 L
Estado
Concluído

Wind Mapper

Ferramenta de campo de vento sobre uma área desenhada pelo utilizador, com visualização por setas sobre satélite e relevo.

Problema
Analisar o vento numa área de operação exigia consultar valores ponto a ponto, sem noção do padrão espacial que explica o comportamento do fogo no terreno.
Abordagem
Definição da área por coordenadas, shapefile ou mapa interactivo; geração de uma malha regular de resolução configurável; consulta de velocidade e direcção históricas para cada nó.
Resultado
Campo vectorial desenhado sobre imagem de satélite e modelo digital de elevação, exportável para análise posterior.
  • Python
  • cartopy
  • tkintermapview
  • rasterio
  • Open-Meteo
Período
Out 2025
Commits
1
Python
3 L
Estado
Arquivado

Meteorologia

Esboço inicial de recolha meteorológica, abandonado a favor de uma solução centralizada.

Problema
Primeira tentativa de resolver a aquisição meteorológica ponto a ponto, dentro de um projecto consumidor.
Abordagem
Registado aqui por honestidade de inventário: a direcção foi descartada cedo, ao perceber-se que o problema pedia um serviço partilhado e não uma função local.
Resultado
Substituído pelo MeteoDataHub, que serve hoje todos os projectos.
  • Python

Automação SIG e ArcGIS

13 projectos

Trabalho de plataforma: sincronizar, publicar, exportar e auditar camadas geográficas por API REST, sem depender da aplicação de escritório nem da presença de um operador.

Período
Ago 2026
Commits
8
Python
6 934 L
Estado
Produção

ArcGIS Reports

Geração massiva e paralela de relatórios de ocorrências em PDF a partir de camadas online.

Problema
Produzir centenas de relatórios de ocorrência à mão, um por um, na aplicação de escritório — dias de trabalho, e qualquer falha de rede obrigava a recomeçar.
Abordagem
Descarga e processamento paralelizados com a biblioteca nativa do ArcGIS, usando os modelos de impressão oficiais como templates, com gestão explícita de falhas de rede e retoma do que ficou por fazer.
Resultado
Centenas de PDF produzidos numa execução, com layout idêntico ao aprovado institucionalmente.
  • Python
  • arcpy
  • ArcGIS Pro
  • processamento paralelo
  • Pillow
  • tqdm
Período
Jun 2026
Commits
2
Python
1 021 L
Estado
Produção

Áreas Ardidas ICNF

Sincronização das camadas oficiais de áreas ardidas e pontos de início para cópia local e para camadas próprias online.

Problema
A camada oficial é a referência, mas está fora do controlo de quem a consome: indisponibilidades e alterações de esquema partem tudo o que dependa dela em tempo real.
Abordagem
Consulta REST paginada em GeoJSON, escrita de cópia offline em GeoPackage e actualização incremental das camadas próprias por operação de inserção-ou-actualização, com registo das camadas de origem centralizado num único módulo.
Resultado
Dados sempre disponíveis localmente e camadas próprias sincronizadas, com testes automáticos sobre o processo.
  • Python
  • ArcGIS REST
  • GeoPackage
  • pyogrio
  • pytest
Período
Mar 2026
Commits
5
Python
1 723 L
Estado
Produção · diário

Registo de Tracks de Patrulhas

Auditoria automática que verifica se as patrulhas activaram a localização durante o serviço.

Problema
Sem localização activa não há rasto do patrulhamento, mas confirmar patrulha a patrulha, dia a dia, era inviável — e por isso não se fazia.
Abordagem
Motor de correspondência que relaciona cada patrulha com o respectivo trajecto pelo indicativo rádio e unidade, com paginação robusta para milhares de registos e detecção automática dos dias em falta no histórico, reprocessando apenas esses.
Resultado
Precisão de correspondência de cerca de 95 % e painéis HTML interactivos diário, mensal e anual.
  • Python
  • plotly
  • ArcGIS Online
  • pandas
Período
Ago 2026
Commits
9
Python
1 832 L
Estado
Concluído

Ortos DGT

Descarregamento automático de ortofotomapas nacionais organizados pela grelha de sectores cartográficos.

Problema
Cada colecção anual de ortofotos é publicada num tipo de serviço diferente — o que obrigava a um procedimento manual distinto por ano e tornava impossível uma recolha uniforme de séries temporais.
Abordagem
Arquitectura híbrida com um orquestrador que detecta o tipo de serviço de cada colecção e escolhe o motor de aquisição adequado, mantendo a mesma interface de saída para a colecção corrente e para os anos históricos.
Resultado
Aquisição uniforme por sector para qualquer ano publicado, sem intervenção manual.
  • Python
  • requests
  • GDAL
  • WMS/WMTS
  • shapefile de sectores
Período
Mai 2026
Commits
1
Python
332 L
Estado
Produção · 01h00

RCM / PIR — Risco de Combustibilidade Municipal

Publicação diária do risco municipal para os 68 concelhos abrangidos por áreas integradas de gestão da paisagem.

Problema
A fonte disponibilizava o risco por serviço de imagem temporal instável e sem controlo fiável da dimensão temporal — inutilizável para gerar o produto do dia e o do dia seguinte.
Abordagem
Consumo directo da API de dados em vez do serviço de imagem, junção à cartografia administrativa e publicação automática, com dois ficheiros distintos para dia corrente e dia seguinte.
Resultado
Produto diário fiável às 01h00, com histórico controlado por quem o publica.
  • Python
  • API IPMA
  • geopandas
  • GeoPackage
  • ArcGIS Online
Período
Fev 2026
Commits
3
Python
696 L
Estado
Produção · 2–4 h

Portugal Road Closures

Recolha e publicação automática de estradas cortadas e condicionadas em Portugal Continental.

Problema
Em episódios de cheia ou incêndio, saber que estradas estão cortadas é decisivo para o encaminhamento de meios — e a informação estava dispersa por avisos de texto.
Abordagem
Consulta periódica à API de incidentes de tráfego, contornando o limite de área por pedido com uma grelha de 18 células que cobre todo o continente, e consolidação dos incidentes relevantes numa camada única.
Resultado
Camada geográfica actualizada de duas em duas a quatro horas, pronta a sobrepor à cartografia operacional.
  • Python
  • TomTom Traffic API
  • ArcGIS Online
  • requests
Período
Ago 2026
Commits
1
Python
746 L
Estado
Activo

Auditar Sinalizações

Auditoria contínua de uma camada de fiscalização, com recuperação automática de registos apagados indevidamente.

Problema
Registos operacionais desapareciam da camada partilhada sem rasto de quem ou porquê, comprometendo metas anuais de actividade que dependem da contagem.
Abordagem
Verificação periódica do universo esperado de registos contra o que está publicado, com reposição automática dos que faltam a partir da cópia de referência.
Resultado
Integridade garantida do conjunto de registos do ano, sem vigilância manual.
  • Python
  • ArcGIS REST
  • auditoria de dados
Período
Mai 2026
Commits
3
Python
425 L
Estado
Concluído

RPA Export

Exportação de uma camada operacional para seis formatos geográficos a partir da API REST.

Problema
Cada destinatário pedia o mesmo conjunto de dados num formato diferente — GPS de campo, SIG de escritório, visualizador de terreno — e a conversão era feita à mão, uma de cada vez.
Abordagem
Exportador único que autentica no portal, lê a camada por API e escreve GeoJSON, JSON, GeoPackage, shapefile, KMZ e GPX, com credenciais fora do código, em ficheiro de ambiente.
Resultado
Um comando responde a todos os pedidos de formato, sem passar pelo software de escritório.
  • Python
  • simplekml
  • gpxpy
  • fiona
  • python-dotenv
Período
Mai 2026
Commits
4
Python
595 L
Estado
Concluído

Tools ArcGIS

Conjunto de utilitários de gestão de camadas por API REST, sem licença de escritório nem bibliotecas proprietárias.

Problema
Operações correntes de manutenção de dados exigiam abrir a aplicação de escritório numa máquina licenciada — inviável em servidor e em tarefas agendadas.
Abordagem
Um script por tarefa (remoção selectiva, exportação, actualização de campos calculados), cada um autónomo e dependente apenas de bibliotecas livres.
Resultado
Manutenção de dados executável em qualquer máquina, incluindo agendada sem sessão interactiva.
  • Python
  • ArcGIS REST
  • geopandas
  • openpyxl
Período
Ago 2026
Commits
2
Python
450 L
Estado
Concluído

pat_igini — Patrulhas × Ignições

Exportação de dados operacionais para GeoPackage, prontos a abrir em SIG livre.

Projecto interrompido antes da entrada em produção.

Problema
Cruzar a actividade de patrulhamento com as ignições registadas exigia extrair dados da base a cada análise, sempre com consultas ligeiramente diferentes.
Abordagem
Três scripts independentes que lêem a base operacional, filtram por período e escrevem camadas de pontos num sistema de coordenadas único — patrulhas, ignições e o cruzamento das duas.
Resultado
Análise reprodutível: mesmo período, mesmo resultado, sem SQL ad-hoc.
  • Python
  • MySQL
  • GeoPackage
  • QGIS
Período
Set 2025
Commits
1
Python
4 465 L
Estado
Cancelado

Aglomerados

Aplicação de escritório que produz cadernos cartográficos de aglomerados populacionais em PDF.

Problema
A caracterização de um aglomerado para efeitos de protecção exigia montar à mão vários layouts — área edificada, interface urbano-florestal, lugares — e depois juntá-los num documento.
Abordagem
Interface gráfica sobre um conjunto de geradores de layout reutilizáveis, com escala gráfica, exportação do layout principal e das quadrículas de detalhe, e junção final num PDF único.
Resultado
Caderno cartográfico completo por aglomerado, gerado a partir da selecção de uma pasta e de um nome.
  • Python
  • Tkinter
  • matplotlib
  • geopandas
  • PDF
Período
Fev – Abr 2026
Commits
11
Python
48 286 L
Estado
Activo

Workspace de automação (Python)

Repositório de trabalho com a colecção de scripts de automação diária, organizados por entidade e por tema.

Problema
Dezenas de rotinas pequenas — extracções, verificações, conversões — que não justificam repositório próprio mas precisam de estar versionadas e localizáveis.
Abordagem
Organização por origem dos dados e por tema (ocorrências, planos municipais, susceptibilidade, consultas SQL, dados de efectivos), com dependências declaradas num só ficheiro para todo o conjunto.
Resultado
Base a partir da qual várias rotinas amadureceram e saíram para repositório próprio — é aqui que os projectos começam.
  • Python
  • geopandas
  • OWSLib
  • reportlab
  • opencv
  • SQL
Período
Fev – Jul 2026
Commits
8
Python
37 238 L
Estado
Activo

Workspace ArcPy (Conda)

Colecção paralela de rotinas que dependem da biblioteca proprietária do ArcGIS, isolada no seu próprio ambiente.

Problema
A biblioteca nativa do ArcGIS obriga a um interpretador próprio e conflitua com o ambiente geoespacial livre — misturar as duas famílias de scripts partia ambas.
Abordagem
Separação deliberada por ambiente, com levantamento documentado das 26 dependências externas em 72 ficheiros e instruções de instalação reproduzíveis.
Resultado
Dois ambientes estáveis em vez de um instável, e a fronteira entre eles explícita na estrutura do repositório.
  • Python
  • arcpy
  • Conda
  • ruff

Sistemas operacionais e relatórios

8 projectos

Aplicações de ponta a ponta usadas por operadores: entra um número de ocorrência, sai o dossier completo. É aqui que o volume de código está.

Período
Set 2025 – Jul 2026
Commits
475
Python
52 032 L
Estado
Produção

Activação GTO — Análise do Teatro de Operações

Sistema de análise geoespacial que transforma o registo de uma ocorrência num dossier territorial completo em 5 a 10 minutos. O projecto maior do conjunto.

Problema
Quando uma equipa é activada para um teatro de operações, a informação de que precisa — cartografia, meteorologia, combustível, acessos — existe, mas dispersa por dezenas de sistemas. Reuni-la à mão demora horas que a ocorrência não dá.
Abordagem
Pipeline único que parte do número da ocorrência, resolve a localização, recolhe meteorologia histórica e de previsão, calcula susceptibilidade, prepara os ficheiros de entrada dos simuladores de propagação e compõe a cartografia; o relatório final é redigido por um modelo de linguagem servido localmente. O relógio do processo é congelado num ponto explícito para que todos os módulos usem o mesmo instante — antes, uma execução de 11 minutos aparecia espalhada por horas diferentes.
Resultado
Mais de 39 mapas temáticos, análise meteorológica, mapas de susceptibilidade, dados prontos para simulador e relatório com análise automática — tudo no tempo de uma deslocação.
  • Python 3.13
  • geopandas
  • rasterio
  • scikit-learn
  • contextily
  • folium
  • Open-Meteo
  • LLM local
  • Telegram
Período
2025 – 2026
Commits
—
Python
9 628 L
Estado
Produção · v1.2.5

App Buscas

Sistema de automação para processamento de operações de busca e salvamento.

Problema
Numa busca, o produto cartográfico e a reconstituição temporal dos movimentos das equipas são precisos enquanto a operação decorre — não no dia seguinte.
Abordagem
Processamento espacial automatizado sobre os dados da operação, com construção de fitas temporais que ordenam a série de eventos e permitem ver a progressão da busca no tempo.
Resultado
Aplicação em produção, com registo de versões e documentação técnica dos conceitos usados, mantida ao longo de sucessivas operações reais.
  • Python
  • arcpy
  • análise temporal
  • cartografia automática
Período
Jul 2026
Commits
5
Python
16 301 L
Estado
Produção

Relatórios de Incêndio

Geração de um relatório completo de incêndio florestal a partir de um único número de ocorrência.

Problema
Cada relatório obrigava a consultar seis sistemas diferentes e a copiar valores entre eles à mão, com o erro de transcrição a entrar sempre em alguma etapa.
Abordagem
Vinte e oito etapas encadeadas: o operador introduz o número, o sistema lê a data, recolhe dados meteorológicos de observação e reanálise, cartografia, camadas online e rasters locais, e compõe um livro Excel com imagens e mapas embebidos. A recolha em portais sem API é feita por automação de navegador.
Resultado
Pasta de relatório completa por ocorrência, com origem dos dados rastreável em vez de valores copiados.
  • Python
  • playwright
  • openpyxl
  • rasterio
  • contextily
  • ECMWF
Período
Jan – Jul 2026
Commits
11
Python
2 924 L
Estado
Produção

Guias de Entrega — Detecção de Anomalias

Detecção automática de erros em guias de entrega e notificação individual dos responsáveis.

Problema
Os erros de preenchimento só apareciam na consolidação mensal, quando já era tarde para corrigir, e a notificação em massa dispersava a responsabilidade por quem não tinha nada a corrigir.
Abordagem
Migração de um fluxo assente em folhas de cálculo para leitura directa da base de dados, com agrupamento das anomalias por destinatário, limitação de ritmo no envio para não accionar defesas do servidor de correio, e registo de auditoria de tudo o que foi enviado. O fluxo antigo ficou preservado como alternativa de recurso.
Resultado
Cada responsável recebe apenas as suas anomalias, no próprio dia, com rasto do que foi comunicado a quem.
  • Python
  • MySQL
  • SMTP
  • pandas
  • auditoria
Período
Abr – Jul 2026
Commits
21
Python
11 746 L
Estado
Activo

Gestão da Operação Kristin

Conjunto de rotinas de gestão operacional centradas na rede viária florestal e nos relatórios de situação.

Problema
Uma operação prolongada gera relatórios de situação com periodicidade fixa, e a caracterização da rede viária florestal muda à medida que o terreno é percorrido — sem automação, o esforço de reporte come o tempo de operação.
Abordagem
Quatro áreas funcionais: tratamento da rede viária florestal, produção dos relatórios de situação, consolidação dos dados da operação e apoio à decisão diária, com configuração de máquina documentada para se replicar noutro posto.
Resultado
Reporte periódico produzido a partir dos dados já registados, em vez de recolhido de novo a cada ciclo.
  • Python
  • pandas
  • geopandas
  • SIG
Período
Abr – Jun 2026
Commits
14
Python
3 927 L
Estado
Produção

Verificar Serviço — Qualidade de Dados

Validação sistemática dos dados operacionais contra regras de negócio, com relatório navegável dos erros encontrados.

Problema
Os dados que alimentam todos os relatórios vêm de preenchimento humano; sem verificação sistemática, os erros só se descobrem quando o número final não bate certo.
Abordagem
Motor de regras sobre cinco tabelas da base operacional, capaz de correr também sobre uma cópia local para quem não tem acesso à rede interna, com testes automáticos sobre as próprias regras.
Resultado
Relatório HTML interactivo que aponta o registo concreto a corrigir, em vez de sinalizar apenas a existência de um problema.
  • Python
  • MySQL
  • SQLite
  • pytest
  • HTML
Período
Set 2025
Commits
2
Python
1 077 L
Estado
Concluído

Preparação de Dados para Simulador

Automatiza a preparação da pasta de dados de entrada para simulação de propagação numa área de operação.

Projecto interrompido antes da entrada em produção.

Problema
Os simuladores de propagação exigem um conjunto rígido de ficheiros — rasters recortados e alinhados, humidade dos combustíveis, série de vento — cuja preparação manual é morosa e falha silenciosamente por desalinhamento.
Abordagem
Fluxo guiado que cria a estrutura de pastas do projecto, resolve a localização por número de ocorrência ou coordenadas, descarrega os meteogramas, recorta e alinha os rasters, gera ponto e buffer, e escreve os ficheiros de humidade e de vento nos formatos exigidos.
Resultado
Ferramenta portátil: copiar a pasta para outro posto e configurar os caminhos uma única vez pela interface.
  • Python
  • GDAL
  • rasterio
  • playwright
  • Tkinter
Período
Mar 2026
Commits
1
Python
583 L
Estado
Cancelado

Cálculo de Transferências

Cálculo automático de colocações a partir da lista de pedidos e das vagas disponíveis, em duas implementações.

Projecto interrompido antes da entrada em produção.

Problema
A afectação era feita à mão sobre folhas de cálculo, com risco de atribuir a mesma vaga duas vezes ou de aplicar critérios de forma inconsistente entre casos.
Abordagem
Duas versões do mesmo algoritmo — uma em Python, outra em macro de folha de cálculo — para funcionar mesmo em postos onde não é possível instalar nada, produzindo um ficheiro final formatado a partir de um modelo.
Resultado
Resultado reproduzível e auditável, e a versão em macro garante que o processo corre em qualquer posto.
  • Python
  • pandas
  • openpyxl
  • VBA

Bots e notificações

4 projectos

A camada de entrega: levar o resultado ao telemóvel de quem decide, no canal que essa pessoa já usa, sem lhe pedir que aprenda uma ferramenta nova.

Período
Jul – Ago 2026
Commits
12
Python
1 498 L
Estado
Produção

Bot de Apoio à Sala de Situação

Interface de comunicação automática que serve relatórios de síntese executiva num canal de mensagens.

Problema
Quem coordena não está ao computador: pedia por telefone números que já estavam na base de dados, e alguém tinha de os ir buscar e transcrever.
Abordagem
Seis comandos oficiais sobre a base de dados operacional, servidos a conversas e canais autorizados, com o serviço a correr permanentemente na máquina e agendamento nativo do sistema.
Resultado
Em produção: síntese executiva a pedido, no telemóvel, sem intermediário humano.
  • Python 3.13
  • python-telegram-bot
  • MySQL
  • SQLAlchemy
  • Windows Service
Período
Jul – Ago 2026
Commits
29
Python
3 400 L
Estado
Activo

Hub de Bots (arquitectura de plugins)

Um único bot partilhado que aloja plugins de vários projectos, em vez de um bot por projecto.

Problema
Cada projecto que quisesse notificar criava o seu próprio bot, duplicando lista de autorizações, tratamento de erros e entrega de ficheiros — e obrigando quem recebe a gerir várias conversas.
Abordagem
Núcleo agnóstico ao domínio que resolve uma vez o que é comum — autorização, bloqueio de execuções concorrentes, execução de tarefas, entrega de resultados, relato de progresso e cancelamento — e expõe uma interface de plugin para cada projecto registar os seus comandos.
Resultado
Novo projecto ganha comandos próprios sem infra-estrutura nova, e quem usa tem uma conversa só.
  • Python
  • python-telegram-bot
  • arquitectura de plugins
  • Bot API auto-alojada
Período
Fev – Set 2026
Commits
33
Código
3 529 L JS
Estado
Em desenvolvimento

ArcGIS → WhatsApp

Serviço de notificações automáticas por WhatsApp desencadeadas por alterações em camadas geográficas.

Problema
Nem toda a gente no terreno usa a aplicação de mensagens institucional, mas praticamente toda a gente usa WhatsApp — e a informação que interessa nasce numa camada geográfica, não numa conversa.
Abordagem
Serviço em Node.js que vigia camadas online e encaminha os eventos relevantes para uma API de WhatsApp auto-alojada em contentor, com base de dados própria para estado e destinatários.
Resultado
Alertas geográficos entregues no canal que as equipas já têm aberto; projecto mais activo do conjunto neste momento.
  • Node.js
  • Docker
  • PostgreSQL
  • Evolution API
  • ArcGIS Online
Período
Mai 2026 (fork)
Commits
805 · 1 ramo
Python
1 739 L
Estado
Activo

Réplica local de dados de incidentes

Ramo próprio de um projecto público de dados de incêndios, dedicado a sincronização local como recurso alternativo.

Problema
Um serviço público de dados de incidentes é excelente até ao dia em que fica indisponível — que costuma ser exactamente o dia em que é mais preciso.
Abordagem
Contribuição num ramo separado do projecto original, com um sincronizador que replica os incidentes activos para base de dados local, mantendo a origem intacta e o histórico do projecto público preservado.
Resultado
Disponibilidade dos dados garantida mesmo com a fonte em baixo. O grosso dos 805 commits é do projecto original — a contribuição própria é o sincronizador.
  • Python
  • MySQL
  • fork open-source

Web e móvel

3 projectos

Interfaces para consumo em tempo real, dentro e fora do posto de comando — o único bloco do portefólio fora de Python.

Período
Mar – Ago 2026
Commits
199
Código
15 733 L TS/JS
Estado
Activo

Dashboard de Gestão de Emergências

Painel operacional em tempo real de meios, missões e ocorrências, com mapa interactivo, fita de tempo e painel multimédia.

Problema
Acompanhar uma operação exigia ter várias aplicações abertas em paralelo, cada uma com a sua parte da verdade e nenhuma com a linha do tempo do que aconteceu.
Abordagem
Aplicação Next.js com renderização no servidor e rotas de API próprias, integrando as camadas geográficas oficiais numa vista única, com autenticação por sessão verificada do lado do servidor e fita de tempo navegável sobre os eventos.
Resultado
Vista única de operação, com 199 commits de iteração continuada sobre utilização real. Segunda geração do projecto.
  • Next.js 14
  • React
  • TypeScript
  • ArcGIS Online
  • autenticação por sessão
Período
Dez 2025 – Mar 2026
Commits
32
Código
9 620 L TS/JS
Estado
Substituído

Dashboard de Emergências — 1.ª geração

Primeira versão do painel operacional, que estabeleceu o modelo de dados e a linguagem visual.

Problema
Provar que era possível reunir meios, registos e ocorrências numa vista única antes de investir numa arquitectura definitiva.
Abordagem
Protótipo funcional em Next.js, levado até utilização real para descobrir os requisitos que só aparecem em serviço.
Resultado
Validou o conceito e foi deliberadamente substituído pela segunda geração — a decisão de reescrever está documentada em vez de o protótipo ter sido remendado indefinidamente.
  • Next.js
  • React
  • ArcGIS Online
Período
Dez 2025
Commits
4
Código
3 805 L Dart
Estado
Em desenvolvimento

Aplicação móvel para operações helitransportadas

Aplicação Flutter para registo de operações com helicóptero, pensada para funcionar sem rede.

Problema
O registo destas operações é feito em papel e transcrito depois, porque no local de trabalho não há cobertura de rede que sustente uma aplicação ligada.
Abordagem
Arquitectura local-primeiro com base de dados no dispositivo e gestão de estado reactiva, sincronizando com os serviços geográficos quando há rede; sistema de desenho documentado antes da implementação.
Resultado
Aplicação em desenvolvimento com registo de alterações detalhado e documentação dos padrões usados — repositório e singleton — escrita para aprendizagem própria.
  • Flutter
  • Dart
  • Riverpod
  • SQLite · Drift
  • ArcGIS

Drone e LiDAR

3 projectos

Da imagem aérea ao produto com valor legal: fotogrametria automatizada e análise de conformidade da vegetação face à lei.

Período
Fev 2026
Commits
4
Python
1 703 L
Estado
Concluído

Altura de Combustíveis — conformidade legal

Verifica, a partir de voos de drone, se a vegetação junto a infra-estruturas críticas está em infracção às faixas de protecção legais.

Problema
A fiscalização de faixas de gestão de combustível ao longo de estradas, linhas eléctricas e gasodutos é feita a pé, por amostragem, e a prova de infracção depende de medição no local.
Abordagem
Cálculo do modelo de altura de copa pela diferença entre superfície e terreno obtidos do voo, e confronto da altura de cada pixel com o limite legal aplicável à faixa em causa — regimes distintos para rede viária, rede eléctrica e gasodutos.
Resultado
Identificação objectiva das áreas em infracção, com o critério legal explícito no código em vez de dependente do julgamento do operador.
  • Python
  • rasterio
  • numpy
  • fotogrametria
  • CHM
Período
Abr 2026
Commits
1
Integração
WebODM
Estado
Activo

Processamento de Drone — WebODM

Instalação local de fotogrametria com automação de ponta a ponta: escolher a pasta, processar, abrir resultados.

Problema
O processamento fotogramétrico em serviço externo implica enviar imagens de operações para fora e esperar por fila; localmente, implica uma sequência de passos manuais na interface.
Abordagem
Plataforma aberta instalada em contentores na máquina, com camada de automação por cima da sua API que submete o voo, acompanha o processamento e recolhe os produtos finais.
Resultado
Ortomosaicos e modelos 3D produzidos localmente, sem envio de dados operacionais para o exterior. Alimenta a análise de conformidade de vegetação.
  • Docker
  • WebODM
  • Python
  • pyodm
Período
Fev 2026
Commits
1
Python
439 L
Estado
Substituído

Processamento de Drone — 1.ª versão

Primeira abordagem à automação do processamento fotogramétrico, por linha de comandos.

Problema
Perceber que parte do processamento fotogramétrico valia a pena automatizar antes de montar infra-estrutura a sério.
Abordagem
Orquestração directa dos contentores de processamento, com configuração em ficheiro e acompanhamento do progresso em consola.
Resultado
Serviu de estudo prévio; substituída pela versão com interface web dois meses depois.
  • Python
  • Docker SDK
  • PyYAML

IA local e ferramentas de desenvolvimento

3 projectos

Infra-estrutura própria para usar modelos de linguagem sobre documentação e dados internos sem que nada saia da máquina.

Período
Jul – Ago 2026
Commits
6
Código
3 644 L Py · 2 301 L JS
Estado
Em desenvolvimento

RAG local sobre documentação interna

Sistema de pergunta-e-resposta sobre a documentação da secção, com consulta de dados em linguagem natural — a correr inteiramente na máquina.

Problema
A documentação técnica acumulada é extensa e a informação existe, mas encontrá-la exige saber onde procurar. Enviar documentação de serviço para um serviço de nuvem não é opção.
Abordagem
Indexação vectorial de documentos em vários formatos com modelo servido localmente, camada de agente capaz de executar pequenas edições de ficheiros e de traduzir perguntas em consultas SQL, e interface web local.
Resultado
Funciona sem ligação ao exterior; nenhum documento sai da máquina. Em fase de consolidação.
  • Python
  • LangChain
  • ChromaDB
  • Ollama
  • PyMuPDF
  • WebUI local
Período
Ago – Set 2026
Commits
7
Python
3 826 L
Estado
Activo

Servidor LLM local

Servidor de modelos de linguagem compatível com a interface padrão, com gestão gráfica do ciclo de vida.

Problema
Vários projectos precisam de um modelo de linguagem, mas cada um a arrancar o seu servidor competia pela mesma placa gráfica e pela mesma porta — com colisões reais de porta a partir serviços de outros projectos.
Abordagem
Um único servidor partilhado que expõe a interface padrão do sector, com arranque e paragem por interface gráfica e selecção do modelo a carregar; a porta ocupada passou a estar documentada no inventário da máquina.
Resultado
Qualquer projecto aponta para o mesmo ponto de acesso e troca de modelo sem mudar código. Usado pelo gerador de relatórios e pelo sistema de RAG.
  • Python
  • llama.cpp
  • API compatível OpenAI
  • Tkinter
Período
Fev – Abr 2026
Commits
6
Formato
Configuração
Estado
Activo

Configuração de assistentes de código

Regras, comandos e modelos de projecto versionados, partilhados por três assistentes de programação diferentes.

Problema
Regras de trabalho definidas na cabeça não sobrevivem à mudança de máquina nem à troca de ferramenta, e cada assistente guarda a configuração no seu formato.
Abordagem
Repositório único com as regras globais, os comandos e os modelos de estrutura de projecto, instalados por ligação nos caminhos que cada ferramenta espera — uma fonte, três destinos.
Resultado
Método de trabalho reproduzível em qualquer posto e explícito o suficiente para ser criticado e melhorado, em vez de implícito.
  • Markdown
  • ferramentas de IA
  • automação de ambiente

Plataformas institucionais GNR / UEPS

6 projectos independentes

Sistemas de âmbito operacional descritos no portefólio GNR/UEPS. São apresentados separadamente das fichas técnicas anteriores: partilham dados, processos ou integrações com várias delas, mas cada plataforma constitui um projecto autónomo.

Âmbito
Nacional
Domínio
Prevenção rural
Papel
Arquitectura ponta a ponta
Estado
Uso operacional

Floresta Segura — Plataforma GIS Nacional

Pipeline completo da recolha em campo à distribuição de relatórios para a operação nacional de prevenção de incêndios rurais.

Problema
Equipas no terreno precisam de registar fiscalizações, validar pontos de água e cartografar incêndios com informação administrativa e predial consistente.
Abordagem
Formulários Field Maps e QuickCapture, cálculo automático de freguesia/concelho/distrito, cruzamento com DGT/BUPi, sinalização de possíveis infracções e dashboard em ArcGIS Experience Builder.
Resultado
Monitorização em tempo real, edição controlada e planeamento; um processo Python/ArcGIS Pro cria cópias de segurança e relatórios PDF, Excel e shapefile, distribuídos por SharePoint.
Relação
Relaciona-se com as fichas de automação SIG, relatórios ArcGIS e prevenção rural deste portefólio, mantendo-se aqui como plataforma institucional independente.
  • ArcGIS Online
  • Field Maps
  • QuickCapture
  • Python
  • SharePoint
Âmbito
Portugal Continental
Domínio
Operações UEPS
Papel
Arquitectura ponta a ponta
Estado
Uso diário

PIGE — Plataforma de Gestão Operacional em Tempo Real

Quadro operacional diário para acompanhamento de equipas terrestres e helitransportadas e apoio à decisão de comando.

Problema
Actividade, localização, meios multimédia, indicativos e pedidos urgentes estavam dispersos e não formavam uma visão operacional comum.
Abordagem
QuickCapture e Field Maps recolhem movimentos, fotografias, vídeo, GPS e pedidos de recursos; o Experience Builder reúne actividade ao vivo, mapa de 12 horas, planeamento, pedidos e histórico.
Resultado
Uma visão ligada entre equipas de terra e ar, com atraso de 1–2 minutos, cálculo da patrulha mais próxima, filtros temporais e acesso a camadas de risco de incêndio.
Relação
Liga-se às camadas de risco e às fichas de registo de patrulhas já catalogadas; é a plataforma operacional de origem da evolução PIGE Next-Gen.
  • ArcGIS Experience Builder
  • QuickCapture
  • Field Maps
  • GPS
  • Multimédia
Âmbito
Operacional
Domínio
Dashboard web
Papel
Full-stack
Estado
Nova geração

PIGE Next-Gen — Dashboard React

Reconstrução independente da vista principal do PIGE para ultrapassar limites de desempenho e interface do construtor low-code.

Problema
Consultas directas ao ArcGIS Online em cada carregamento limitavam a rapidez, o controlo da interface e a reprodução nativa de vídeo recolhido no terreno.
Abordagem
Frontend React apoiado por servidor dedicado que mantém uma cache local actualizada; integração WhatsApp auto-alojada em Docker com Evolution API.
Resultado
Carregamentos mais rápidos, interacção mais fluida, vídeo reproduzido na própria página e encaminhamento automático de dados QuickCapture para grupos operacionais.
Relação
Evolui a experiência do PIGE e cruza-se com a automação WhatsApp já documentada, mas é tratado como projecto próprio pela nova arquitectura.
  • React
  • Backend cache
  • ArcGIS Online
  • Docker
  • Evolution API
Âmbito
Multi-entidade
Domínio
Registo de alertas
Papel
Arquitectura ponta a ponta
Estado
Plataforma de entrada

SEPNA — EMEIF · Registo de Alertas

Plataforma de registo de ocorrências rurais e florestais detectadas por quatro tipos de vigilância.

Problema
Alertas de torres e videovigilância, patrulhas de várias entidades, chamadas 112 e meios aéreos têm requisitos diferentes, mas precisam de um registo coerente.
Abordagem
Modelo partilhado e flexível com dashboard por tipo de vigilância, mapa filtrável, listagem integral com exportação CSV, revisão de erros de cálculo e editor geográfico estruturado.
Resultado
Um ponto principal de entrada com dados mais consistentes para monitorização de incêndios e sistemas de apoio ao comando.
Relação
Alimenta o ecossistema de acompanhamento de incêndios, incluindo o DIVDIR; permanece uma plataforma de registo independente.
  • ArcGIS
  • Dashboard
  • Editor geográfico
  • CSV
  • Multi-entidade
Âmbito
Comando
Domínio
Incêndio rural
Papel
Arquitectura ponta a ponta
Estado
Apoio à decisão

DIVDIR — Dashboard de Apoio ao Comando

Visão operacional consolidada das ocorrências, meios e sistemas de vigilância ligados aos incêndios rurais e florestais.

Problema
Decisores precisavam de consultar numa só vista ocorrências ANEPC, alertas, actividade helitransportada, planeamento de drones e cobertura de vigilância.
Abordagem
Dashboard com linha temporal, contagens e filtros; módulos de histórico, ligações externas e edição de estado; bot Telegram local para converter relatórios CAPVI/IPMA em camadas publicadas.
Resultado
Uma imagem operacional actualizada, com fotografias e vídeo de campo, planeamento aéreo e automatização da ingestão de relatórios definidos com parâmetros AGIF.
Relação
Recebe dados do EMEIF e relaciona-se com as fichas CAPVI, IPMA, bots e monitorização de incêndios, sem deixar de ser um dashboard independente.
  • ANEPC
  • ArcGIS
  • Telegram
  • CAPVI / IPMA
  • AGIF
Período
2026
Domínio
Recuperação pós-tempestade
Papel
Arquitectura ponta a ponta
Estado
Missão operacional

CIPO — Monitorização de Trabalhos de Recuperação

Plataforma construída para a participação da GNR no comando interministerial de recuperação após a tempestade Kristin.

Problema
Era necessário coordenar necessidades municipais, planeamento de várias entidades e validação no terreno da limpeza de caminhos florestais danificados.
Abordagem
Field Maps para validação de trabalhos; sincronização contínua de planeamento em Google Sheets para camadas ArcGIS; processamento diário de dados administrativos.
Resultado
Plataforma pública com planeado versus concluído, geração automática do SITREP, cópia local em Google Drive e republicação para o GeoSiFOR da AGIF.
Relação
Relaciona-se com as fichas sobre Kristin, rede viária, sincronização e relatórios operacionais; é apresentada como missão e plataforma autónoma.
  • Field Maps
  • Google Sheets
  • ArcGIS
  • SITREP
  • GeoSiFOR

Produtos digitais e comércio

1 projecto

Produtos orientados ao utilizador final, com operação, dados e experiência de compra integrados.

Domínio
Comércio digital
Stack
Web + dados
Estado
Em produção
Plataforma
Web responsiva

bcariobomvalor

Primeira plataforma completa Full-Stack & DevOps: loja online Boticário construída do zero até à entrada em produção.

Desafio
Desenvolver um ecossistema completo de comércio eletrónico aliando extrema resiliência a um custo quase nulo de infraestrutura (VPS partilhada e SQLite).
Abordagem
App universal Next.js (React+TS) consumindo SQLite. Pipeline em Python para extrair dados de faturas em PDF. Painel Admin blindado à internet pública através de túnel VPN (WireGuard).
Resultado
Loja otimizada em produção na OVHcloud por trás da Cloudflare (com AEO ativo). Sistema autónomo e imune a perdas via backups cifrados híbridos automatizados com Restic.
  • Next.js
  • React
  • TypeScript
  • Python
  • SQLite

Serviços cívicos

1 projecto

Tecnologia para aproximar cidadãos e administração local através de um fluxo único de participação e resposta.

Domínio
Participação cívica
Stack
Flutter + Firebase
Estado
Funcional
Plataformas
Android + gestão

Nossa Freguesia

Projecto único de comunicação entre cidadãos e a Freguesia de Nossa Senhora das Misericórdias, em Ourém.

Problema
Facilitar o reporte estruturado de problemas, sugestões e eventos e acompanhar a resposta dos serviços da freguesia.
Abordagem
Aplicação Flutter para cidadãos com GPS, fotografias e notificações, ligada à componente de gestão usada pelos funcionários.
Resultado
Um fluxo integrado desde a submissão no telemóvel até à análise, resolução e comunicação do estado ao cidadão.
  • Flutter
  • Firebase
  • GPS
  • Android
  • Gestão de ocorrências

Jogos e experiências educativas

4 projectos

Jogos de tabuleiro, experiências familiares e aprendizagem interactiva em diferentes plataformas.

Tipo
Jogo de tabuleiro
Motor
Godot 4
Estado
Em desenvolvimento
Jogadores
2–10

Indústria Jogo

Jogo de tabuleiro familiar sobre o mundo industrial, com anfitrião desktop e clientes na rede local.

Problema
Adaptar uma experiência de tabuleiro extensa a um formato digital partilhado por vários dispositivos.
Abordagem
Projecto Godot 4 com regras em GDScript, dado 3D com física e comunicação WebSocket entre anfitrião e clientes.
Resultado
Menu e lançamento do dado validados; a implementação do tabuleiro jogável encontra-se em curso.
  • Godot 4
  • GDScript
  • WebSocket
  • 3D
Tipo
Jogo de tabuleiro
Framework
Flutter
Estado
Estruturado
Jogadores
Até 8

Monopólio Família Portugal

Jogo multijogador com cidades portuguesas, pensado para televisão, tablet, computador e telemóveis.

Problema
Permitir que uma família partilhe o mesmo tabuleiro sem concentrar todas as interacções num único ecrã.
Abordagem
Um dispositivo anfitrião apresenta o tabuleiro e os jogadores entram por QR Code, comunicando por WebSocket na rede Wi-Fi.
Resultado
Arquitectura multiplataforma definida para Android, Windows e web, com chat e gravação de partidas.
  • Flutter
  • WebSocket
  • QR Code
  • Android
  • Windows
Tipo
Jogo educativo
Versão
0.8.0
Estado
Jogável
Público
1.º e 2.º ano

Robot Quest

Aventura 2D em pixel art que combina exploração com exercícios de Português e Matemática.

Problema
Criar uma experiência de aprendizagem adequada a crianças pequenas sem separar exercício e jogo.
Abordagem
Exploração top-down, nevoeiro de guerra e batalhas resolvidas através de perguntas, com controlos para teclado e toque.
Resultado
Jogo funcional para Windows e Android, com dificuldade e progresso guardados automaticamente.
  • Flutter
  • Dart
  • Pixel art
  • Windows
  • Android
Tipo
Jogo de tabuleiro
Fase
Concepção
Estado
Exploração
Suporte
Modelos + IA

Race Board

Jogo de tabuleiro em desenvolvimento, apoiado por modelos e documentação estruturada.

Problema
Transformar o conceito de corrida num sistema de tabuleiro coerente, documentado e preparado para evolução.
Abordagem
Modelação das regras e componentes com documentação de projecto e apoio de ferramentas de IA.
Resultado
Base de concepção organizada para validar mecânicas antes da implementação completa.
  • Jogo de tabuleiro
  • Modelos
  • IA
  • Documentação

Automação e integrações

1 projecto

Experimentação aplicada à automatização de tarefas e serviços no contexto doméstico.

Domínio
Casa conectada
Stack
Node.js
Estado
Em evolução
Qualidade
Testes dedicados

OpenClaw Casa

Base Node.js para automação doméstica, integrações e tratamento de dados.

Problema
Centralizar automações e integrações domésticas num projecto controlável e testável.
Abordagem
Separação explícita entre código-fonte, dados, configuração e testes automatizados.
Resultado
Estrutura técnica versionada para desenvolver novas automações sem misturar lógica e dados operacionais.
  • Node.js
  • Automação
  • Integrações
  • Testes

IA e ferramentas de desenvolvimento

2 projectos

Infraestrutura para executar modelos com privacidade e reutilizar conhecimento entre diferentes assistentes de IA.

Domínio
Inferência de IA
Runtime
llama.cpp
Estado
Operacional
Hardware
AMD + Vulkan

LLM com llama-server e Vulkan

Ambiente para executar, servir e avaliar modelos GGUF no próprio hardware.

Problema
Usar modelos de linguagem com controlo de custos, dados e recursos de GPU, sem depender de um serviço externo.
Abordagem
llama-server acelerado por Vulkan, catálogo de modelos, selecção controlada e benchmarks de velocidade e qualidade.
Resultado
Endpoint compatível com APIs comuns, reutilizável por RAG, relatórios e outras ferramentas que exigem processamento confidencial.
  • llama.cpp
  • Vulkan
  • GGUF
  • Qwen
  • Python
Domínio
Ferramentas para agentes
Stack
Python + TypeScript
Estado
Versionado
Licença
MIT

Universal Skills Framework

Framework aberto para escrever uma skill uma vez e reutilizá-la em diferentes agentes e ambientes.

Problema
Cada fornecedor representa instruções, competências e memória num formato diferente, obrigando a duplicar manutenção.
Abordagem
Formato Markdown/YAML portátil, memória baseada em Obsidian, validadores e sincronização para ferramentas suportadas.
Resultado
Uma fonte versionada para skills e contexto persistente, consumida por implementações em Python e TypeScript.
  • Python
  • TypeScript
  • Obsidian
  • CLI
  • MIT