Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

156 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TaskFlow

Gerenciador de Tarefas Inteligente

React Native β€’ Expo β€’ Firebase

Badge Badge Badge Badge Badge Badge


Sobre o Projeto

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.


Download

Permita instalaΓ§Γ£o de fontes desconhecidas nas configuraΓ§Γ΅es do Android.


βœ… Projeto ConcluΓ­do

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.


Funcionalidades

  • 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

Tecnologias

Framework e Plataforma

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

NavegaΓ§Γ£o

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

Backend e PersistΓͺncia

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

Estado e ValidaΓ§Γ£o

Tecnologia VersΓ£o Finalidade
Zustand ^5.0.14 Gerenciamento de estado global
Zod ^4.4.3 ValidaΓ§Γ£o de schemas

Expo SDK

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

Componentes e UI

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

Testes e Qualidade

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

Cloud Functions

Tecnologia VersΓ£o
firebase-admin ^12.1.0
firebase-functions ^5.0.1
expo-server-sdk ^3.10.0

Estrutura

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

NavegaΓ§Γ£o

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

Rotas do Stack Navigator

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

Abas do Tab Navigator

Aba Componente Ícone
Inicio DashboardScreen 🏠
Tarefas HomeScreen πŸ“
Foco FocoScreen ⏱️
CalendΓ‘rio CalendarScreen πŸ“…
Perfil PerfilScreen πŸ‘€

Capturas de Tela


Como Rodar

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

Scripts

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

Build Android

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

Testes

npm test

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

Design System

Paleta de cores

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

Temas

Suporte a tema claro e escuro com alternΓ’ncia via botΓ£o na tela de login e configuraΓ§Γ΅es. Tema persistido no AsyncStorage.


Cloud Functions

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

Equipe

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


Autor

Clayton Marcelo Tavares de Lima

GitHub: claytonmarcelo


TaskFlow v1.1.1 Β© 2026 β€” UNISUAM β€” Projeto ConcluΓ­do

Clayton Marcelo β€’ Caio Cesar Macedo β€’ Victor Hugo Lopes

About

πŸ“±App mΓ³vel hΓ­brido de gerenciamento de tarefas - React Native + Expo + Firebase Firestore

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages