Aplicativo mobile de saúde mental desenvolvido em React Native com Expo e TypeScript
Aurora é uma plataforma que conecta pacientes e psicólogos, oferecendo ferramentas para registro de bem-estar, acompanhamento emocional e recursos educativos. Desenvolvido com foco na experiência do usuário e na qualidade do código através de boas práticas de desenvolvimento.
- 🚀 Início Rápido
- 📦 Tecnologias
- 📂 Estrutura do Projeto
- ⚙️ Configuração
- 🔧 Scripts Disponíveis
- ✅ Status do Desenvolvimento
- 🎯 Funcionalidades
- 🔄 Fluxo de Desenvolvimento
- 📌 Padrão de Commits
- ✨ Boas Práticas
- 👥 Equipe
Certifique-se de ter as seguintes ferramentas instaladas:
- Node.js v18+ (Download)
- Git (Download)
- Expo CLI (instalação automática via npx)
- Conta Firebase para autenticação
-
Clone o repositório
git clone [email protected]:seu-usuario/aurora.git cd aurora
-
Instale as dependências do CLIENT
cd client npm install -
Instale as dependências do SERVER
cd ../server npm install -
Configure as variáveis de ambiente
# Na raiz do projeto cd .. cp .env.example .env # Edite o arquivo .env com suas configurações
-
Execute o BACKEND
cd server npm run dev -
Execute o FRONTEND (em outro terminal)
cd client npm run web # Para web # ou npm start # Para mobile (Expo)
-
Abra o app
- Web: Abrirá automaticamente no navegador
- Expo Go: Escaneie o QR code com o app Expo Go
- Emulador: Pressione
apara Android ouipara iOS
| Tecnologia | Versão | Descrição |
|---|---|---|
| React Native | Latest | Framework para desenvolvimento mobile |
| Expo Router | Latest | Sistema de navegação baseado em arquivos |
| TypeScript | Latest | Superset do JavaScript com tipagem estática |
| Firebase Client SDK | Latest | Autenticação e serviços |
| Axios | Latest | Cliente HTTP |
| Tecnologia | Versão | Descrição |
|---|---|---|
| Node.js | v18+ | Ambiente de execução JavaScript |
| Express.js | Latest | Framework web minimalista |
| Firebase Admin SDK | Latest | Gerenciamento de usuários e auth |
| Firestore | Latest | Banco de dados NoSQL |
aurora/
├── client/ # Frontend React Native + Expo
│ ├── src/
│ │ ├── app/ # Rotas do Expo Router
│ │ │ ├── app/ # Rotas protegidas (após login)
│ │ │ ├── auth/ # Rotas de autenticação
│ │ │ ├── _layout.tsx # Layout raiz
│ │ │ └── index.tsx # Entrada (SplashScreen)
│ │ ├── components/ # Componentes reutilizáveis
│ │ ├── controllers/ # Lógica de negócio
│ │ ├── hooks/ # Custom hooks
│ │ ├── models/ # Modelos de dados
│ │ ├── services/ # APIs e serviços
│ │ ├── theme/ # Tema e estilos
│ │ └── types/ # Tipos TypeScript
│ ├── assets/ # Imagens e recursos
│ ├── app.json # Configuração Expo
│ ├── package.json # Dependências client
│ └── README.md # Docs do client
│
├── server/ # Backend Express.js + Firebase
│ ├── src/
│ │ ├── controllers/ # Controladores de rotas
│ │ ├── models/ # Modelos de dados
│ │ ├── repositories/ # Acesso a dados
│ │ ├── routes/ # Definição de rotas
│ │ ├── services/ # Lógica de negócio
│ │ └── index.js # Entrada do servidor
│ ├── package.json # Dependências server
│ └── README.md # Docs do server
│
├── .env.example # Exemplo de variáveis de ambiente
├── .gitignore # Arquivos ignorados pelo Git
├── README.md # Documentação principal
├── INTEGRATION_GUIDE.md # Guia de integração
└── FUNCIONALIDADES_IMPLEMENTADAS.md # Status das features
Crie um arquivo .env na raiz do projeto baseado no .env.example:
# Firebase Configuration
FIREBASE_API_KEY=sua_chave_api_firebase
FIREBASE_AUTH_DOMAIN=seu_projeto.firebaseapp.com
FIREBASE_PROJECT_ID=seu_projeto_id
FIREBASE_STORAGE_BUCKET=seu_projeto.appspot.com
FIREBASE_MESSAGING_SENDER_ID=123456789
FIREBASE_APP_ID=1:123456789:web:abcdef123456
# API Configuration
API_URL=https://suaapi.com
API_KEY=sua_chave_api
# Environment
NODE_ENV=development
ENV=development
# Optional: Analytics, Crashlytics, etc.
ANALYTICS_KEY=sua_chave_analytics
⚠️ Importante: Nunca commite o arquivo.envcom informações sensíveis!
| Script | Comando | Descrição |
|---|---|---|
| Desenvolvimento | npm start |
Inicia o Metro bundler |
| Web | npm run web |
Executa no navegador |
| Android | npm run android |
Executa no emulador Android |
| iOS | npm run ios |
Executa no emulador iOS (macOS) |
| Lint | npm run lint |
Executa verificação de código |
| Script | Comando | Descrição |
|---|---|---|
| Desenvolvimento | npm run dev |
Inicia servidor com nodemon |
| Produção | npm start |
Inicia servidor em produção |
| Test | npm test |
Executa testes (se configurado) |
- Login Paciente/ Psicólogo: Permite que usuários existentes entrem no aplicativo usando suas credenciais.
- Cadastro Paciente/ Psicólogo: Permite que novos usuários criem uma conta na plataforma.
- Diferenciação de interface para cada tipo de usuário (Paciente/ Psicólogo): Ajusta o design e as telas exibidas de acordo com o tipo de conta (Paciente tem acesso a ferramentas de auto-cuidado; Psicólogo a ferramentas de gestão).
- Sair da conta Paciente/ Psicólogo: Permite que o usuário encerre a sessão atual de forma segura.
- Acesso ao blog: Permite que todos os usuários leiam artigos e conteúdos postados pelos profissionais.
- Tela Splash: Exibe o logotipo do aplicativo enquanto o sistema é iniciado.
- Atividade de respiração: Oferece um guia visual para exercícios de respiração e relaxamento.
- Registro diário: Permite ao paciente documentar pensamentos, eventos e humor ao longo do dia.
- Anotações diárias: Oferece um espaço para o paciente escrever reflexões e lembretes.
- Escala de emoções: Permite que o paciente classifique seu estado emocional ou intensidade de sentimentos usando uma escala visual (ex: emojis, números).
- Histórico emocional: Apresenta uma visão cronológica dos registros, emoções e anotações feitas pelo paciente.
- Conexão com profissional: Permite ao paciente vincular sua conta ao perfil de seu psicólogo.
- Busca: Permite ao paciente encontrar rapidamente artigos no blog, recursos ou entradas de seu registro.
- Acesso recursos diários: Oferece conteúdos curtos e ferramentas de apoio para uso imediato no dia a dia.
- Lista de pacientes: Apresenta uma tela com todos os pacientes conectados ao perfil do psicólogo.
- Postar blog/artigo: Permite ao psicólogo criar e publicar novos conteúdos de texto para o blog do aplicativo.
- Acesso ao perfil paciente: Permite que o profissional visualize os dados básicos e o status de conexão de um paciente específico.
- Acesso ao registro emocional paciente: Permite ao profissional visualizar as informações de humor, emoções e anotações do paciente.
- Gerar código de conexão: Cria um código exclusivo que o paciente utiliza para se conectar ao perfil do psicólogo.
- Tags/Categorias para posts do blog: Permite que o psicólogo classifique artigos para facilitar a busca e organização do conteúdo.
- Formatação do Blog: Oferece ferramentas de edição (negrito, itálico, listas) para melhorar a apresentação dos artigos postados.
# Crie uma nova branch a partir da main
git checkout main
git pull origin main
git checkout -b feat/nome-da-feature- Faça commits pequenos e frequentes
- Siga o padrão de commits
- Teste suas alterações localmente
- Mantenha o checklist atualizado
# Suba sua branch
git push origin feat/nome-da-feature
# Abra um Pull Request para main
# Atualize o status no checklist se aplicável
# Aguarde revisão e aprovação da equipe- O merge será feito pela equipe
- Delete a branch local após o merge:
git checkout main git pull origin main git branch -d feat/nome-da-feature
Utilize o formato Conventional Commits:
<tipo>(<escopo>): <descrição>
[corpo opcional]
[rodapé opcional]
| Tipo | Descrição | Exemplo |
|---|---|---|
feat |
Nova funcionalidade | feat(auth): adicionar login com Firebase |
fix |
Correção de bug | fix(wellness): corrigir validação de intensidade |
docs |
Documentação | docs: atualizar checklist no README |
style |
Formatação/estilo | style: corrigir indentação nos componentes |
refactor |
Refatoração | refactor(components): otimizar Button component |
test |
Testes | test(auth): adicionar testes para login |
chore |
Tarefas administrativas | chore: atualizar dependências do Firebase |
perf |
Melhoria de performance | perf(charts): otimizar rendering dos gráficos |
git commit -m "feat(auth): implementar cadastro de psicólogo com validação CRP"
git commit -m "fix(wellness): corrigir crash no registro de emoções"
git commit -m "feat(blog): adicionar editor rico para matérias"
git commit -m "docs: marcar login como concluído no checklist"- Nomenclatura: Use
camelCasepara variáveis e funções,PascalCasepara componentes - Tipagem: Sempre use TypeScript com tipagem forte (
interfaceoutype) - Estrutura: Mantenha componentes pequenos e focados em uma responsabilidade
- Comentários: Documente código complexo e decisões importantes
- Validação: Use Yup ou Joi para validação de forms e dados
- Componentes reutilizáveis →
src/components/ - Telas específicas →
src/screens/[UserType]/ - Lógica de negócio →
src/services/ou hooks customizados - Utilitários →
src/utils/ - Tipos compartilhados →
src/types/
- Sempre valide dados do usuário
- Use regras de segurança do Firebase
- Não exponha informações sensíveis
- Implemente rate limiting onde necessário
- Mantenha consistência visual entre telas
- Implemente loading states e error handling
- Considere acessibilidade em todos os componentes
Conheça a equipe por trás do Aurora:
Turma: 3A1
| Matrícula | Nome | Papel | GitHub |
|---|---|---|---|
| 12300055 | Davi Murta | Tech Lead | @davimurta |
| 12400947 | Sara Freitas | UI/UX Designer | @sahfreitas |
| 12302589 | Maria Fernanda | FullStack Developer | @mafemelo |
| 22402942 | Samuel Cordeiro | Backend Developer | @sam-cordeiro |
| 12300993 | João Pedro | Backend Developer | @jpfgomes |
| 12303127 | Ronan Porto | Frontend Developer | @RonanPorto |
Feito com ❤️ pela equipe Aurora
Cuidando da saúde mental através da tecnologia