{"id":28411612,"url":"https://github.com/pripoliveira50/pocsdkunico","last_synced_at":"2026-04-09T12:47:23.329Z","repository":{"id":296230671,"uuid":"992743860","full_name":"pripoliveira50/pocSdkUnico","owner":"pripoliveira50","description":"🔐 React Native bridge for Unico SDK - biometric selfie \u0026 document capture. Clean Architecture + step-by-step guides. Community project to save developers weeks of work. 📱✨","archived":false,"fork":false,"pushed_at":"2025-05-29T16:37:32.000Z","size":448,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-09T14:18:43.047Z","etag":null,"topics":["android","bridge","ios","kotlin","react-native","swift"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/pripoliveira50.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-29T16:35:54.000Z","updated_at":"2025-06-09T03:42:16.000Z","dependencies_parsed_at":"2025-05-29T17:09:04.292Z","dependency_job_id":null,"html_url":"https://github.com/pripoliveira50/pocSdkUnico","commit_stats":null,"previous_names":["pripoliveira50/pocsdkunico"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pripoliveira50/pocSdkUnico","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pripoliveira50%2FpocSdkUnico","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pripoliveira50%2FpocSdkUnico/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pripoliveira50%2FpocSdkUnico/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pripoliveira50%2FpocSdkUnico/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pripoliveira50","download_url":"https://codeload.github.com/pripoliveira50/pocSdkUnico/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pripoliveira50%2FpocSdkUnico/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261575331,"owners_count":23179498,"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","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":["android","bridge","ios","kotlin","react-native","swift"],"created_at":"2025-06-02T17:45:56.639Z","updated_at":"2025-12-30T22:49:42.746Z","avatar_url":"https://github.com/pripoliveira50.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📦 SDK Unico Bridge para React Native\n\n\u003e ⚠️ **PROJETO INDEPENDENTE**: Este é um projeto **não-oficial** desenvolvido por mim (Priscila Oliveira) para a para ajudar a comunidade. **Não tenho nenhum envolvimento com a Unico** e criei esta implementação por não encontrar recursos similares disponíveis na internet.\n\nUma implementação completa de bridge nativa para integração do SDK da Unico IDCloud em aplicações React Native, permitindo captura de selfies e documentos com validação biométrica.\n\n---\n\n## 🎯 Motivação do Projeto\n\n**Por que criei este projeto?**\n\nDurante o desenvolvimento de uma aplicação que precisava integrar o SDK da Unico com React Native, enfrentei diversos desafios:\n\n- ❌ **Falta de documentação** específica para React Native\n- ❌ **Ausência de exemplos práticos** de implementação de bridge nativa\n- ❌ **Dificuldades** para integrar corretamente em ambas as plataformas (iOS e Android)\n- ❌ **Problemas de configuração** que consumiram semanas de desenvolvimento\n\n**Como posso ajudar a comunidade?**\n\n- ✅ **Documentação completa** e detalhada para implementação\n- ✅ **Guias passo-a-passo** para iOS e Android\n- ✅ **Código de exemplo** funcional e testado\n- ✅ **Troubleshooting** de problemas reais\n- ✅ **Arquitetura limpa** e escalável\n\n🎯 **Objetivo**: Evitar que outros desenvolvedores passem pelas mesmas dificuldades que enfrentei.\n\n---\n\n## 🤝 Importante: Projeto da Comunidade\n\n### ⚖️ **Disclaimer Legal**\n\n- Este projeto **NÃO é oficial** da Unico\n- **NÃO tenho afiliação** com a empresa Unico\n- O SDK da Unico continua sendo **propriedade da Unico**\n- Esta implementação é uma **ponte (bridge)** criada independentemente\n\n### 🎯 **Objetivo da Comunidade**\n\n- **Compartilhar conhecimento** sobre implementação de bridges nativas\n- **Documentar processo** de integração com React Native\n- **Ajudar desenvolvedores** que enfrentam os mesmos desafios\n- **Promover boas práticas** de desenvolvimento\n\n### 📢 **Para a Unico**\n\nSe representantes da Unico encontrarem este projeto:\n\n- **Objetivo é sempre ajudar** a comunidade de desenvolvedores\n\n---\n\n## 🏗️ Visão Geral\n\nEste projeto demonstra como integrar o SDK da Unico em aplicações React Native através de uma bridge nativa robusta, implementando:\n\n- **Captura de Selfie** com biometria facial\n- **Captura de Documentos** (CNH, RG, CPF) com frames guiados\n- **Fluxo Guiado** completo de verificação\n- **Gerenciamento de Permissões** nativo\n- **Arquitetura Clean** com separação de responsabilidades\n- **Envio em Lote** para backend\n\n---\n\n## 🏗️ Arquitetura\n\n### 📱 **Plataformas Nativas**\n\n#### Android (Kotlin)\n\n- `UnicoSdkModule`: Bridge principal com SDK Android\n- `UnicoConfig`: Configuração de credenciais\n- `UnicoTheme`: Personalização visual\n- `UnicoSdkPackage`: Registro do módulo\n\n#### iOS (Swift)\n\n- `UnicoSdkModule`: Bridge principal com SDK iOS\n- `UnicoConfig`: Configuração de credenciais\n- `UnicoTheme`: Personalização visual\n- Bridge Header para interoperabilidade\n\n### ⚛️ **React Native (TypeScript)**\n\n- **Clean Architecture** com camadas bem definidas\n- **Domain**: Entidades, casos de uso e contratos\n- **Data**: Implementação de repositórios\n- **Infrastructure**: Serviços nativos\n- **Presentation**: Hooks e interfaces\n\n---\n\n## 📚 Documentação Completa\n\n### 🤖 Android\n\n- [doc-geral-android](doc/android/doc-geral-android.md) - Documentação a nível geral da implementação\n- [guia-implementacao-nativa](doc/android/guia-implementacao-nativa.md) - Passo a passo para implementação nativa no android\n- [build.gradle (app)](\u003cdoc/android/build.gradle-(app).md\u003e) - Configuração do módulo Android\n- [build.gradle (projeto)](\u003cdoc/android/build.gradle-(projeto).md\u003e) - Configuração global\n- [MainApplication](doc/android/MainApplication.md) - Classe principal da aplicação\n- [AndroidManifest](doc/android/AndroidManifest.md) - Permissões e configurações\n- [UnicoConfig](doc/android/UnicoConfig.md) - Configuração de credenciais\n- [UnicoSdkModule](doc/android/UnicoSdkModule.md) - Bridge nativa principal\n- [UnicoSdkPackage](doc/android/UnicoSdkPackage.md) - Registro do módulo\n- [UnicoTheme](doc/android/UnicoTheme.md) - Personalização visual\n\n### 🍎 iOS\n\n- [doc-geral-ios](doc/ios/doc-geral-ios.md) - Documentação a nível geral da implementação\n- [guia-implementacao-nativa](doc/ios/guia-implementacao-nativa.md) - Passo a passo para implementação nativa no ios\n- [Info.plist](doc/ios/Info-plist.md) - Permissões e configurações\n- [Podfile](doc/ios/Podfile.md) - Dependências CocoaPods\n- [UnicoConfig](doc/ios/UnicoConfig.md) - Configuração de credenciais\n- [UnicoSdkModule.m](doc/ios/UnicoSdkModule-m.md) - Bridge header Objective-C\n- [UnicoSdkModule](doc/ios/UnicoSdkModule.md) - Bridge nativa principal\n- [UnicoTheme](doc/ios/UnicoTheme.md) - Personalização visual\n- [Bridge Header](doc/ios/Bridge-Header.md) - Header de interoperabilidade\n\n### ⚛️ React Native\n\n- [Arquitetura](doc/react-native/guia-completo) - Guia completo da estrutura React Native\n\n---\n\n## 🚀 Instalação e Configuração\n\n### Pré-requisitos\n\n- React Native 0.72+\n- Node.js 18+\n- Android Studio (para Android)\n- Xcode 14+ (para iOS)\n- **Credenciais da Unico** (Bundle ID e Host Key) - obtidas diretamente com a Unico\n\n### 1. **Configuração de Ambiente**\n\n```bash\n# Clone o projeto\ngit clone [seu-repositorio]\ncd poc-sdk-unico\n\n# Instale dependências\nyarn install\n\n# iOS - Instale pods\ncd ios \u0026\u0026 pod install \u0026\u0026 cd ..\n```\n\n### 2. **Variáveis de Ambiente**\n\nCrie um arquivo `.env` na raiz do projeto:\n\n```env\n# Credenciais da Unico (obter diretamente com a Unico)\nUNICO_BUNDLE_ID=com.seuapp.exemplo\nUNICO_HOST_KEY=sua_chave_da_unico\nUNICO_ENVIRONMENT=UAT\n\n# Para iOS também\nUNICO_BUNDLE_IDENTIFIER=com.seuapp.exemplo\nUNICO_SDK_KEY=sua_chave_da_unico\n```\n\n### 3. **Configuração Android**\n\nVerifique se o `applicationId` no `android/app/build.gradle` corresponde ao registrado na Unico:\n\n```groovy\ndefaultConfig {\n    applicationId // Deve coincidir com UNICO_BUNDLE_ID\n    // ...\n}\n```\n\n### 4. **Configuração iOS**\n\nVerifique o Bundle Identifier no Xcode:\n\n- Abra `ios/PocUnico.xcworkspace`\n- Em Project Settings \u003e Identity, confirme o Bundle Identifier\n\n---\n\n## 🎮 Como Usar\n\n### **Teste Básico**\n\n```typescript\nimport { NativeModules } from 'react-native';\nconst { UnicoSdk } = NativeModules;\n\n// Teste de conectividade\nconst result = await UnicoSdk.testConnection();\nconsole.log(result); // \"Bridge Android funcionando! Activity: true\"\n```\n\n### **Captura de Selfie**\n\n```typescript\ntry {\n  const result = await UnicoSdk.captureSelfie();\n  console.log('Base64:', result.base64);\n  console.log('Dados criptografados:', result.encrypted);\n} catch (error) {\n  console.error('Erro:', error.message);\n}\n```\n\n### **Captura de Documento**\n\n```typescript\nconst documentTypes = [\n  'CNH_FRENTE',\n  'CNH_VERSO',\n  'RG_FRENTE',\n  'RG_VERSO',\n  'CPF',\n];\n\ntry {\n  const result = await UnicoSdk.captureDocument('CNH_FRENTE');\n  console.log('Documento capturado:', result);\n} catch (error) {\n  console.error('Erro:', error.message);\n}\n```\n\n### **Fluxo Guiado Completo**\n\nO app implementa um fluxo guiado que orienta o usuário:\n\n1. 🤳 Captura de Selfie\n2. 🪪 CNH Frente\n3. 🔄 CNH Verso\n4. 📤 Envio em Lote\n\n---\n\n## 🔧 Funcionalidades\n\n### ✅ **Implementado**\n\n- [x] Bridge nativa Android (Kotlin)\n- [x] Bridge nativa iOS (Swift)\n- [x] Captura de selfie com biometria\n- [x] Captura de documentos com frames guiados\n- [x] Gerenciamento de permissões\n- [x] Personalização visual (tema)\n- [x] Eventos nativos para JavaScript\n- [x] Fluxo guiado de verificação\n- [x] Arquitetura Clean no React Native\n- [x] Envio em lote para backend\n- [x] Verificação de status de processamento\n\n---\n\n## 🐛 Troubleshooting\n\n### **Android**\n\n```bash\n# Limpar build\ncd android \u0026\u0026 ./gradlew clean \u0026\u0026 cd ..\n\n# Verificar repositório Unico\ngrep -r \"maven-sdk.unico.run\" android/\n```\n\n### **iOS**\n\n```bash\n# Limpar pods\ncd ios \u0026\u0026 pod deintegrate \u0026\u0026 pod install \u0026\u0026 cd ..\n\n# Verificar dependências\npod list | grep unico\n```\n\n### **React Native**\n\n```bash\n# Reset cache\nnpx react-native start --reset-cache\n\n# Rebuild\nnpx react-native run-android\nnpx react-native run-ios\n```\n\n---\n\n## 📱 Testando\n\n### **Android**\n\n```bash\nnpx react-native run-android\n```\n\n### **iOS**\n\n```bash\nnpx react-native run-ios\n```\n\n### **Fluxo de Teste Recomendado**\n\n1. **Teste Bridge**: Verifique conectividade\n2. **Permissões**: Confirme acesso à câmera\n3. **Selfie**: Capture uma selfie\n4. **Documentos**: Capture CNH frente e verso\n5. **Envio**: Teste o envio em lote\n6. **Status**: Verifique o processamento\n\n---\n\n## 🤝 Contribuições\n\nEste é um projeto **open source da comunidade**! Contribuições são muito bem-vindas:\n\n1. Fork o projeto\n2. Crie uma branch para sua feature (`git checkout -b feature/nova-funcionalidade`)\n3. Commit suas mudanças (`git commit -am 'Adiciona nova funcionalidade'`)\n4. Push para a branch (`git push origin feature/nova-funcionalidade`)\n5. Abra um Pull Request\n\n### **Tipos de Contribuição Desejadas:**\n\n- 📝 **Melhorias na documentação**\n- 🐛 **Correções de bugs**\n- ✨ **Novas funcionalidades**\n- 🧪 **Testes adicionais**\n- 🌍 **Traduções**\n- 💡 **Sugestões de melhorias**\n\n---\n\n## 📄 Licença\n\nEste projeto é uma **demonstração técnica (POC)** desenvolvida por mim (Priscila Oliveira) para integração com o SDK da Unico.\n\n- **Use como referência** para implementar em seus próprios projetos\n- **Adapte conforme necessário** para suas necessidades\n- **Contribua** com melhorias para ajudar outros desenvolvedores\n\n---\n\n## 📞 Suporte\n\n### **Para questões sobre o SDK da Unico:**\n\n- [Documentação oficial da Unico](https://docs.unico.io)\n- Suporte oficial da Unico\n\n### **Para questões sobre esta implementação:**\n\n- Abra uma **issue** no repositório\n- Consulte a **documentação detalhada** em `doc/`\n- Participe das **discussões** da comunidade\n\n### **Para contribuir:**\n\n- Leia o **guia de contribuição**\n- Participe das **discussões** abertas\n- Compartilhe sua **experiência** com outros desenvolvedores\n\n---\n\n## 🎬 Videos\n\n### Vídeo 1 – iOS - [Click na thumbnail e veja no youtube]\n[![Assista no YouTube](https://img.youtube.com/vi/Apf5ssFwojE/0.jpg)](https://youtube.com/shorts/Apf5ssFwojE?si=FfOvsMiNyXVlC16w)\n\n### Vídeo 2 –  Android - [Click na thumbnail e veja no youtube]\n[![Assista no YouTube](https://img.youtube.com/vi/j0mKUI8jjZI/0.jpg)](https://youtube.com/shorts/j0mKUI8jjZI?si=ZItjfiFZKHfUlDW2)\n\nMade with ❤️ by [Priscila Oliveira](https://github.com/pripoliveira50/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpripoliveira50%2Fpocsdkunico","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpripoliveira50%2Fpocsdkunico","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpripoliveira50%2Fpocsdkunico/lists"}