Giter Club home page Giter Club logo

app-cc's Introduction


Aplicativo CCUFFS

Projeto

Esse repositório contém o código do aplicativo móvel para uso de alunos, professores e técnicos do curso de Ciência da Computação da UFFS, Chapecó/SC.

Veja o arquivo ROADMAP para conhecer as funcionalidades esperadas para o aplicativo e um rascunho do plano de desenvolvimento.

IMPORTANTE: Sempre consulte o CONTRIBUTING e o ROADMAP antes de começar a desenvolver uma nova feature! Um bom começo pode envolver a consulta das ISSUES abertas.

Features Implementadas

As principais features do projeto são:

  • Login de usuários com IdUFFS;
  • Visualização de noticias;
  • Leitor de noticias personalizável;
  • QrCode único de usuário;
  • Exibição de notícias importantes (Mensagens Diretas);

Telas

Segue abaixo algumas imagens das telas implementadas na versão atual do aplicativo

drawing

drawing



drawing

drawing



drawing

drawing



drawing

Começando

Caso tenha interesse em rodar localmente o projeto, siga os passos abaixo. Levem em consideração que sera necessário a instalação do flutter em seu computador, bem como um emulador ou um dispositivo android conectado e configurado em seu computador para a utilização com o aplicativo.

Instalação

Tenha certeza de que possui o flutter instalado em seu computador. Mais detalhes sobre a instalação do flutter podem ser encontrados em seu site oficial.

Iniciando o projeto

    git clone https://github.com/ccuffs/app-cc/

Vá até o diretório do projeto com o comando abaixo:

    cd app-cc/

Execute o projeto com:

    flutter run

Arquitetura

Bloc

Este projeto utiliza bloc como arquitetura de state management. Caso queira contribuir, leve em consideração que não sera admitido a utilização de outro state management (por exemplo providers).

Estrutura de Pastas

Este projeto possui uma estrutura de pastas bem simples. Todos os blocs podem ser encontrados dentro de lib/blocs e novos blocs devem ser adicionados lá. Todas as Telas devem ser adicionadas em lib/screens e seus nomes devem seguir o prefixo nome_tela_view. Caso seja necessário, pode-se dividir os widgets e criar novos arquivos de widgets que devem ser adicionados as suas respectivas pastas a não ser que sejam um widget compartilhado.

Widgets compartilhados (usados por varias views) devem ser salvos dentro da pasta shared/widgets

Este projeto não usa uma lógica de controllers para separar funções e da a liberdade de utilização de setState em conjunto ao bloC caso facilite a implementação de determinada feature e mantenha o código consiso.

Links úteis

Licença

A licença desse projeto é a MIT License.

app-cc's People

Contributors

andrewmsilva avatar dovyski avatar edsabino avatar fersasil avatar oraphaborges avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

app-cc's Issues

Status do projeto

Não quero estragar as férias dos envolvidos no projeto, e também não quero colocar pressão (?), mas como está o status desse projeto? Será que conseguimos lançar ele no seminário de boas-vindas na primeira semana de aula (março)?

Eu tenho tempo de implementação agora até as aulas começarem. Posso trabalhar na API para obter os dados do portal do aluno.

Trocar metodos deprecates da bottomBar

'title' is deprecated and shouldn't be used. Use "label" instead, as it allows for an improved text-scaling experience. This feature was deprecated after v1.19.0..
Try replacing the use of the deprecated member with the replacement.

Adicionar timeout nas requisições http

Adicionar ao arquivo constants uma variável de timeout. Quando a requisição demorar mais que o timeout assumimos que algo deu errado e jogamos uma exceção.
As exceções podem ser criadas na pasta shared
Além disto, seria interessante aplicar as screens que recebem eventos de erros uma tela de erro apropriada...

drawer

O drawer atualmente faz suas ações dentro da própria view, oque é uma quebra da arquitetura, recomendo passar para ele o controller da home, e jogar as ações para dentro do controller, e ela ser a mestre do drawer, as outras paginas então são criadas dentro da home, tornando a própia home um wrapper para o app inteiro, responsavel por saber em qual tela se esta, suas trocas, e como executalas, claro, quando isso for feito atraves do drawer

