CSTV é um aplicativo móvel desenvolvido com React Native e Expo Go, projetado para os fãs de Counter-Strike acompanharem os últimos jogos e campeonatos. Veja facilmente quais jogos estão acontecendo e quais estão por vir!
Certifique-se de que você tem o seguinte instalado antes de prosseguir:
@react-navigation/native: Biblioteca robusta para navegação entre telas dentro do aplicativo.@shopify/flash-list: Uma implementação otimizada de lista virtualizada para exibir grandes listas de dados de forma eficiente.date-fns: Biblioteca moderna para manipulação de datas, utilizada para formatar e calcular datas e horários dos jogos.expo: Uma plataforma aberta para construir e publicar projetos React Native.expo-font,expo-linking,expo-router,expo-splash-screen,expo-status-bar,expo-system-ui,expo-web-browser: Conjunto de bibliotecas Expo para gerenciamento de fontes personalizadas, deep linking, roteamento, splash screens, barra de status, UI do sistema e o navegador web.lucide-react-native: Oferece uma coleção de ícones populares para uso em aplicativos React Native.reactereact-native: Bibliotecas de base para construção de interfaces de usuário com componentes declarativos.react-native-gesture-handler,react-native-safe-area-context,react-native-screens: Ferramentas para melhorar a interação do usuário, gerenciar áreas seguras em dispositivos com entalhes e otimizar as telas do aplicativo.recoil: Biblioteca de gerenciamento de estado para React que fornece funcionalidades além do Context API para um estado global mais eficiente.
Este projeto segue uma estrutura de diretórios modular e intuitiva, facilitando a navegação e a manutenção do código.
app: Contém os principais arquivos TypeScript para a lógica da aplicação.assets: Armazena recursos estáticos como imagens e fontes.fonts: Diretório para arquivos de fontes personalizadas.images: Contém imagens usadas na aplicação como ícones e imagens de fundo.
components: Componentes reutilizáveis da interface do usuário.constants: Constantes globais usadas em toda a aplicação.hooks: Hook personalizado do React.store: Gerenciamento de estado globalutils: Funções utilitárias.
Cada arquivo e diretório tem um propósito específico e contribui para a modularidade e facilidade de entendimento do código. Mantenha esta estrutura ao adicionar novos componentes ou serviços à aplicação.
A aplicação segue uma arquitetura baseada em componentes, que é padrão para aplicações desenvolvidas com React Native, com uma abordagem modular para separação de preocupações.
- Os componentes (
components) são as unidades de construção reutilizáveis que formam as interfaces do usuário. Eles incluemCard,Header,Opponents, ePlayerCard, cada um encapsulando sua própria lógica e estilo.
- O estado da aplicação é gerenciado de forma centralizada (
store), permitindo um fluxo de dados previsível e facilitando o gerenciamento de estados complexos.
- Funções utilitárias (
utils) são usadas para operações comuns como formatação de dados, que são usadas em toda a aplicação. - Hooks personalizados (
hooks) comouseFetchencapsulam a lógica de busca de dados, tornando-a reutilizável e mais fácil de gerenciar.
- Os recursos estáticos como fontes e imagens são mantidos no diretório
assets, separando claramente os ativos de design do código.
Essa arquitetura foi projetada para ser escalável, fácil de manter e testar, promovendo práticas de desenvolvimento limpas e eficientes.
Siga estes passos para configurar o ambiente de desenvolvimento:
-
Clone o repositório:
git clone https://github.com/danilomartinelli/cstv.git
-
Entre no diretório do projeto:
cd cstv -
Instale as dependências:
npm install
-
Crie um arquivo .env:
touch .env
-
Adicione a chave da API:
EXPO_PUBLIC_PANDA_SCORE_API_KEY=<CHAVE DA API>
Para executar o projeto, execute o seguinte comando:
expo startQuaisquer contribuições que você fizer serão muito apreciadas.
- Faça um fork do projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature) - Faça o commit das suas alterações (
git commit -m 'Add some AmazingFeature') - Faça o push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Adicionar testes
- Adicionar suporte a outros idiomas
- Adicionar cache das chamadas da API
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
Danilo Martinelli - @danilo429