Esta é a API central (Middleware) do projeto SyncDesk, desenvolvida para atuar como ponte entre o sistema GLPi (Gestionnaire Libre de Parc Informatique) e o aplicativo móvel dos técnicos de suporte.
O projeto tem como foco otimizar o fluxo de atendimento em campo, entregando mobilidade, segurança multi-tenant e notificações em tempo real.
Este projeto é parte integrante do Trabalho de Conclusão de Curso (TCC) intitulado:
"DESENVOLVIMENTO DE APLICAÇÃO MÓVEL INTEGRADA AO GLPI PARA SUPORTE DE TI"
- Autor: Kawã Sousa de Lima
- Instituição: Instituto Federal de Educação, Ciência e Tecnologia do Piauí (IFPI) - Campus Teresina Central
- Curso: Tecnologia em Análise e Desenvolvimento de Sistemas (TADS)
- Orientador: Prof. Me. Francisco Marcelino Almeida de Araújo
- Ano: 2026
O backend foi arquitetado utilizando Django REST Framework (DRF) e segue a separação por domínios lógicos (apps do Django) localizados na pasta src/:
-
Authentication (
authentication): Responsável pela validação do técnico no GLPi e o roteamento de segurança. O isolamento de dados (Multi-Tenant) é garantido verificando estritamente a qual equipe (cd_team) o técnico pertence. -
Teams & Criptografia (
teams): Gerencia as instâncias cadastradas. Inclui o robustoCryptoService, que utiliza AES-256 (viacryptography/ Fernet) para criptografar as credenciais críticas e tokens da API (App Token e User Token) antes de irem para o banco de dados. -
Tickets Proxy (
tickets): Atua como proxy reverso para o sistema GLPi real. OGLPiProxyServiceintercepta requisições do mobile, faz a tradução e chama o servidor GLPi do cliente, permitindo ações rápidas (como Autoatribuição Remota de chamados). -
Webhooks & Push Notifications (
webhooks): Recebe os eventos disparados diretamente pelo servidor GLPi (ex: Novo Chamado) e repassa os dados para oFCMService(Firebase Cloud Messaging), que entrega os alertas via Push Notification em tempo real para os dispositivos da equipe.
- Isolamento Total: Técnicos de um
cd_teamsão isolados em banco e não conseguem acessar instâncias de outras equipes. - Criptografia em Repouso: Os App Tokens do GLPi são encriptados usando a
MASTER_KEYfornecida via Variáveis de Ambiente (AES-256). - HTTPS Obrigatório: Configuração de Proxy Reverso em Nginx que bloqueia acessos HTTP e redireciona exclusivamente para HTTPS.
A integração e deploy contínuos estão configurados em .github/workflows/ci-cd.yml.
O fluxo é executado estritamente de forma manual (workflow_dispatch) e segue a esteira:
- Run Tests: Sobe o ambiente Django e roda toda a bateria automatizada de testes isolados.
- Build Image: Valida o
Dockerfilegerando a imagem limpa. - Deploy (SSH): Acessa a máquina AWS EC2, executa um git pull, refaz a build usando Docker Compose e limpa as imagens antigas para poupar espaço.
- Docker e Docker Compose instalados.
- Um arquivo
.envconfigurado na raiz (use o.env.examplecomo base).
O ambiente local de desenvolvimento reflete a estrutura da aplicação mapeando o volume do código para facilitar o hot-reload.
# Sobe o container da API e do Banco
docker compose -f config/docker/docker-compose.yml up --buildA API estará acessível em http://localhost:8000.
A documentação interativa via Swagger/OpenAPI pode ser vista em http://localhost:8000/docs/.
A aplicação está contêinerizada para implantação em servidores remotos Linux.
A pilha de produção conta com três contêineres: web (Gunicorn/Django), nginx e certbot (Let's Encrypt).
Para realizar o deploy seguro com certificados reais, o repositório conta com um script automatizado que contorna a dependência "ovo-e-galinha" do Nginx vs Certbot:
# Na instância de produção (EC2), execute:
chmod +x init-letsencrypt.sh
./init-letsencrypt.shO script cuidará de pedir um certificado dummy, subir o Nginx e imediatamente buscar e assinar o seu certificado criptográfico válido do Let's Encrypt.
A API conta com uma suíte rigorosa de testes unitários testando os fluxos das integrações e isolamento de banco. Para rodar os testes localmente via Docker:
docker compose -f config/docker/docker-compose.yml exec web python manage.py test(Todos os testes devem retornar OK validando AES, login, proxies e Firebase).
Desenvolvido por Kawã Sousa como parte dos requisitos de defesa do TCC do curso de Tecnologia em Análise e Desenvolvimento de Sistemas (TADS) no IFPI. Todos os direitos reservados à integração descrita no documento monográfico original.