📦 Gestão Ponto Package
Biblioteca Flutter modular baseada em Clean Architecture para disponibilizar acesso Ă tela do banco de horas.
📚 Visão Geral
GestĂŁo Ponto Package Ă© uma biblioteca modular Flutter construĂda com os princĂpios da Clean Architecture, promovendo separação de responsabilidades, testabilidade e escalabilidade. Ideal para projetos que buscam organização de cĂłdigo em mĂłdulos reutilizáveis e independentes.
đź§± Estrutura do Projeto
Nossa arquitetura de projeto é baseada na estrutura Clean Architecture, que busca separar a lógica da aplicação em várias camadas para melhorar a maintainability e a escalabilidade.
A biblioteca Ă© organizada em mĂłdulos seguindo a estrutura:
lib/
└── nome_do_modulo/
├── data/
│ ├── datasources/
│ ├── models/
│ └── repositories/
├── domain/
│ ├── entities/
│ ├── repositories/
│ └── mappers/
└── presentation/
├── cubit/
├── pages/
└── widgets/
Cada mĂłdulo Ă© autossuficiente e pode ser importado individualmente por outros mĂłdulos ou projetos.
🚀 Como Usar
1. Instalação
Adicione a dependĂŞncia ao seu pubspec.yaml:
dependencies:
flutter_localizations: # para a internacionalização das telas e componentes
sdk: flutter
gestao_ponto_package: # import do package
git:
url: https://git.senior.com.br/gestao-ponto/gestao-ponto-package
ref: main
flutter: # para a internacionalização das telas e componentes
generate: true
2. Importação
import 'package:gestao_ponto_package/gestao_ponto_package.dart' as gestao;
3. Exemplo de Uso
Caso seu app use modular:
// O modulo InitializePackageModule deve ser inicializado no AppModule:
ModuleRoute(
'/gestao_ponto',
module: gestao.InitializePackageModule(),
),
// O package deve ser inicializado antes de ser usado, usando o método:
if (!gestao.Config.isInitialized()) {
gestao.Config.init(InitConfigService.dev, token: token.accessToken);
}
// É possivel validar a atualizar o token, usando o método:
if (!gestao.Config.validNewToken(token: token.accessToken)) {
gestao.Config.updateTOken(newToken: token.accessToken);
}
// Para fazer a verificação de permissão do usuário, deve ser usado o método:
gestao.Config.isAnyMenuItemAllowed;
// O widget MenuContainer() retorna a lista de widgets iniciais da lib:
gestao.MenuContainer(),
đź§© MĂłdulos DisponĂveis
| Módulo | Descrição | Status |
|---|---|---|
gestao_ponto |
Inicializa o Modular | ✅ Estável |
initialize_package_module |
Gerencia os modulos da aplicação | 🚧 Em desenvolvimento |
interceptor |
Responsavel por todas as requisição necessarias para o inicio do funcionamento | 🧪 Em testes |
🛠️ Tecnologias Utilizadas
-
Flutter Modular
-
Cubit
-
Dartz
-
Equatable
-
Flutter Test / Mocktail
-
Clean Architecture
-
Modularização por features
✅ Boas Práticas e Convenções
- Cada mĂłdulo deve expor um arquivo
exports.dartpara facilitar importações externas. - Não deve haver acoplamento entre camadas (ex:
presentationnĂŁo acessa diretamentedata). domainnunca depende dedatanem depresentation.- Regras de negĂłcio ficam exclusivamente nos
gerenciadores de estado e mappers. - Toda lĂłgica deve ser testada, com no mĂnimo 80% de coverage por mĂłdulo.
- Todos os imports devem ser relativos.
- NĂŁo usar o prefixo
Ipara interfaces (ex.:UserRepositoryao invés deIUserRepository). - Não usar o sufixo
Implementationpara implementações (ex.:UserRepositoryImplao invés deUserRepositoryImplementation).
đź§Ş Testes
Execute os testes com:
flutter test
Os testes estĂŁo organizados por camada e mĂłdulo, seguindo a estrutura:
test/
└── nome_do_modulo/
├── data/
├── domain/
└── presentation/