Skip to content

LabirasIFPI/api.syncdesk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SyncDesk API - GLPi Mobile Integration Middleware

Python Django REST Docker Nginx AWS EC2 PostgreSQL Firebase

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.


Contexto Acadêmico

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

Arquitetura e Módulos (Domain-Driven)

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 robusto CryptoService, que utiliza AES-256 (via cryptography / 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. O GLPiProxyService intercepta 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 o FCMService (Firebase Cloud Messaging), que entrega os alertas via Push Notification em tempo real para os dispositivos da equipe.


Segurança de Produção

  • Isolamento Total: Técnicos de um cd_team sã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_KEY fornecida 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.

Pipeline CI/CD (GitHub Actions)

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:

  1. Run Tests: Sobe o ambiente Django e roda toda a bateria automatizada de testes isolados.
  2. Build Image: Valida o Dockerfile gerando a imagem limpa.
  3. 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.

Como Rodar o Projeto

Pré-requisitos

  • Docker e Docker Compose instalados.
  • Um arquivo .env configurado na raiz (use o .env.example como base).

Ambiente de Desenvolvimento

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 --build

A API estará acessível em http://localhost:8000. A documentação interativa via Swagger/OpenAPI pode ser vista em http://localhost:8000/docs/.

Ambiente de Produção (AWS EC2)

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.sh

O 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.


Rodando os Testes Automatizados

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).


Histórico e Autoria

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors