SeniorEase: aplicativo acessível para gestão de tarefas, com foco em pessoas idosas e em necessidades de usabilidade, acessibilidade e simplicidade de uso.
O SeniorEase foi desenvolvido como o Tech Challenge da Fase 5 (Hackathon) pelo Grupo 7 da turma 4FRNT da Pós-Graduação em Front-End Engineering da FIAP.
O projeto prioriza:
- Acessibilidade por padrão: foco em boas práticas WCAG 2.2 AA para fluxo de tarefas, formulários e navegação.
- Experiência multiplataforma: app em React Native com suporte a Android, iOS e Web.
- Arquitetura escalável: separação por camadas (domain, application, infrastructure, presentation).
- Segurança e qualidade: validações, pipeline de qualidade e monitoramento de vulnerabilidades.
Este repositório representa a Fase 5 da trilha de evolução do grupo:
| Fase | Repositório |
|---|---|
| Fase 1 | bytebank-fiap |
| Fase 2 | tech-challenge-2 |
| Fase 3 | bytebank-mobile |
| Fase 4 | fiap-tc-4 |
| Fase 5 | Repositório atual (SeniorEase) |
| Categoria | Tecnologias |
|---|---|
| App | React Native 0.81.5, Expo ~54.0.33, Expo Router ~6.0.23 |
| Linguagem | TypeScript |
| Backend | Firebase Authentication, Cloud Firestore |
| Validação de Formulários | React Hook Form, Zod |
| Navegação | Expo Router, React Navigation |
| Persistência Local | AsyncStorage |
| Qualidade | Jest, Testing Library, ESLint |
O projeto segue uma estrutura em camadas, separando regra de negócio, casos de uso, adaptadores e interface.
SeniorEase/
├── app/ # Rotas Expo Router e telas principais
│ ├── (public)/ # Fluxo público (home, about)
│ ├── (auth)/ # Fluxo de autenticação (login, registro)
│ └── (app)/ # Fluxo autenticado (tabs, tarefas, detalhes, modal)
│
├── src/
│ ├── domain/ # Entidades, enums, exceções e contratos
│ ├── application/useCases/ # Casos de uso de tarefas e preferências
│ ├── infrastructure/ # Implementações concretas, mappers e utilitários
│ ├── lib/ # Integrações externas (Firebase)
│ └── presentation/ # Componentes, hooks, contextos, tema e i18n
│
├── docs/firebase/ # Regras e índices do Firestore
├── web/index.html # Template web com CSP
├── vercel.json # Configuração de build/headers para deploy web
└── README.md
| Camada | Responsabilidade |
|---|---|
| Domain | Regras de negócio puras e contratos |
| Application | Orquestração dos casos de uso |
| Infrastructure | Persistência e adaptadores externos |
| Presentation | UI, acessibilidade, temas, fluxos de tela |
Pilares aplicados no SeniorEase:
- Componentes acessíveis com labels, hints e estados de erro/foco.
- Preferências de uso (fonte, contraste e experiência simplificada).
- Modais e feedbacks acessíveis com navegação clara e suporte a teclado na web.
- Base de internacionalização centralizada para textos e mensagens.
- Husky + Gitleaks para bloquear commits com secrets sensíveis.
.envfora de versionamento e template em.env.example.- Verificação automática no
postinstall(scripts/check-gitleaks.js).
- CSP configurada em
web/index.html. - Security headers configurados em
vercel.json:X-Frame-Options,X-Content-Type-Options,X-XSS-Protection,Strict-Transport-Security.
npm run audit
npm run audit:fix- Node.js 18+
- npm
- Conta Firebase
- Expo Go (opcional para testes em dispositivo)
npm installCopie o arquivo de exemplo e preencha com os dados do Firebase:
cp .env.example .envVariáveis esperadas:
EXPO_PUBLIC_FIREBASE_API_KEY=
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=
EXPO_PUBLIC_FIREBASE_PROJECT_ID=
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
EXPO_PUBLIC_FIREBASE_APP_ID=
EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=npx expo startFluxo recomendado no dia a dia:
- Execute
npx expo start. - No terminal do Expo, use os atalhos interativos:
wpara abrir na Web,apara abrir no Android (emulador/dispositivo) eipara abrir no iOS (simulador). - Para testar no celular físico, abra o Expo Go e escaneie o QR code exibido no terminal.
Alternativas diretas (sem usar os atalhos interativos):
npm run android
npm run ios
npm run webnpm run build:webSaída gerada em dist/.
Configuração recomendada:
- Framework Preset: Other
- Build Command:
npm run build:web - Output Directory:
dist
O projeto já possui vercel.json preparado para roteamento SPA e headers de segurança.
npm run lint
npm run test
npm run test:a11yExiste workflow para checagens de acessibilidade/qualidade em CI:
.github/workflows/a11y-quality.yml
| Problema | Solução |
|---|---|
| App não sobe | Remova node_modules e rode npm install novamente |
| Erro de Firebase | Verifique .env e as credenciais do projeto no console Firebase |
| Erro de cache no Expo | Rode npx expo start -c |
| Build web falha | Rode npm run build:web localmente e valide variáveis de ambiente |
| Gitleaks bloqueia commit | Remova credenciais reais e use variáveis de ambiente |
| Nome | RM | |
|---|---|---|
| Fernanda Raquel Campos Jiacinto | fernanda.frcj@gmail.com | 366526 |
| Karen Cristina Kramek | kakakramek@gmail.com | 361140 |
| Tatiane Gabrielle Marçal Rodrigues da Costa | tatiane.costa@alura.com.br | 365215 |
Projeto desenvolvido para fins acadêmicos no Tech Challenge da Pós-Graduação em Front-End Engineering da FIAP.