📦 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.dart para facilitar importações externas.
  • NĂŁo deve haver acoplamento entre camadas (ex: presentation nĂŁo acessa diretamente data).
  • domain nunca depende de data nem de presentation.
  • 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 I para interfaces (ex.: UserRepository ao invĂ©s de IUserRepository).
  • NĂŁo usar o sufixo Implementation para implementações (ex.: UserRepositoryImpl ao invĂ©s de UserRepositoryImplementation).

đź§Ş 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/