1. Introdução
O projeto Sport Club consiste em um aplicativo móvel desenvolvido com Flutter, cuja finalidade é servir como uma base para o gerenciamento de turmas e clubes esportivos. Inicialmente, o foco está voltado para o futebol, mas a arquitetura e as práticas adotadas visam permitir uma futura expansão para outras modalidades esportivas.
O aplicativo destina-se, em princípio, a profissionais do esporte — tais como treinadores, juízes e gestores — facilitando a criação e administração de clubes de treinamento, bem como aos atletas, gerando estatíticas de desempenho e rankings nacionais.
Entre as funcionalidades previstas, destacam-se o cadastro e a edição de clubes, a associação de atletas aos clubes, a gestão financeira (controle de receitas e despesas), o acompanhamento de estatísticas dos atletas e a organização de eventos relacionados aos treinos e competições. Adicionalmente, o sistema integra mecanismos para a cobrança de mensalidades para os administradores dos clubes por meio de plataformas de pagamento, como Stripe ou MercadoPago.
ATENÇÃO: o Sport Club não lida com o capital de seus clubes e associados, este trabalho fica delegado às empresas de pagamento, no momento Stripe. Para isto será criado uma conta no Stripe, para seus recebimentos e pagamentos. A nós caberá apenas as taxas do serviço de gerenciamento do sistema.
Embora o modelo de negócio ainda esteja em fase de debate, há possibilidades de financiamento por meio da venda de serviços aos gestores (com cobrança de taxa por atleta) e do acesso a funcionalidades premium para os atletas. Outras alternativas, como a veiculação de anúncios para empresas locais de material esportivo, também estão sendo consideradas, mas sem compromisso definido neste momento.
Esta documentação técnica apresenta um panorama geral do projeto, abrangendo seus objetivos, a arquitetura adotada, a evolução técnica por meio das diversas etapas de desenvolvimento, bem como as decisões técnicas que contribuíram para a robustez e escalabilidade do sistema.
2. Objetivos do Projeto
O projeto Sport Club tem como principal objetivo fornecer uma plataforma robusta e escalável para o gerenciamento de turmas e clubes esportivos. Essa plataforma visa atender tanto profissionais do esporte—como treinadores, juízes e gestores—quanto os atletas, facilitando o processo de organização, controle e monitoramento das atividades esportivas. A seguir, são detalhados os objetivos do projeto, divididos em funcionais e não funcionais:
2.1 Objetivos Funcionais
2.1.1 Cadastro e Gerenciamento de Clubes
Permitir que os gestores criem, editem e organizem clubes de treinamento. Essa funcionalidade inclui a associação de atletas e colaboradores, bem como a gestão de informações detalhadas do clube, como endereço, horário de funcionamento e dados financeiros.
2.1.2 Gestão de Atletas
Facilitar o cadastro, atualização e gerenciamento de atletas, possibilitando a vinculação destes a um ou mais clubes. O sistema deverá suportar o registro de informações pessoais, para efeito de cobrança de taxas dos clubes, dados estatísticos e, futuramente, um histórico de desempenho.
2.1.3 Controle Financeiro
Oferecer ferramentas para o gerenciamento de receitas e despesas de cada clube, permitindo que os gestores acompanhem a saúde financeira de suas operações de forma individualizada. Essa funcionalidade abrange a integração com plataformas de pagamento, para automatizar a cobrança de mensalidades e o controle de despesas.
2.1.4 Organização de Eventos
Permitir a criação, edição e acompanhamento de eventos e treinamentos. Esse módulo tem a finalidade de organizar competições, amistosos e outras atividades relacionadas, facilitando a comunicação entre os participantes e o gerenciamento logístico por parte dos administradores.
2.1.5 Integração com Serviços Externos
Integrar o aplicativo com serviços de pagamento (como Stripe ou MercadoPago) e, eventualmente, com provedores de informações de geolocalização e dados governamentais (por exemplo, via CEP) para melhorar a acurácia dos dados cadastrais, e divulgação de localidades do clube e eventos com geolocalização.
2.2 Objetivos Não Funcionais
2.2.1 Escalabilidade e Manutenibilidade
Desenvolver uma arquitetura modular que permita a fácil adição de novas funcionalidades e a expansão para outras modalidades esportivas. A utilização de padrões de injeção de dependências e o gerenciamento de estado centralizado são práticas adotadas para garantir a manutenção a longo prazo do sistema.
2.2.2 Segurança e Confiabilidade
Implementar medidas robustas de segurança na comunicação com o backend (Firebase) por meio de regras de acesso rigorosas para Firestore e Firebase Storage. Além disso, assegurar a integridade dos dados dos usuários e a proteção contra acessos não autorizados.
2.2.3 Desempenho e Responsividade
Garantir que o aplicativo ofereça uma experiência de uso fluida e responsiva, através do uso de técnicas eficientes de gerenciamento de estado (como ValueNotifier
e ValueListenableBuilder
) e da otimização do carregamento e exibição dos dados.
2.2.4 Usabilidade e Consistência na Interface
Desenvolver uma interface intuitiva e consistente, com componentes de UI padronizados que facilitem a navegação e o entendimento do usuário. A preocupação com a experiência do usuário é essencial para a adesão e o uso efetivo do aplicativo por parte dos profissionais e atletas.
2.2.5 Integração Contínua e Testabilidade
Adotar práticas de desenvolvimento que favoreçam a integração contínua e a testabilidade, como a escrita de testes unitários para validadores e utilitários, e o uso de emuladores para simular o ambiente Firebase. Isso permite identificar e corrigir problemas de forma proativa, mantendo a qualidade do código.
3. Visão Geral da Arquitetura
…
Changelog
O desenvolvimento do app pode ser acompanhado no arquivo de Changelog no link: Sports