Google Drive da documentação resumida
GitHub
APK de demonstração
- RM353230 Anelise Estevam
- RM355290 Anderson da Silva Machado
- RM354725 Gustavo Fonseca
- RM354782 João Pedro Sanches Luciano
- 03/12/2024
Requisitos funcionais A interface gráfica deve incluir as seguintes páginas e funcionalidades:
-
Página principal (lista de posts)
- - Exibir uma lista de todos os posts disponíveis.
- - Cada item da lista deve mostrar o título, autor e uma breve descrição do post.
- - Incluir um campo de busca para filtrar posts por palavras-chave.
-
Página de leitura de post
- - Exibir o conteúdo completo de um post selecionado.
- - Permitir comentários nos posts (opcional).
-
Página de criação de postagens
- - Formulário para que professores possam criar postagens.
- - Campos para título, conteúdo e autor.
- - Botão para enviar o post ao servidor.
-
Página de edição de postagens
- -Formulário para que docentes possam editar postagens existentes.
- - Carregar os dados atuais do post para edição.
- - Botão para salvar as alterações.
-
Página de criação de professores
- - Formulário para que professores possam cadastrar outros professores.
- - Botão para enviar o post ao servidor.
-
Página de edição de professores
- - Formulário para que professores possam editar docentes já cadastrados.
- - Botão para salvar as alterações.
-
Página de listagem de professores
- - Página para listagem paginada dos professores e, nas tabelas para cada professor, teremos um botão de editar que leva para a página de edição e um botão de excluir que vai deletar o docente do sistema.
-
Replique os requisitos 5, 6 e 7 para estudantes
- - Seguindo o padrão de páginas administrativas feitas para professores, faça o mesmo para alunos.
-
Página administrativa
- - Exibir uma lista de todas as postagens, com opções para editar e excluir cada post.
- - Botões para editar e excluir postagens específicas.
-
Autenticação e autorização
- - Implementar login para professores.
- - Garantir que apenas usuários autenticados possam acessar as páginas de criação, edição e administração de postagens.
Requisitos técnicos
-
Desenvolvimento em React Native
- - Utilizar React Native para desenvolver a interface gráfica do aplicativo.
- - Utilização de hooks e componentes funcionais.
-
Estilização
- - Estilizar o projeto de acordo com layout definido pelo grupo.
-
Integração com Back-End
- - Realizar chamadas aos endpoints REST para obter, criar, editar e excluir posts.
- - Realizar chamadas aos endpoints REST para obter, criar, editar e excluir alunos.
- - Realizar chamadas aos endpoints REST para obter, criar, editar e excluir professores.
- - Realizar chamadas aos endpoints REST para autenticação.
- - Validar permissão para professores e alunos, onde professores podem modificar/criar um post e os alunos podem apenas visualizar.
- - Gerenciar o estado da aplicação com ferramentas como Context API ou Redux (opcional).
-
Documentação
- - Documentação técnica detalhada do mobile no README do repositório, incluindo setup inicial, arquitetura da aplicação e guia de uso.
Arquitetura do Projeto em React Native
A arquitetura do nosso projeto em React Native foi pensada para facilitar o desenvolvimento e garantir uma boa performance. Utilizamos ferramentas como Expo, React Router, e outras bibliotecas para estruturar o app de maneira eficiente.
-
Gerenciamento de Navegação com React Router
Optamos por usar o React Router para navegação entre as telas. Ele foi a solução ideal para o nosso caso, já que oferece flexibilidade e uma configuração simples de rotas, tanto para iOS, Android, quanto para Web. A navegação foi organizada de forma modular, aproveitando a estrutura de pastas do projeto, o que torna a gestão das rotas mais clara e fácil de manter. Além disso, os layouts reutilizáveis permitem que partes da interface, como cabeçalhos ou menus, sejam compartilhadas entre diferentes rotas sem complicação. -
Expo
A escolha do Expo foi fundamental para acelerar o desenvolvimento. Ele oferece uma série de ferramentas prontas para uso, como Expo-Icons, Expo-Constants, e Expo-Splash-Screen, que ajudam a reduzir o tempo de desenvolvimento. Além disso, usamos o Expo Router para configurar as rotas de maneira simples e prática, integrando bem com o React Router. -
Persistência de Dados com AsyncStorage
Para garantir que dados importantes, como o token de autenticação ou preferências do usuário, sejam mantidos entre as sessões, usamos o AsyncStorage. Ele é simples de implementar e essencial para evitar que o usuário precise se autenticar novamente ou perder dados ao fechar o app.
-
- Código-Fonte: repositório GitHub com o código do projeto, incluindo Dockerfiles e scripts de CI/CD.
-
- Apresentação Gravada: demonstração em vídeo do funcionamento da aplicação, incluindo detalhes técnicos de implementação.
-
- Documentação: documento descrevendo a arquitetura do sistema, uso da aplicação e relato de experiências e desafios enfrentados pela equipe durante o desenvolvimento.
$ npm install# development
$ npm start