Code Monkey home page Code Monkey logo

sme-filadacreche's Introduction

Maintainability

Pátio Digital

“Recurso público retorna ao público”.

Nós somos o Pátio Digital, uma iniciativa da Secretaria Municipal de Educação de São Paulo que, por meio do fortalecimento da transparência, da participação social e do desenvolvimento de novas tecnologias, aproxima diferentes grupos da sociedade civil por um objetivo maior: a melhoria da educação na cidade de São Paulo.

Fila da Creche


Conteúdo

  1. Sobre o Fila da creche
  2. Comunicação
  3. Roadmap de tecnologia
  4. Como contribuir
  5. Instalação

Sobre o Fila da Creche

Para que os pais e famílias possam se programar e acompanhar a geração de vagas na educação infantil, a Secretaria Municipal de Educação de São Paulo, por meio da iniciativa de governo aberto Pátio Digital, lançou uma ferramenta online inédita que permite saber como está a espera de acordo com o endereço fornecido e a faixa etária informada. http://filadacreche.sme.prefeitura.sp.gov.br

Nossos outros repositórios

1SME Fila da creche API

Comunicação

Canal de comunicação Objetivos
Issues do Github - Sugestão de novas funcionalidades
- Reportar bugs
- Discussões técnicas
Telegram - Comunicar novidades sobre os projetos
- Movimentar a comunidade
- Falar tópicos que não demandem discussões profundas

Qualquer outro grupo de discussão não é reconhecido oficialmente.

Roadmap de tecnologia

Passos iniciais

  • Melhorar a qualidade de código
  • Iniciar a escrita de testes unitários
  • Transferir front para o github pages
  • Iniciar escrita de testes funcionais
  • Melhorar documentação de maneira enxuta

Como contribuir

Contribuições são super bem vindas! Se você tem vontade de construir o Fila da creche conosco, veja o nosso guia de contribuição onde explicamos detalhadamente como trabalhamos e de que formas você pode nos ajudar a alcançar nossos objetivos. Lembrando que todos devem seguir nosso código de conduta.

Instalação

  1. Crie um arquivo de texto chamado .env seguindo o exemplo.env.sample.
  2. Digite os comandos: npm install npm start

npm start

Executa o aplicativo em modo de desenvolvimento.
Abra http://localhost:3000 para visualiza-lo no navegador.

A pagina será recarregada se você fizer edições.
E você tambem poderá acompanhar os erros no console.

npm test

Executa os testes presentes no arquivo.test.js.

npm run build

Cria o arquivo para produção na pasta build.
Ele agrupa corretamente o React em modo de produção e otimiza o build para obter o melhor desempenho.

A compilação é reduzida e os nomes de arquivos posssuem hashes.
Seu aplicativo está pronto para ser implantado!

npm run deploy

Cria e implanta o aplicativo no GitHub Pages.


Baseado no Readme do i-educar

sme-filadacreche's People

Contributors

bplmp avatar dalesewerton avatar ludimila avatar matheusme avatar pamnovalli avatar rahmon avatar ronaiza-cardoso avatar victorsenam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sme-filadacreche's Issues

Limitar buscas fora de SP, Capital

  • Mostrar mensagem de erro para buscas de endereços fora de SP, Capital
  • Limitar buscas pela API do Google
  • Validar o input do usuário por bounding box da cidade de SP, após retorno do endereço georeferenciado

Rota /cadastrar quebrada

Alguma mudança quebrou a rota /cadastrar.

Erro:

