Bem-vindo ao Mind Clear, um aplicativo inovador focado em ajudar usuários no combate a recaídas, com funcionalidades robustas e suporte à sincronização em tempo real. Este repositório está dividido em duas branches separadas, cada uma contendo um dos projetos principais:
- Frontend: Localizado na branch
mind-clear-frontend. - Backend: Localizado na branch
mind-clear-backend.
- 🚀 Proposta Tecnológica
- 🛠️ Arquitetura do Projeto
- 📚 Tecnologias Utilizadas
- ✨ Funcionalidades
- 📦 Instruções de Instalação
- 🖼️ Telas do Aplicativo
- 👥 Usuários de Teste e Visualização de Dados
- 🤔 Decisões Técnicas
- 📜 Licença
O Mind Clear é um aplicativo mobile focado em ajudar pessoas a monitorar e evitar recaídas em seus processos de recuperação. Ele oferece:
- Atualização em tempo real: Os dados são sincronizados automaticamente com o backend, permitindo que o progresso do usuário seja salvo constantemente.
- Troca de dispositivos sem perda de progresso: Toda a lógica de persistência é gerenciada no backend, garantindo que o usuário possa continuar de onde parou, mesmo trocando de celular.
- Acessibilidade e Usabilidade: O design foi pensado para ser intuitivo e acessível, permitindo que qualquer pessoa utilize o aplicativo com facilidade.
O Mind Clear foi desenvolvido com uma arquitetura moderna e bem estruturada, garantindo escalabilidade, organização e facilidade de manutenção. A arquitetura está dividida em dois principais componentes: Frontend e Backend. Aqui está uma visão geral:
- Framework e Ferramentas: O frontend foi desenvolvido utilizando React Native, com o suporte do Expo para simplificar o processo de desenvolvimento e deploy. Isso garante compatibilidade entre plataformas (iOS e Android), além de acelerar o desenvolvimento.
- Organização de Pastas:
- src/components: Componentes reutilizáveis para a interface do usuário.
- src/screens: Telas principais do aplicativo, como Login, Home e Configurações.
- src/store: Lógica de gerenciamento de estado global utilizando Redux Toolkit.
- src/utils: Funções auxiliares e manipulação de dados.
- assets/: Recursos estáticos, como imagens e ícones.
- Fluxo de Dados: O gerenciamento de estado global é feito com Redux Toolkit, garantindo que os dados sejam compartilhados de forma eficiente entre os componentes. As requisições ao backend são feitas utilizando Axios.
- Framework e Ferramentas: O backend foi desenvolvido utilizando NestJS, um framework modular que facilita a criação de APIs escaláveis e organizadas.
- Organização de Pastas:
- src/users/modules: Cada funcionalidade do sistema (como autenticação, gerenciamento de usuários, etc.) é organizada em módulos separados.
- prisma/schema.prisma: Definições de entidades do banco de dados utilizando Prisma ORM.
- src/users/controllers: Controladores que gerenciam as requisições e respostas da API.
- src/users/services: Serviços que contêm a lógica de negócio.
- src/users/dtos: Objetos de transferência de dados (DTOs) para validação e manipulação de entradas.
- Banco de Dados: Utilizamos SQLite durante o desenvolvimento e testes, pela sua simplicidade e portabilidade. Em produção, o sistema pode ser facilmente adaptado para outros bancos de dados, como PostgreSQL ou MySQL.
- O frontend e o backend se comunicam por meio de REST APIs bem definidas e documentadas. Todas as requisições são feitas utilizando Axios no frontend, com respostas otimizadas e compactadas pelo backend utilizando Compression.
- React Native: Framework para desenvolvimento mobile.
- Expo: Ferramenta para simplificar o desenvolvimento e deploy de aplicativos React Native.
- Redux Toolkit: Gerenciamento de estado global simplificado.
- Axios: Cliente HTTP para requisições à API.
- React Navigation: Navegação entre telas.
- React Native Reanimated: Biblioteca avançada para animações fluidas.
- Lucide React Native: Ícones modernos e personalizáveis.
- React Native Vector Icons: Ícones para UI.
- Async Storage: Armazenamento local persistente.
- NestJS: Framework modular e escalável para construção de APIs.
- Prisma ORM: ORM avançado para manipulação de banco de dados.
- SQLite: Banco de dados leve e eficiente.
- JWT (jsonwebtoken): Autenticação baseada em tokens.
- Bcrypt: Criptografia de senhas.
- Class-validator: Validação de dados para DTOs.
- Swagger: Documentação interativa da API.
O Mind Clear foi projetado para ser uma ferramenta poderosa e intuitiva, ajudando usuários a manter o foco em suas jornadas de recuperação. Aqui estão algumas das principais funcionalidades que tornam o aplicativo único:
- Monitoramento de Progresso: Acompanhe suas metas e veja seu progresso diário, semanal e mensal.
- Sistema de Alertas Personalizados: Receba lembretes e notificações para manter-se no caminho certo, evitando recaídas.
- Sincronização em Tempo Real: Todos os dados são atualizados automaticamente entre dispositivos.
- Personalização: Ajuste o aplicativo de acordo com suas necessidades, incluindo temas, notificações e metas personalizadas.
- Node.js: Versão 16 ou superior.
- Expo CLI: Para executar o frontend.
- SQLite: Banco de dados para o backend.
- Clone este repositório:
git clone https://github.com/diegodromer/MindClear.git cd MindClear
- Acesse a branch do backend:
git checkout mind-clear-backend
- Instale as dependências:
npm install
- Execute o servidor:
npm run start:dev
- Acesse a branch do frontend:
git checkout mind-clear-frontend
- Instale as dependências:
npm install
- Inicie o Expo:
npx expo start
O backend do Mind Clear já contém usuários prontos para testes. Esses usuários são gerenciados pelo Prisma ORM, que facilita a manipulação e visualização dos dados no banco de dados.
- As credenciais (como e-mails e senhas) dos usuários de teste estão disponíveis no arquivo
seed.ts, localizado na pasta de configuração do backend. Certifique-se de verificar este arquivo para acessar os dados necessários durante os testes.
Durante o desenvolvimento do Mind Clear, foram tomadas decisões técnicas estratégicas para garantir que o projeto fosse escalável, eficiente e fácil de manter. Aqui estão os principais pontos que guiaram nossas escolhas:
- Arquitetura Modular: Backend com NestJS, permitindo separação de responsabilidades.
- Prisma ORM: Para consultas rápidas e seguras ao banco de dados.
- Segurança e Autenticação: Uso de JWT e Bcrypt.
- Frontend com Expo: Para acelerar o desenvolvimento mobile.
Este projeto está sob a licença MIT.