Definição do que será exibido na bottom bar

Atualmente a bottom bar esta exibindo as seguintes abas:

WhatsApp Image 2020-08-11 at 17 08 50

Talvez seja interessante mover a aba de notificações para um ícone na AppBar...
Dentre as abas, também é necessário definir quais exigiram autenticação para a exibição.
Os ícones também precisam ser definidos, os que estão lá são provisórios

Detalhes de uma noticia

Apesar de ja possuirmos a listagem de noticias, temos que ter os detalhes dela, a pagina onde pode-se ler detalhadamente sobre a mesma

Layout do bottomBar das postagens

Atualmente o layout esta assim:

WhatsApp Image 2020-08-11 at 17 16 17

Ele é provisório, (talvez até desnecessário). Por ele podemos aumentar e diminuir a fonte (funcionando). Precisamos discutir a necessidade e as funcionalidades do mesmo e implementar a solução.

Qual ferramenta usar?

Há uma restrição pra usar uma determinar ferramenta?

  • React Native
  • Ionic
  • Kotlin
  • Java

Integração da aba de noticias

Com o layout da aba de noticias feito, podemos partir para seu funcionamento, comunicar com uma api(caso haja), enfim, buscar essas informações em algum lugar, e exibilas em listas como foi feito.

Funcionalidade D

Sobre a funcionalidade D:

D) Aba com mensagens diretas, estilo SMS, onde o aluno receberá informações urgentes ou importantes, e.x.: não haverá aula, período de matrícula, etc.

Como ela será implementada? Haverá um feed no site pra que possamos retirar as informações de lá? Vão exibir notificações?

Utilização do feed do site em detrimento ao webScrapper

Atualmente os dados estão sendo retirados com webScrapping do site de cc por meio desta biblioteca

Com ela é possível pegar todas as publicações do site. O @Dovyski comentou da existência de um feed, entretanto ele possui apenas 10 publicações, e não todas as publicções. Talvez haja uma limitação do número de posts que podem ser gerados?

Atualizar Android embedding

Warning
──────────────────────────────────────────────────────────────────────────────
Your Flutter application is created using an older version of the Android
embedding. It's being deprecated in favor of Android embedding v2. Follow the
steps at

https://flutter.dev/go/android-project-migration

Arquitetura

Existe alguma arquitetura que sera utilizada? (MVC, BLOC, Uncle bob, etc)

Tela de ajuda

Eu estava pensando em implementar a tela de ajuda de maneira semelhante a ajuda do nubank:

Os dados podem ser retirados de um json online no formato:

[
  {
    "categoria1": [
      {
        "nome do item que aparece na segunda tela": "texto do item que aparece na terceira tela, talvez possa ser em html"
      },
      {
        "nome do item que aparece na segunda tela": "texto do item que aparece na terceira tela, talvez possa ser em html"
      }
      ...
    ]
  },
  {
    "categoria2": [
      {
        "nome do item que aparece na segunda tela": "texto do item que aparece na terceira tela, talvez possa ser em html"
      },
      {
        "nome do item que aparece na segunda tela": "texto do item que aparece na terceira tela, talvez possa ser em html"
      }
      ...
    ]
  }
]

O icone de pesquisa também pode ser implementado.

O chat seria impossível de ser implementado no momento, mas o "email" é possível. Quando alguém aperta lá, o seu cliente de email abre, colocando o email do contato do nubank como destinatário. É possível implementar algo assim com o email da coordenação.

O que acha @Dovyski ?

Funcionamento login

Fazer o login funcionar, e logar etc...
Tem que ser feito o useCase e o repositorio de autenticacao, se não me engano os arquivos ja existem, precisam somente ser implementados

Iniciar Projeto

O projeto deve ser iniciado, criado uma main, startado o app, adicionado o pubspec.yaml, preparar todo o app para rodar.
Adicionar também a estrutura de pastas para implementar a arquitetura bloc, recomendo o pacote clean_architecture(https://pub.dev/packages/flutter_clean_architecture), e que a mesma seja implementada para o padrao uncle bob, adicionar ao README sobre cada uma das pastas e para que serve cada uma, como devem ser usadas.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.