new SchoolList
src/components/SchoolList.js:13
  10 | constructor(props) {
  11 |   super(props);
  12 |   this.state = {
> 13 |     displayedListSize: props.shortenList
  14 |       ? Math.min(shortenedListSize, props.schools.length)
  15 |       : props.schools.length,
  16 |   };

@victorsenam precisamos achar o que quebrou isso. Vou começar a investigar agora. Está quebrado em produção inclusive.

Repensar a interface gráfica

Atualmente a aplicação não ocupa todo o espaço da tela, funciona muito bem em celular mas o efeito não é muito agradável em computadores.

tela fila

Sugestões de mudanças na UI da página de resultados

Eu sugiro algumas mudanças na UI especificamente da página de resultados. Aqui vai um screenshot de como ela está agora.
screenshot from 2018-08-31 13-20-47

  • Primeiro, eu acho que o título contém informação demais. A pessoa já sabe que está buscando para um tal endereço e tal grupo e essa informação fica numa fonte grande logo no começo da página quando ela é provavelmente ignorada. Acredito que isso canse o usuário e deixa a experiência mais confusa, leva ao usuário ao hábito de ignorar texto importante no resto da aplicação. Sugiro que a gente mude para algo mais ou menos assim:
    screenshot from 2018-08-31 13-24-47
    Isso deixa todas as informações anteriores ali e mantém a mesma explicação sobre a fila que existia antes, mas prioriza e cansa menos.
  • A data da atualização de dados que está no fim da página pode ficar no banner mesmo, no texto pequeno, na minha opinião. Isto é, em vez de colocar "* Dados atualizados em 30/08/2018 04:06" no fim da listagem das creches, colocar "Há 65 crianças na fila do Mini Grupo I a serem distribuídas nas 11 creches perto de R. do Matão - Butantã, São Paulo - SP, 03178-200, Brasil. Estes dados foram atualizados em 30/08/2018 04:06." logo no cabeçalho. Mantém todas as informações em um lugar só e limpa uma linha de informação "secundária" da listagem.
  • Não entendo o porque do subtítulo "CRECHE" antes da listagem. Poderíamos tirá-lo.
  • Na página de cadastro, adicionamos mudamos as informações disponibilizadas sobre as creches. Acho que isso é confuso para o usuário e, se ele tem interesse em recuperar a informação que viu em uma destas páginas, por elas serem tão parecidas, vai tentar fazer em qualquer uma e falhar, o que gera frustração. Acho que deveríamos deixar isso consistente entre as duas páginas e, preferencialmente, usar o mesmo componente no react. Pelo código, me parece que se a escola tem um número de telefone, ele é mostrado só na página de registro e não na página de resultados. O mesmo acontece com o tipo de escola.
    screenshot from 2018-08-31 14-36-05

Adicionar nota explicando utilização do termo "creche"

Centro de Educação Infantil, ou CEI, é o termo tecnicamente mais correto. Decidimos utilizar "creche" devido ao seu maior uso fora da SME.

Podemos adicionar em algum lugar da interface uma observação sobre essa decisão.

Implementar mudanças de UI na página de resultados

Algumas sugestões feitas na issue #27 foram aceitas e podem ser implementadas. São elas:

  • Alterar o título para que ele contenha menos informações (primeiro item das sugestões)
  • Mudar a localização da data de atualização das informações (segundo item)
  • Remover o cabeçalho "CRECHES" (terceiro item)

Refatorar os métodos com linhas em excesso levando em conta o príncipio de Single-responsibility

Métodos bem escritos usualmente tem apenas uma função e não várias, métodos com muitas linhas costumam estar realizando mais de uma tarefa, o que pode dificultar a manutenção futura.

Os métodos que se encontram nesse situação devem ser refatorados, segue o link da análise do code climate.

https://codeclimate.com/github/prefeiturasp/SME-FilaDaCreche/issues?category=complexity&engine_name%5B%5D=structure&engine_name%5B%5D=duplication

Remover blocking JS

Carregar JS async para não bloquear o carregamento da página e aumentar velocidade.

Prever casos de link direto para página dos resultados, que requer os dois JS carregados hoje (Google Maps API e turf.js) para funcionar.

Transformar componentes com estado (stateful) em componentes sem estado (stateless)

Os componentes que estão na pasta "components" são do tipo stateful (com estado) e a maioria não gerencia um estado interno (local state) e não faz uso dos métodos de ciclo de vida do componente. Dessa forma, é interessante fazer uma refatoração para transformá-los de "stateful" para "stateless".

Apesar dessa mudança não impactar a perfomance da aplicação, componentes sem estado são mais fáceis de serem entendidos (já que são apenas funções que recebem uma entrada e retornam uma saída) e testados. O ideal é sempre iniciar com um componente sem estado e quando surgir a necessidade refatorar para um componente com estado.

Abaixo segue a lista dos arquivos que podem passar por essa mudança:

Para quem for contribuir nessa issue:

  • faça para cada arquivo um PullRequest (PR) separado pois assim fica mais fácil para testar e analisar os impactos da mudança
  • referencie essa issue para saber quais arquivos já foram alterados

Essa refatoração é simples e ideal para quem está começando com React.

404 page

Atualmente, ao se abrir um link não existente uma página branca é mostrada.

Discutir as diferenças entre a Página de Resultados e a Página de Registro

O problema, como apresentado na issue #27 é

Na página de cadastro, adicionamos mudamos as informações disponibilizadas sobre as creches. Acho que isso é confuso para o usuário e, se ele tem interesse em recuperar a informação que viu em uma destas páginas, por elas serem tão parecidas, vai tentar fazer em qualquer uma e falhar, o que gera frustração. Acho que deveríamos deixar isso consistente entre as duas páginas e, preferencialmente, usar o mesmo componente no react. Pelo código, me parece que se a escola tem um número de telefone, ele é mostrado só na página de registro e não na página de resultados. O mesmo acontece com o tipo de escola.

Este é um screenshot da página de registro
screenshot from 2018-08-31 14-36-05

Este é um da página de resultados apresentando a mesma creche
screenshot from 2018-09-03 20-38-30

Segundo este comentário do @bplmp, existem mais diferenças. A página de registro apresenta as instituições nas quais pode ser realizado o cadastro, por isso, mostra, além de creches, outras instituições de ensino que não necessariamente oferecem ensino infantil. Daí a utilidade de mostrar o tipo de escola. Na página de resultados é apresentada a quantidade de crianças matriculadas em cada uma, informação irrelevante na hora escolher onde fazer o cadastro já que o lugar onde é realizado o cadastro não é necessariamente o lugar para o qual se faz o cadastro.

Foi decidido que esta discussão era complexa e que valia à pena dividir a issue original em duas, permitindo tratar os problemas independentemente e agilizar a solução das outras.

Resolver lint warnings

Quando eu rodo npm run localmente eu recebo vários lint warnings. Acho muito interessante evitar isso e suprimir os warnings inúteis com // eslint-disable-next-line. Evitar que existam linter warnings evita que nós criemos novos warnings e faz com que a qualidade do código se mantenha boa constantemente.

Compiled with warnings.

./src/containers/Results/Results.js
  Line 1:   'Component' is defined but never used  no-unused-vars
  Line 2:   'Router' is defined but never used     no-unused-vars
  Line 2:   'Route' is defined but never used      no-unused-vars
  Line 8:   'Spacer' is defined but never used     no-unused-vars
  Line 16:  Expected '===' and instead saw '=='    eqeqeq

./src/containers/Register/Register.js
  Line 1:  'Component' is defined but never used  no-unused-vars

./src/containers/CheckIfRegistered/CheckIfRegistered.js
  Line 1:  'Component' is defined but never used  no-unused-vars

./src/containers/IsRegistered/IsRegistered.js
  Line 1:  'Component' is defined but never used  no-unused-vars

./src/containers/DateOfBirthForm/DateOfBirthForm.js
  Line 1:  'Component' is defined but never used  no-unused-vars

./src/containers/AddressInput/AddressInput.js
  Line 1:  'Component' is defined but never used  no-unused-vars

./src/containers/Home/Home.js
  Line 1:  'Component' is defined but never used  no-unused-vars
  Line 5:  'Logo' is defined but never used       no-unused-vars

./src/containers/PreschoolGroup/PreschoolGroup.js
  Line 2:   'Router' is defined but never used  no-unused-vars
  Line 2:   'Route' is defined but never used   no-unused-vars
  Line 13:  Missing radix parameter             radix
  Line 14:  Missing radix parameter             radix

./src/App.js
  Line 2:   'Router' is defined but never used   no-unused-vars
  Line 2:   'Link' is defined but never used     no-unused-vars
  Line 18:  'GLOBALS' is defined but never used  no-unused-vars
  Line 19:  'API' is defined but never used      no-unused-vars

./src/containers/DateOfBirthForm/SelectDate.js
  Line 2:   'Router' is defined but never used                 no-unused-vars
  Line 2:   'Route' is defined but never used                  no-unused-vars
  Line 6:   'GLOBALS' is defined but never used                no-unused-vars
  Line 49:  Missing radix parameter                            radix
  Line 50:  Missing radix parameter                            radix
  Line 68:  'dateSelected' is assigned a value but never used  no-unused-vars

./src/components/ContinueButton.js
  Line 2:  'Router' is defined but never used  no-unused-vars
  Line 2:  'Route' is defined but never used   no-unused-vars

./src/components/Logo.js
  Line 3:  'logo' is defined but never used  no-unused-vars

./src/containers/AddressInput/AddressForm.js
  Line 4:  'Router' is defined but never used  no-unused-vars
  Line 4:  'Route' is defined but never used   no-unused-vars

./src/components/Footer.js
  Line 6:  'footerMob' is defined but never used   no-unused-vars
  Line 7:  'footerDesk' is defined but never used  no-unused-vars

Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.

Mantenedores

Esse projeto ainda é mantido? Vejo que há PR e ISSUES paradas. Gostaria de saber, para pode contribuir.

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.