Aplicativo mobile desenvolvido em React Native e Expo para gerenciamento de tarefas, produtividade pessoal e organizaΓ§Γ£o diΓ‘ria, com sincronizaΓ§Γ£o em tempo real via Firebase Firestore, autenticaΓ§Γ£o por email/senha e tema claro/escuro com gradientes roxo + dourado.
Projeto de conclusΓ£o de mΓ³dulo da disciplina Desenvolvimento de Aplicativos Mobile do curso de AnΓ‘lise e Desenvolvimento de Sistemas da UNISUAM.
Permita instalaΓ§Γ£o de fontes desconhecidas nas configuraΓ§Γ΅es do Android.
VersΓ£o final do aplicativo TaskFlow β todos os requisitos funcionais e nΓ£o funcionais foram implementados, testados e aprovados. O APK estΓ‘ disponΓvel para download e o cΓ³digo-fonte encontra-se completo e estΓ‘vel.
- AutenticaΓ§Γ£o de usuΓ‘rios (login, cadastro, recuperaΓ§Γ£o de senha via email)
- CRUD completo de tarefas com persistΓͺncia offline
- SincronizaΓ§Γ£o automΓ‘tica em tempo real via Firestore
onSnapshot
- Fila de sincronizaΓ§Γ£o offline com detecΓ§Γ£o de rede
- Prioridades (baixa, mΓ©dia, alta, urgente) com badge colorido
- Categorias (trabalho, estudos, pessoal, saΓΊde, financeiro) com Γcones
- Subtarefas com ediΓ§Γ£o inline e progresso percentual
- RecorrΓͺncia (diΓ‘ria, semanal, mensal, anual)
- Busca textual por tΓtulo, descriΓ§Γ£o e categoria
- Filtros (hoje, amanhΓ£, semana, atrasadas, concluΓdas, pendentes, alta prioridade, urgentes)
- OrdenaΓ§Γ£o (data, prioridade, status, categoria, tΓtulo, criaΓ§Γ£o)
- CalendΓ‘rio multi-select para datas de vencimento
- Dashboard com estatΓsticas e grΓ‘ficos por categoria e prioridade
- CalendΓ‘rio interativo com feriados nacionais
- HistΓ³rico de aΓ§Γ΅es com bloqueio automΓ‘tico de 30 dias
- NotificaΓ§Γ΅es locais e push configurΓ‘veis
- Modo Foco (Pomodoro Timer)
- GeolocalizaΓ§Γ£o com GPS e busca de endereΓ§o/CEP
- Mapa interativo e rota entre pontos
- Compartilhamento de tarefas entre usuΓ‘rios
- ExportaΓ§Γ£o de tarefas (PDF)
- Tema claro/escuro com gradientes (roxo + dourado)
- Menu hambΓΊrguer com navegaΓ§Γ£o rΓ‘pida
- MΓ‘scaras de entrada (telefone, CPF, CNPJ, CEP, data)
- PΓ‘ginas de erro profissionais (400, 401, 403, 404, 419, 429, 500, 503)
- Login responsivo em 2 colunas para tablets/web
- Acessibilidade (labels, roles, estados para leitores de tela)
- Compatibilidade Android (APK via EAS Build)
- Compatibilidade Web (via React Native Web)
- AtualizaΓ§Γ΅es OTA via
expo-updates
- AutenticaΓ§Γ£o biomΓ©trica
| Tecnologia |
VersΓ£o |
Finalidade |
| React Native |
0.85.3 |
Framework mobile |
| Expo |
~56.0.12 |
Plataforma de desenvolvimento |
| React |
19.2.3 |
Biblioteca UI |
| React Native Web |
^0.21.2 |
Suporte a navegador |
| Tecnologia |
VersΓ£o |
Finalidade |
| @react-navigation/native |
^7.2.2 |
NavegaΓ§Γ£o principal |
| @react-navigation/native-stack |
^7.14.12 |
Stack navigator |
| @react-navigation/bottom-tabs |
^7.18.3 |
Abas inferiores |
| Tecnologia |
VersΓ£o |
Finalidade |
| Firebase JS SDK |
^10.14.1 |
Firestore + Authentication |
| @react-native-async-storage/async-storage |
2.2.0 |
PersistΓͺncia offline |
| @react-native-community/netinfo |
12.0.1 |
DetecΓ§Γ£o de conectividade |
| Tecnologia |
VersΓ£o |
Finalidade |
| Zustand |
^5.0.14 |
Gerenciamento de estado global |
| Zod |
^4.4.3 |
ValidaΓ§Γ£o de schemas |
| Tecnologia |
VersΓ£o |
Finalidade |
| expo-notifications |
~56.0.18 |
NotificaΓ§Γ΅es locais e push |
| expo-location |
~56.0.18 |
GPS e geolocalizaΓ§Γ£o |
| expo-linear-gradient |
~56.0.4 |
Gradientes na interface |
| expo-haptics |
~56.0.3 |
Feedback tΓ‘til |
| expo-audio |
~56.0.12 |
Γudio (sons de clique) |
| expo-image-picker |
~56.0.18 |
SeleΓ§Γ£o de foto |
| expo-font |
~56.0.7 |
Fontes customizadas |
| expo-file-system |
~56.0.8 |
ManipulaΓ§Γ£o de arquivos |
| expo-print |
~56.0.4 |
ImpressΓ£o PDF |
| expo-sharing |
~56.0.16 |
Compartilhamento nativo |
| expo-local-authentication |
~15.0.2 |
AutenticaΓ§Γ£o biomΓ©trica |
| expo-asset |
~56.0.17 |
Gerenciamento de assets |
| expo-build-properties |
~56.0.19 |
ConfiguraΓ§Γ£o de build nativo |
| expo-linking |
~56.0.14 |
Deep linking |
| expo-status-bar |
~56.0.4 |
Status bar |
| expo-updates |
~56.0.19 |
AtualizaΓ§Γ΅es OTA |
| Tecnologia |
VersΓ£o |
Finalidade |
| react-native-screens |
4.25.2 |
Telas nativas otimizadas |
| react-native-safe-area-context |
~5.7.0 |
Γrea segura |
| react-native-svg |
15.15.4 |
Vetores SVG |
| react-native-webview |
13.16.1 |
WebView |
| lucide-react-native |
^1.21.0 |
Γcones |
| @expo-google-fonts/inter |
^0.4.2 |
Fonte Inter |
| Tecnologia |
VersΓ£o |
Finalidade |
| Jest |
^30.0.0 |
Testes unitΓ‘rios |
| @testing-library/react-native |
^12.9.0 |
Testes de componentes |
| ESLint |
^8.57.0 |
AnΓ‘lise de cΓ³digo |
| Prettier |
β |
FormataΓ§Γ£o |
| Tecnologia |
VersΓ£o |
| firebase-admin |
^12.1.0 |
| firebase-functions |
^5.0.1 |
| expo-server-sdk |
^3.10.0 |
TaskFlow/
βββ App.js # NavegaΓ§Γ£o principal (Stack + Tab Navigator)
βββ app.json # ConfiguraΓ§Γ£o Expo
βββ index.js # Entry point Expo
βββ babel.config.js # ConfiguraΓ§Γ£o Babel
βββ metro.config.js # ConfiguraΓ§Γ£o Metro Bundler
βββ jest.config.js # ConfiguraΓ§Γ£o Jest
βββ eslint.config.js # ConfiguraΓ§Γ£o ESLint (flat)
βββ .eslintrc.json # ConfiguraΓ§Γ£o ESLint (legacy)
βββ .prettierrc # ConfiguraΓ§Γ£o Prettier
βββ eas.json # Perfis de build EAS
βββ package.json
βββ firebase.json # ConfiguraΓ§Γ£o Firebase Functions
βββ .firebaserc # Projeto Firebase padrΓ£o
βββ seed-admin.js # Script de seed admin
βββ screenshot.js # Captura de screenshots light (18 telas)
βββ screenshot-dark.js # Captura de screenshots dark (6 telas)
βββ CHANGELOG.md # HistΓ³rico de versΓ΅es
βββ FIREBASE_RULES.md # Regras de seguranΓ§a Firestore
βββ .env # VariΓ‘veis de ambiente
βββ .env.example # Template de env vars
βββ assets/
β βββ icon.png
β βββ adaptive-icon.png
β βββ splash.png
β βββ splash-icon.png
β βββ favicon.png
β βββ sounds/
β βββ click.mp3 # Som de clique
βββ docs/screenshots/ # Screenshots dark mode (6)
βββ screenshots/ # Screenshots light mode (18)
βββ functions/ # Cloud Functions Firebase
β βββ package.json
β βββ index.js
β βββ .gitignore
βββ src/
βββ screens/ # Telas do aplicativo
β βββ LoginScreen.js
β βββ CadastroScreen.js
β βββ EsqueciSenhaScreen.js
β βββ OnboardingScreen.js
β βββ HomeScreen.js
β βββ NovaTarefaScreen.js
β βββ DetalheTarefaScreen.js
β βββ DashboardScreen.js
β βββ CalendarScreen.js
β βββ HistoryScreen.js
β βββ ConfigScreen.js
β βββ PerfilScreen.js
β βββ FocoScreen.js
β βββ GeoLocalizacaoScreen.js
β βββ MapaAtualScreen.js
β βββ RotaMapScreen.js
β βββ CompartilhamentosRecebidosScreen.js
β βββ ErrorScreen.js
βββ components/ # Componentes reutilizΓ‘veis
β βββ AppInput.js
β βββ AppButton.js
β βββ AppCard.js
β βββ AppEmptyState.js
β βββ AppHeader.js
β βββ AppLoader.js
β βββ AppModal.js
β βββ AppSwitchTheme.js
β βββ CalendarioMultiSelect.js
β βββ CustomAlert.js
β βββ DatePickerModal.js
β βββ HamburgerMenu.js
β βββ LoginIllustration.js
β βββ MaskedInput.js
β βββ ModalAcessivel.js
β βββ OtimizedFlatList.js
β βββ PageContainer.js
β βββ ScreenCard.js
β βββ ui/ # Subcomponentes temΓ‘ticos
β βββ AppCard.js
β βββ AppContainer.js
β βββ AppInput.js
β βββ AuthLayout.js
β βββ Avatar.js
β βββ Badge.js
β βββ BottomTabBar.js
β βββ Chip.js
β βββ ConfirmDialog.js
β βββ EmptyState.js
β βββ ErrorState.js
β βββ FloatingActionButton.js
β βββ FormCard.js
β βββ LoadingSkeleton.js
β βββ PageContainer.js
β βββ PasswordInput.js
β βββ PrimaryButton.js
β βββ ScreenHeader.js
β βββ SearchInput.js
β βββ SecondaryButton.js
β βββ SectionTitle.js
β βββ StatsCard.js
β βββ SuccessState.js
β βββ TaskCard.js
βββ contexts/
β βββ ThemeContext.js
β βββ SoundContext.js
βββ hooks/
β βββ useSound.js
βββ services/
β βββ firebaseConfig.js
β βββ tarefaService.js
β βββ compartilharService.js
β βββ notificacaoService.js
β βββ lembreteService.js
β βββ pomodoroService.js
β βββ historyService.js
β βββ feriadosService.js
β βββ biometriaService.js
β βββ exportService.js
β βββ exportPDFService.js
β βββ soundService.js
β βββ loggerService.js
βββ store/ # Estado global (Zustand)
β βββ authStore.js
β βββ taskStore.js
β βββ themeStore.js
β βββ pomodoroStore.js
βββ theme/ # Design system
β βββ colors.js
β βββ typography.js
β βββ spacing.js
β βββ radius.js
β βββ shadows.js
β βββ tokens.js
β βββ animations.js
β βββ icons.js
β βββ emojis.js
β βββ illustrations.js
βββ constants/
β βββ constants.js
β βββ theme.js
βββ config/
β βββ index.js
β βββ env.js
βββ i18n/ # InternacionalizaΓ§Γ£o
β βββ index.js
β βββ pt.js
β βββ en.js
βββ validations/
β βββ schemas.js
βββ utils/
β βββ asyncStorageUtils.js
β βββ date.js
β βββ format.js
β βββ masks.js
β βββ imageUtils.js
βββ interfaces/
β βββ index.js
βββ styles/
β βββ acessibilidade.js
β βββ responsive.js
β βββ web.css
βββ dev/
β βββ ScreenshotNavigator.js
βββ __tests__/ # Testes unitΓ‘rios
βββ setup.js
βββ feriadosService.test.js
βββ i18n.test.js
βββ pomodoroService.test.js
βββ utils.test.js
βββ screens/
β βββ ErrorScreen.test.js
β βββ HistoryScreen.test.js
β βββ OnboardingScreen.test.js
βββ utils/
βββ asyncStorageUtils.test.js
App
βββ SplashScreen (animado)
βββ OnboardingScreen (primeira execuΓ§Γ£o)
β
βββ [NΓ£o autenticado]
β βββ LoginScreen
β β βββ CadastroScreen
β β βββ EsqueciSenhaScreen
β βββ ErrorScreen
β
βββ [Autenticado]
βββ HomeTabs (abas inferiores)
β βββ Inicio (DashboardScreen)
β βββ Tarefas (HomeScreen)
β βββ Foco (FocoScreen)
β βββ CalendΓ‘rio (CalendarScreen)
β βββ Perfil (PerfilScreen)
βββ NovaTarefaScreen
βββ DetalheTarefaScreen
βββ ConfigScreen
βββ HistoryScreen
βββ GeoLocalizacaoScreen
βββ MapaAtualScreen
βββ RotaMapScreen
βββ CompartilhamentosRecebidosScreen
βββ ErrorScreen
| Rota |
Tela |
AutenticaΓ§Γ£o |
Login |
LoginScreen |
NΓ£o |
Cadastro |
CadastroScreen |
NΓ£o |
EsqueciSenha |
EsqueciSenhaScreen |
NΓ£o |
Home |
HomeTabs (5 abas) |
Sim |
NovaTarefa |
NovaTarefaScreen |
Sim |
DetalheTarefa |
DetalheTarefaScreen |
Sim |
Config |
ConfigScreen |
Sim |
HistΓ³rico |
HistoryScreen |
Sim |
Perfil |
PerfilScreen |
Sim |
Foco |
FocoScreen |
Sim |
GeoLocalizacao |
GeoLocalizacaoScreen |
Sim |
MapaAtual |
MapaAtualScreen |
Sim |
RotaMap |
RotaMapScreen |
Sim |
CompartilhamentosRecebidos |
CompartilhamentosRecebidosScreen |
Sim |
Error |
ErrorScreen |
Sempre |
| Aba |
Componente |
Γcone |
| Inicio |
DashboardScreen |
π |
| Tarefas |
HomeScreen |
π |
| Foco |
FocoScreen |
β±οΈ |
| CalendΓ‘rio |
CalendarScreen |
π
|
| Perfil |
PerfilScreen |
π€ |
git clone https://github.com/claytonmarcelo/TaskFlow---app.git
cd TaskFlow---app
npm install
cp .env.example .env
# Edite .env com suas credenciais do Firebase
npx expo start
npm run web # Expo web
npm run android # Expo android
npm run ios # Expo ios
| Script |
Comando |
DescriΓ§Γ£o |
start |
expo start |
Inicia servidor Expo |
android |
expo start --android |
Inicia no Android |
ios |
expo start --ios |
Inicia no iOS |
web |
expo start --web |
Inicia no navegador |
test |
jest --passWithNoTests |
Testes unitΓ‘rios |
test:coverage |
jest --coverage --passWithNoTests |
Testes com cobertura |
lint |
expo lint |
AnΓ‘lise de cΓ³digo |
doctor |
expo-doctor |
DiagnΓ³stico do projeto |
build |
expo export |
Exporta build web |
npm install -g eas-cli
eas login
eas build --platform android --profile preview
eas build --platform android --profile production
| Perfil |
Tipo |
Uso |
development |
Development client |
Desenvolvimento |
preview |
APK (internal distribution) |
Testes |
production |
APK/AAB |
ProduΓ§Γ£o |
8 suites, 40 testes passando.
| Suite |
Testes |
DescriΓ§Γ£o |
feriadosService.test.js |
7 |
Feriados nacionais, estaduais, municipais |
i18n.test.js |
7 |
TraduΓ§Γ΅es pt/en |
pomodoroService.test.js |
2 |
ConfiguraΓ§Γ΅es Pomodoro |
utils.test.js |
9 |
ValidaΓ§Γ£o e mΓ‘scaras (CPF, CNPJ, telefone, CEP, data) |
asyncStorageUtils.test.js |
5 |
OperaΓ§Γ΅es AsyncStorage |
ErrorScreen.test.js |
3 |
RenderizaΓ§Γ£o de erros 404, 500, 403 |
HistoryScreen.test.js |
1 |
Estado de carregamento |
OnboardingScreen.test.js |
4 |
Slides, tΓtulos, botΓ΅es |
| Token |
Light |
Dark |
Uso |
| Background |
#F8F7FC |
#0B0718 |
Fundo da tela |
| Surface |
#FFFFFF |
#1A1230 |
Cards e superfΓcies |
| Card |
#FFFFFF |
#141022 |
Cards agrupados |
| Primary |
#5B2DDF |
#7C4DFF |
Destaque, botΓ΅es, acentos |
| Chrome |
#111827 |
#F9FAFB |
Textos principais |
| Border |
#E5E7EB |
#2A2140 |
Bordas e divisores |
| Gold |
#FFD21F |
#FFD21F |
Detalhes premium |
| Success |
#22C55E |
#22C55E |
Sucesso |
| Error |
#EF4444 |
#F87171 |
Erro, exclusΓ£o |
Suporte a tema claro e escuro com alternΓ’ncia via botΓ£o na tela de login e configuraΓ§Γ΅es. Tema persistido no AsyncStorage.
Projeto possui functions/ com 4 funΓ§Γ΅es Firebase:
onTaskShared β NotificaΓ§Γ£o push ao compartilhar tarefa
sendDailyReminders β Lembrete diΓ‘rio 08:00 BRT
sendOverdueNotifications β NotificaΓ§Γ£o de tarefas atrasadas 09:00 BRT
onUserDeleted β Limpeza de push tokens ao deletar usuΓ‘rio
| Membro |
Papel |
| Clayton Marcelo Tavares de Lima |
Desenvolvimento full-stack, arquitetura, Firebase, build |
| Caio Cesar Macedo |
Design, documentaΓ§Γ£o, testes |
| Victor Hugo Lopes |
UI/UX, validaΓ§Γ£o, qualidade |
Docente: Prof. Artur Brandt β Desenvolvimento de Aplicativos Mobile
InstituiΓ§Γ£o: Centro UniversitΓ‘rio Augusto Motta β UNISUAM
Curso de AnΓ‘lise e Desenvolvimento de Sistemas | Turma ADS0301N
Clayton Marcelo Tavares de Lima
GitHub: claytonmarcelo
TaskFlow v1.1.1 Β© 2026 β UNISUAM β Projeto ConcluΓdo
Clayton Marcelo β’ Caio Cesar Macedo β’ Victor Hugo Lopes