Esta é uma aplicação de quiosque interativo desenvolvida como projeto final da Formação em Contexto de Trabalho (FCT) na NOVA School of Law. O seu principal objetivo é fornecer um ponto de suporte autónomo para alunos, professores e funcionários, reduzindo a carga de trabalho da equipa de TI ao responder a perguntas frequentes.
O grande diferencial do projeto é a sua arquitetura flexível e configurável, permitindo que toda a aparência, layout e funcionalidades da aplicação sejam geridas dinamicamente através de ficheiros JSON, sem necessidade de qualquer alteração no código-fonte.
- Linguagem e Framework: C# e Windows Forms (.NET Framework)
- IDE: Visual Studio 2019
- Formato de Configuração: Ficheiros JSON
- Controlo de Versões: Git e GitHub
O objetivo era desenvolver uma aplicação de suporte que pudesse ser facilmente gerida pela equipa de TI da instituição, sem depender de um programador para fazer alterações. Os objetivos-chave foram:
- Flexibilidade Máxima: Criar um menu cujos botões, textos, ações e layout fossem totalmente definidos por um ficheiro de configuração externo.
- Autonomia para o Gestor: Permitir que a equipa de TI pudesse adicionar, remover ou modificar conteúdos (links, PDFs, guias passo a passo) através de uma interface de configurações gráfica e intuitiva.
- Personalização Visual: Permitir a criação de múltiplos perfis e temas visuais (cores, fontes, transparência, imagens de fundo) para adaptar a aplicação a diferentes contextos ou necessidades de branding.
A Divisão de Informática e Comunicações de uma instituição de ensino recebe um volume elevado de pedidos de suporte repetitivos, como configuração de redes Wi-Fi, recuperação de passwords ou acesso a plataformas. Esta situação consome um tempo valioso da equipa técnica, que poderia ser alocado a tarefas mais complexas. Era necessária uma solução que automatizasse o acesso a estas informações de forma centralizada, disponível em um quiosque físico.
A solução foi uma aplicação para Windows totalmente orientada a configurações, onde a lógica e a apresentação são separadas de forma clara:
- Arquitetura Baseada em Perfis JSON: Toda a estrutura da aplicação – desde o número de botões no menu, as suas ações (
PDF,LINK,FORMS), os seus estilos visuais, até aos textos e imagens dos guias passo a passo – é lida de um ficheiroJSON. Isto permite criar múltiplos perfis com comportamentos e aparências completamente distintas. - Janela de Configurações Avançada (Protótipo): Para permitir a gestão por utilizadores não-técnicos, foi desenhada prototipada uma janela de gestão avançada. A interface utiliza uma
TreeViewque espelha a estrutura do objeto de configuração, e para cada propriedade, apresenta o seu valor atual e uma descrição. Embora o conceito esteja funcional e demonstre a viabilidade da edição visual, a implementação não está completa, com algumas funcionalidades de edição ainda por desenvolver. - Sistema de Personalização Visual Dinâmico: A aplicação foi projetada para suportar múltiplos temas visuais, com o objetivo de aplicar todas as configurações em tempo real. Muitos aspetos, como imagens de fundo e a opacidade das janelas, já funcionam dinamicamente. No entanto, devido a limitações de tempo e à complexidade da gestão de estado dos controlos em Windows Forms, existem algumas inconsistências conhecidas: certas configurações visuais (como a aplicação de cores ou fontes em controlos específicos) podem não ser refletidas corretamente após uma alteração.
- Biblioteca Auxiliar (
BibliotecaAuxiliarForms): Para promover a reutilização de código e a separação de responsabilidades, foi desenvolvida uma biblioteca de classes que encapsula funcionalidades transversais. - Funcionalidades de Usabilidade: Foram adicionados um ícone na barra de sistema (TrayIcon) e botões flutuantes para controlar a aplicação.
Como projeto de FCT, fui responsável pelo ciclo de vida completo do desenvolvimento desta aplicação, desde a conceção inicial e planeamento até à implementação, testes e documentação. As minhas principais tarefas incluíram:
- Desenhar a arquitetura de software, com foco na modularidade e na separação entre a lógica e a configuração.
- Implementar todas as funcionalidades principais: o menu dinâmico, o sistema de perfis em JSON, a janela de configurações e a biblioteca auxiliar.
- Colaborar com o meu tutor e colegas para recolher feedback e integrar novas ideias e requisitos ao longo do projeto.
- Criar a Janela de Configurações: Mapear uma estrutura de objeto complexa (classes aninhadas, listas, dicionários) para uma
TreeViewinterativa e garantir que a edição de cada propriedade fosse segura e intuitiva foi o maior desafio técnico do projeto. - Evolução da Arquitetura: A decisão de migrar o armazenamento de ficheiros
.txtsimples para uma estruturaJSONcompleta no início do projeto foi crucial, mas exigiu uma refatoração significativa para garantir a escalabilidade. - Gestão de Tempo e Prioridades: Equilibrar o desenvolvimento de novas funcionalidades com a necessidade de refatorar e organizar o código existente foi um desafio constante, ensinando-me a importância do planeamento e da gestão de expectativas.
- Solução de Alta Flexibilidade: A capacidade de alterar toda a aplicação através de um ficheiro de configuração é o maior sucesso do projeto, garantindo a sua longevidade e utilidade para a equipa de TI.
- Crescimento Técnico e Pessoal: O projeto permitiu-me aprofundar drasticamente os meus conhecimentos em C#, .NET, padrões de design de software e boas práticas de desenvolvimento, ao mesmo tempo que desenvolvi competências de comunicação, responsabilidade e adaptação em ambiente profissional.
Algumas das possíveis evoluções futuras para o projeto são:
- Finalizar a Janela de Configurações: Concluir a implementação de todas as funcionalidades de edição na interface de gestão, tornando-a totalmente funcional e robusta para utilizadores não-técnicos.
- Robustecer o Sistema de Personalização Visual: Garantir que todas as configurações de tema (cores, fontes, etc.) sejam aplicadas de forma consistente e em tempo real em todos os controlos da aplicação, resolvendo as inconsistências conhecidas.
- Suporte a Múltiplos Idiomas: Integrar um sistema de internacionalização para que os textos da interface e dos conteúdos possam ser traduzidos.
- Formulário de Pedidos: Adicionar uma funcionalidade para que os utilizadores possam submeter pedidos de suporte diretamente através da aplicação, com envio de e-mail automático para a equipa de TI.
- Instalador: Criar um pacote de instalação (ex: usando WiX Toolset ou Inno Setup) para facilitar a distribuição e implementação da aplicação nos quiosques.
- Testes Automatizados: Implementar testes unitários para validar a lógica da biblioteca auxiliar e do sistema de configurações.