Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mayromyller/fidelizi-test-mobile
Uma aplicação mobile para gerenciamento de programa de fidelidade, desenvolvida com React Native e Expo.
https://github.com/mayromyller/fidelizi-test-mobile
expo javascript react-native typescript zustand
Last synced: 10 days ago
JSON representation
Uma aplicação mobile para gerenciamento de programa de fidelidade, desenvolvida com React Native e Expo.
- Host: GitHub
- URL: https://github.com/mayromyller/fidelizi-test-mobile
- Owner: mayromyller
- Created: 2025-01-14T19:55:42.000Z (20 days ago)
- Default Branch: main
- Last Pushed: 2025-01-19T03:31:41.000Z (16 days ago)
- Last Synced: 2025-01-19T04:26:38.117Z (16 days ago)
- Topics: expo, javascript, react-native, typescript, zustand
- Language: TypeScript
- Homepage:
- Size: 1.03 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Uma aplicação mobile para gerenciamento de programa de fidelidade, desenvolvida com React Native e Expo.
## Sobre o Projeto
Um aplicativo de fidelidade que permite o gerenciamento de pontos/selos para clientes de um determinado estabelecimento. O sistema possui funcionalidades como autenticação, registro de gastos, acúmulo de selos e resgate de benefícios.
## Pré-requisitos
Antes de começar, você precisa ter instalado em sua máquina:
- Node.js (versão 18.x)
- Ambiente de desenvolvimento [React Native](https://react-native.rocketseat.dev/)## Instalação
Siga os passos abaixo para instalar e configurar o projeto em sua máquina local.
1. **Clone o repositório**
```bash
git clone https://github.com/mayromyller/fidelizi-test-mobile.git
```
2. **Navegue até o diretório do projeto**
```bash
cd fidelizi-test-mobile
```
3. **Instale as dependências**
```bash
npm install
```
ou, caso utilize `yarn`:
```bash
yarn install
```## Executando o Projeto
Para iniciar o servidor local, execute o seguinte comando:
```bash
yarn start
```Utilizando aplicativo [Expo Go](https://play.google.com/store/apps/details?id=host.exp.exponent&hl=pt_BR), escaneie o QRCode para executar o projeto.
## Arquitetura
O projeto utiliza uma adaptação da arquitetura [Vertical Slice](https://www.milanjovanovic.tech/blog/vertical-slice-architecture), organizada em camadas:
- **App Container**: Responsável pela configuração inicial do app, providers e navegação
- **Screens**: Camada de apresentação com as telas da aplicação
- **Features**: Camada que contém a lógica de negócio separada por funcionalidades
- **Infrastructure**: Camada base com serviços de persistência e utilitários### Principais Features
1. **Autenticação**
- Login com email e senha
- Persistência de dados do usuário
- Gerenciamento de sessão2. **Gestão de Usuários**
- Cadastro de novos clientes
- Atualização de dados
- Armazenamento de informações3. **Sistema de Selos**
- Cálculo de selos baseado no valor gasto
- Acompanhamento de selos acumulados
- Sistema de resgate de benefícios## Tecnologias Principais
- React Native
- Expo
- TypeScript
- @shopify/restyle (Theming)
- Zustand (Gerenciamento de Estado)
- React Navigation
- AsyncStorage## Funcionalidades & Regras de Negócio Principais
- **Contexto de Autenticação:**
- Autenticação com persistência de dados no AsyncStorage
- Provê estado de autenticação para a aplicação
- Gerencia loading states
- Métodos para salvar e remover credenciais
- Inicialização automática do estado de autenticação
- Hooks de autenticação: Expõe o contexto de autenticação
- `HomeScreen.tsx` → `AmountSpentScreen.tsx` → `ContactUserScreen.tsx` → `RegisterUserScreen.tsx` → `StampEarnScreen.tsx`
- Compartilham hooks de gestão de usuário e selos
- **Gestão de Usuário:**
- Usa Zustand para gerenciamento de estado
- Persiste dados do usuário
- Gerencia selos do usuário
- **Cálculos de Negócio:**
- Lógica de cálculo de selos
- Valor mínimo de R$20 por selo
- **Gestão de Selos:**
- Gerencia a contagem de selos
- Métodos para adicionar e remover selos
- Integrado com o sistema de persistência
- **Integração com AsyncStorage:**
- Implementação concreta da interface Storage
- Métodos para persistência de dados
- Serialização/Deserialização automática de JSON
- **Estado Compartilhado:**
- Dados do usuário via Zustand
- **Validações e Regras:**
- Valor mínimo para selo: R$20
- Autenticação com email/senha fixos para teste
- Sistema de 12 selos para benefício**Fluxo de Dados:**
```
App.tsx
↓
AuthContextProvider
↓
Navigation
↓
Screens (SignIn → Home → Amount → Contact → Register → StampEarn)
↓
Features (Auth, User, Stamp)
↓
Services (Storage, UserPersist)
```## Author
- [Linkedin - Mayro Myller](https://www.linkedin.com/in/mayromyller/)