{"id":30260748,"url":"https://github.com/hellyaxs/phs-uabj","last_synced_at":"2026-01-20T17:38:30.678Z","repository":{"id":294353536,"uuid":"979537128","full_name":"hellyaxs/PHS-UABJ","owner":"hellyaxs","description":"Sistema de Inventário e Movimentação com RFID","archived":false,"fork":false,"pushed_at":"2025-07-30T01:44:26.000Z","size":114,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-15T20:18:21.619Z","etag":null,"topics":["docker","fastapi","mosquitto-mqtt-broker","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hellyaxs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-07T17:04:31.000Z","updated_at":"2025-07-30T01:44:29.000Z","dependencies_parsed_at":"2025-05-20T03:24:12.306Z","dependency_job_id":"2b4f589f-d173-45cf-8ecd-a323077a8b69","html_url":"https://github.com/hellyaxs/PHS-UABJ","commit_stats":null,"previous_names":["hellyaxs/phs-uabj"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hellyaxs/PHS-UABJ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellyaxs%2FPHS-UABJ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellyaxs%2FPHS-UABJ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellyaxs%2FPHS-UABJ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellyaxs%2FPHS-UABJ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hellyaxs","download_url":"https://codeload.github.com/hellyaxs/PHS-UABJ/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellyaxs%2FPHS-UABJ/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001288,"owners_count":26083058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","fastapi","mosquitto-mqtt-broker","python"],"created_at":"2025-08-15T19:56:16.065Z","updated_at":"2025-10-09T11:13:18.292Z","avatar_url":"https://github.com/hellyaxs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto Hardware e software\n\nEste projeto é uma demonstração de integração com o broker MQTT Mosquitto usando Python.\n\n## 🚀 Tecnologias\n\n![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54)\n![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![MQTT](https://img.shields.io/badge/MQTT-660066?style=for-the-badge\u0026logo=mqtt\u0026logoColor=white)\n![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=for-the-badge\u0026logo=fastapi)\n![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n\n## 📋 Pré-requisitos\n\n- Python 3.8+\n- Docker\n- Docker Compose\n\n## 🔧 Instalação\n\n### Usando Docker Compose\n\n1. Clone o repositório:\n```bash\ngit clone https://github.com/seu-usuario/demo_mosquitto.git\ncd demo_mosquitto\n```\n\n2. Configure as variáveis de ambiente:\n```bash\n# Copie o arquivo de exemplo\ncp .env.example .env\n\n# Edite o arquivo .env com suas configurações\nnano .env\n```\n\n3. Execute o projeto com Docker Compose:\n```bash\ndocker-compose up -d\n```\n\nO projeto estará disponível em:\n- Aplicação: http://localhost:8000\n- MQTT Broker: localhost:1883\n\n### 🔐 Usuário Padrão\n\nO sistema automaticamente cria um usuário padrão através das migrations do Alembic:\n\n- **Email**: `admin@exemplo.com`\n- **Senha**: `senha123`\n- **Nome**: `Administrador`\n\n**Nota**: O usuário padrão é criado automaticamente durante a execução das migrations do banco de dados.\n\n### 🧪 Testando a Persistência\n\nPara testar se a persistência de mensagens está funcionando corretamente:\n\n```bash\n# Instalar dependência para o teste\npip install paho-mqtt\n\n# Executar o script de teste\npython test_persistencia.py\n```\n\nO script irá:\n1. Publicar mensagens com QoS 1\n2. Simular um serviço offline\n3. Conectar um novo subscriber\n4. Verificar se as mensagens foram recuperadas\n\n### 📊 Monitoramento\n\nPara verificar os logs e dados persistentes:\n\n```bash\n# Ver logs do Mosquitto\ndocker logs demo_mosquitto-mosquitto-1\n\n# Entrar no container para verificar dados\ndocker exec -it demo_mosquitto-mosquitto-1 sh\nls -la /mosquitto/data/\ntail -f /mosquitto/log/mosquitto.log\n```\n\n### Desenvolvimento Local\n\n1. Clone o repositório:\n```bash\ngit clone https://github.com/seu-usuario/demo_mosquitto.git\ncd demo_mosquitto\n```\n\n2. Crie e ative um ambiente virtual:\n```bash\npython -m venv venv\nsource venv/bin/activate  # Linux/Mac\n# ou\n.\\venv\\Scripts\\activate  # Windows\n```\n\n3. Instale as dependências:\n```bash\npip install -r requirements.txt\n```\n\n4. Execute o projeto:\n```bash\nfastapi dev src/main.py\n```\n\n## 🔧 Tecnologias Utilizadas\n\n| Componente      | Tecnologia | Descrição                                    |\n|----------------|------------|----------------------------------------------|\n| Aplicação      | Python     | Aplicação principal com FastAPI              |\n| Broker MQTT    | Mosquitto  | Broker MQTT para comunicação em tempo real   |\n| Container      | Docker     | Containerização da aplicação                 |\n\n## 📋 Funcionalidades\n\n### ✅ Persistência de Mensagens MQTT\n- **Mensagens persistentes**: As mensagens são armazenadas em disco mesmo quando não há clientes conectados\n- **Recuperação automática**: Quando o serviço volta online, recebe todas as mensagens não processadas\n- **QoS configurável**: Suporte a diferentes níveis de qualidade de serviço (0, 1, 2)\n- **Mensagens retidas**: Suporte a mensagens que são enviadas automaticamente para novos subscribers\n| Orquestração   | Docker Compose | Gerenciamento dos containers              |\n| Banco de Dados | PostgreSQL | Armazenamento persistente de dados           |\n\n---\n\n## 📁 Estrutura do Projeto\n\n```tree\ndemo_mosquitto/\n├── migrations/           # Migrations do banco de dados\n├── src/\n│   ├── domain/           # Entidades e regras de negócio\n│   ├── repository/       # Camada de acesso a dados\n│   ├── services/         # Serviços e lógica de aplicação\n│   ├── events/           # Handlers de eventos e mensagens MQTT\n│   ├── config/           # Configurações da aplicação \n│   │     ├── database/\n│   │     ├── mosquitto/\n│   │     └── settings.py \n│   └── main.py           # Ponto de entrada da aplicação\n├── docs/                 # Documentação adicional\n├── Dockerfile\n├── docker-compose.yaml\n├── requirements.txt\n├── .env.example          # Variaveis de ambiente do projeto\n└── README.md\n```\n\n## 🤝 Como Contribuir\n\n1. Faça um Fork do projeto\n2. Crie uma Branch para sua Feature (`git checkout -b feature/AmazingFeature`)\n3. Faça o Commit das suas mudanças (`git commit -m 'Add some AmazingFeature'`)\n4. Faça o Push para a Branch (`git push origin feature/AmazingFeature`)\n5. Abra um Pull Request\n\n## 📝 Padrões de Código\n\n- Siga o guia de estilo PEP 8 para Python\n- Mantenha os testes atualizados\n- Documente novas funcionalidades\n- Use mensagens de commit descritivas\n\n## 📄 Licença\n\nEste projeto está sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellyaxs%2Fphs-uabj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhellyaxs%2Fphs-uabj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellyaxs%2Fphs-uabj/lists"}