gestao_ponto_package 2.3.1
gestao_ponto_package: ^2.3.1 copied to clipboard
Flutter package with time tracking and attendance management features for Senior mobile apps.
📦 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/