Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Criar API/JSON e Site/App/SPA #9

Closed
sunw4r opened this issue Apr 13, 2016 · 70 comments
Closed

Criar API/JSON e Site/App/SPA #9

sunw4r opened this issue Apr 13, 2016 · 70 comments

Comments

@sunw4r
Copy link

sunw4r commented Apr 13, 2016

Muito bom! Parabéns!

Rola liberar um JSON com as informações? Tenho interesse em criar um site no estilo "Painel da Vergonha", aí poderia usar o seu github como source pra se auto-atualizar.

Valeu!
[ ]s

@cuducos
Copy link
Member

cuducos commented Apr 13, 2016

@sunw4r @jlcarvalho Vamos automatizar isso? Aí já temos a lista, o site, o JSON, tudo…

Posso criar um CMS simplão (algo rápido com Django Admin, ou Flask) e jogar no Heroku.

Formulário de poucos campos:

  • Nome do provedor
  • URL do provedor
  • URL do archive.is
  • Estados onde atuam
  • Cidades atendidas

Podemos deixar esse CMS aberto mesmo, ou alguém assume a moderação (qualquer um posta, mas para ir pro ar alguém muda um flag de “publicar”).

Topam?

Só preciso que alguém me entregue um HTML de coo vai ser o front-end.

@jlcarvalho
Copy link
Member

Será que precisa de um CMS? Dá pra usar o Github pra moderar as coisas e criar um SPA hospedado no GH Pages. Mais prático, não?

A desvantagem é que só quem tem conta no Github vai poder contribuir.

@cuducos
Copy link
Member

cuducos commented Apr 13, 2016

Pensei em CMS mais pela agilidade de dar fazer e dar deploy (para mim, claro). CMS abre as portas para quem não tem GitHub contribuir, e gera um JSON que pode ser utilizado no SPA, por exemplo.

@jlcarvalho
Copy link
Member

@cuducos, me convenceu. Eu não sou muito bom com design, mas vou procurar alguém pra nos ajudar. Enquanto isso a gente podia usar algum framework css (Bootstrap, Foundation, etc.) só pra tirar a ideia do papel sem a gente se preocupar muito com estilo. Feito é melhor que perfeito.

@adeildo-jr
Copy link

@sunw4r @jlcarvalho @cuducos posso ajudar com a hospedagem, tenho um vps aqui, e dá para colocar. for free, é claro.

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 13, 2016

De repente da pra por o json aqui mesmo no github e consumir do arquivo raw mesmo.

@cuducos
Copy link
Member

cuducos commented Apr 14, 2016

Tá online teu gerador de JSON, @sunw4r: http://internetsemlimites.herokuapp.com (mas ainda vou cadastrar os provedores, faço isso já já).

O código está em: https://github.com/cuducos/InternetSemLimitesCMS

Liberei acesso pro admin para mim e para o @jlcarvalho, mas caso alguém mais queira, me pede em PVT (@cuducos no Twitter e Telegram) que crio a conta.

Depois podemos fazer um form aberto para pessoas enviarem e agente só “moderar” (mudar o flag published no CMS).

Posso fechar essa issue e discutimos o CMS no https://github.com/cuducos/InternetSemLimitesCMS/issues

@jlcarvalho
Copy link
Member

@sunw4r a API te atende? Podemos fechar a issue?

@sunw4r
Copy link
Author

sunw4r commented Apr 14, 2016

@jlcarvalho @cuducos perfeito! Atende sim!
Vou correr atras de um tempo pra montar um layout bacana / registrar um dominio e botar pra rodar!
Valeu!

[ ]s

@cuducos
Copy link
Member

cuducos commented Apr 14, 2016

@sunw4r e quem mais tiver interesse na API: adicionei mais entrypoints (colando aqui):

Qualquer dúvida, ou outra necessidade, so dizer ; )

@cuducos cuducos changed the title JSON Criar API/JSON e Site/App/SPA Apr 14, 2016
@cuducos
Copy link
Member

cuducos commented Apr 14, 2016

Reabrindo (e rebatizando o _issue)) pois parece que tem mais gente querendo participar da história de consumir os dados via JSON/API ; )

@cuducos cuducos reopened this Apr 14, 2016
@rodrigogs
Copy link
Contributor

Vale refatorar em outras linguagens? 👅

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

Acho que só não vale é não divulgar essa lista =)

@rodrigogs
Copy link
Contributor

Eu adorei a ideia. Vou ver se consigo criar uma versão da API em Node.

@jlcarvalho
Copy link
Member

@rodrigogs, eu até acho que vale, mas aí iria descentralizar o cadastro dos provedores? Por que se for pra informação ficar espalhada (igual estava antes da criação desse repositório) eu acho melhor não refatorar.

Agora se as múltiplas implementações conseguirem replicar/espelhar os provedores aí eu acho de boa.

@rodrigogs
Copy link
Contributor

Seria mais para quem quiser criar o seu... Já que é tudo código aberto.

Mas você tem razão, não devemos descentralizar.

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

A não ser que a API possua crud pra um db central

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

Eu digo isso porque, por exemplo, o retorno da API já está defasado em relação ao readme deste projeto. Deveriamos pensar em alguma forma de automatizar o source de dados da API.

@jlcarvalho
Copy link
Member

Até comentei em outra issue (#19 (comment)) sobre essa questão de ser difícil manter a API e o repositório.

O ideal seria que ambos "bebessem da mesma fonte", mas é complicado fazer isso no repositório. Então acho que o ideal seria a criação de um site onde as pessoas (mesmo as que não possuem Github) pudessem submeter novos provedores.

@cuducos
Copy link
Member

cuducos commented Apr 14, 2016

Roadmap

[x] CMS para gerenciar o conteúdo
[x] API para servir o conteúdo
[x] Formulário para envio de novos provedores
[ ] SPA para mostrar o conteúdo com um visual bacanudo
[ ] Tirar o conteúdo do README.md e deixar só no CMS

Estamos quase lá : )

E reforçando o que eu falei em outro momento: se alguém mais quiser dar uma mão na moderação (ter acesso ao CMS, só mandar o email em PVT que eu crio mais usuários aqui; @cuducos no Twitter e Telegram).

Por enquanto o fluxo está:

  1. Alguém manda PR aqui
  2. Alguém dá o merge
  3. Alguém inclui no CMS

Com o formulário funcionando já dá para adotarmos outros fluxos, por exemplo:

  1. Alguém preenche o formulário
  2. Alguém aprova no CMS
  3. Alguém atualiza o README.md

É o mesmo número de passos, mas já é mais aberto não precisa der GitHub geek para contribuir.

@jlcarvalho
Copy link
Member

@cuducos, futuramente a gente pode até conseguir automatizar a atualização do README.md através do CMS.

@rodrigogs
Copy link
Contributor

Eu tava mesmo pesquisando isso. Mas acho que tem que ser algo bem manual mesmo.

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

Como vcs estão armazenando os dados, pq daria pra criar um hook do git pra reescrever o readme.md toda vez que ocorrer uma atualização. Uso bastante hooks de git aqui no trampo e posso dar uma mão se precisarem.

@cuducos
Copy link
Member

cuducos commented Apr 14, 2016

@fbraz3 Nunca fiz isso, mas sinta-se à vontade: esse é o código do CMS & API. Basicamente um web app Python (Django) rodando no Heroku. Os dados ficam num PostgreSQL que pode ser acessado externamente.

@cuducos
Copy link
Member

cuducos commented Apr 14, 2016

@rodrigogs Sobre refatorar: se formos refatorar em outra linguagem, topo. Mas mato esse que tem, para manter a single source of truth hehe…

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

vou usar o git blame-someone-else pra por no de alguém lol

@rodrigogs
Copy link
Contributor

Que lindo que ficou isso.

@jlcarvalho
Copy link
Member

Esse script já tá funcionando aqui no repo?

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

já rodou inclusive, foi até meu erro de portugês lol

@jlcarvalho
Copy link
Member

Eu despubliquei o Americanet (por não ter fonte) mas ele continua no README.md, é um bug?

@cuducos
Copy link
Member

cuducos commented Apr 14, 2016

Provavelmente. To na rua agora, abre uma Issue lá no outro repo e olho mais
tarde. Mal aí…
On Thu, Apr 14, 2016 at 17:34 Jean Lucas de Carvalho <
notifications@github.com> wrote:

Eu despubliquei o Americanet (por não ter fonte) mas ele continua no
README.md, é um bug?


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#9 (comment)

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

Não é instantâneo, a cron vai rodar a cada 6 horas

#InternetSemLimites
0 */6 * * * /home/automacao/InternetSemLimites/sync.sh

Querem um tempo menor?

@kazzkiq
Copy link

kazzkiq commented Apr 14, 2016

Dúvida:
Do ponto de vista de hospedagem/tráfego, o Heroku aguentaria quantos acessos simultâneos e/ou mensais? Existe limite de tráfego nos planos gratuitos?

Pergunto isso porque a internet está realmente engajada nesse assunto e a cada dia que passa mais Vloggers famosos começam a fazer vídeos sobre isso. Imagina se apenas um cara famoso resolver divulgar o site da iniciativa no Twitter ou no vídeo dele, meu medo é o Heroku não aguentar a porrada de acessos.

Imagino que o SPA não deva passar de uns 500kb, só pra ter uma referência do que seria trafegado.

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

Bom, não vi nada no TOS deles a respeito de tráfego ou limites de acesso.

Mas o fato é que provedores gringos costumam cortar acessos sem dó nem piedade, principalmente de clientes o exterior que não podem processar eles =P

Mas acredito que se houver alguma divulgação desse tipo, deve-se apresentar o conteúdo do github pages (que ainda está em discussão) ou o próprio projeto do github.

@jlcarvalho
Copy link
Member

@fbraz3, roda o shell aí pra atualizar o README.md, adicionei algumas infos lá. Depois pode deixar no automático mesmo. ;)

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

@jlcarvalho eu rodei mas não tem nada pra atualizar =(

[root@web01 ~]# /home/automacao/InternetSemLimites/sync.sh

  • cd /home/automacao/InternetSemLimites

  • git reset --hard HEAD
    HEAD is now at 22ae591 auto-update README.md

  • git clean -f -d
    Removing README.md.tmp

  • /usr/bin/git pull origin HEAD
    From github.com:InternetSemLimites/InternetSemLimites

    • branch HEAD -> FETCH_HEAD
      Already up-to-date.
  • wget https://internetsemlimites.herokuapp.com/README.md -O README.md.tmp
    --2016-04-14 19:27:12-- https://internetsemlimites.herokuapp.com/README.md
    Resolving internetsemlimites.herokuapp.com (internetsemlimites.herokuapp.com)... 23.21.66.159
    Connecting to internetsemlimites.herokuapp.com (internetsemlimites.herokuapp.com)|23.21.66.159|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: unspecified [text/markdown]
    Saving to: ‘README.md.tmp’

    [ <=> ] 4.851 --.-K/s in 0,001s

2016-04-14 19:27:14 (6,19 MB/s) - ‘README.md.tmp’ saved [4851]

++ cut -f 1
++ du -k README.md.tmp

  • SIZE=8
  • '[' 8 -lt 1 ']'
    ++ awk '{print $1}'
    ++ md5sum README.md
  • MD5A=ea566ff0eb4284ed9237948d5673b738
    ++ awk '{print $1}'
    ++ md5sum README.md.tmp
  • MD5B=ea566ff0eb4284ed9237948d5673b738
  • '[' ea566ff0eb4284ed9237948d5673b738 '!=' ea566ff0eb4284ed9237948d5673b738 ']'

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

Em tempo, poderíamos adicionar no README.md, bem no topo, o link pra cadastrara provedor. né =)

https://internetsemlimites.herokuapp.com/new/

@jlcarvalho
Copy link
Member

Claro né, perdão. O @cuducos tem que fazer o deploy no heroku.

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

Acho que tendo essa info já da pra começar a divulgar no FB, tentar entrar em contato com alguns meios de comunicação sei lá...

@jlcarvalho
Copy link
Member

@fbraz3 foi justamente isso que eu fiz, adicionei o link do formulário e uma descrição em inglês pros gringos não ficarem perdidos.

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 14, 2016

heroku tem algum cache será? pois acessando direto o https://internetsemlimites.herokuapp.com/README.md ta igual no repositório, daí os md5 ficam iguais e não atualiza =(

@jlcarvalho
Copy link
Member

@fbraz3 acredito que o @cuducos tem que fazer deploy da aplicação pro Heroku pra atualizar o README.md.

@cuducos
Copy link
Member

cuducos commented Apr 15, 2016

Atualizar o README.md

@fbraz3 e @jlcarvalho: Sim, preciso dar deploy no Heroku, desculpe (tu tem conta no Heroku? Se tiver te ponho como colaborador lá, me avise). Depoly novo isso já já!

Herou e volume de acessos

@kazzkiq Resumindo uma resposta pra tua pergunta sobre o acessos e Heroku: eles não cobram por velocidade ou volume, mas sim por processamento (dynos).

Ou seja, um site sem volume em arquivos, mas complexo em termos de processamento pode acabar sendo mais custo do que um site com arquivos pesados, mas com processamento simples. Não é bem isso, mas é por aí.

Outro dia tive um projeto lá que tinha mais de 500 acessos únicos por dia — isso de manteve por pouco mais de 1 semana e aí o plano free do Heroku não aguentou. Paguei US$ 7 por um mês, o plano pago mais simples e resolveu (e sobrou). No mês seguinte já voltei ao plano free de boas.

Se esse for nosso caso, pago com gosto esses US$ 7 do meu próprio bolso só por não ter que me preocupar com a parte de devops. Se ficar mais caro que isso, teremos visibilidade para pedir grana para geral. E aí, nesse ponto, se cada um ajudar com 10 centavos já pagamos meio ano de Heroku (1000 acessos * R$ 0,10 = R$ 1000 ~ US$ 28, logo… 4 meses de Heroku).

E claro, estou só dando minha opinião. Se outro servidor (melhor e mais barato/free) que eu faça deploy com um simples git push hellyeah master, bye bye Heroku — seja num PaaS seja com um devops bacanudo aqui da comunidade ; )

@jlcarvalho
Copy link
Member

Estou com o @cuducos quanto a "hospedagem". Também ajudo com grana caso precise.

@cuducos
Copy link
Member

cuducos commented Apr 15, 2016

Hahaha… acabei de responder a bíblia pro @kazzkiq e na sequência o Heroku tira nosso site do ar —não por volume de acessos/processamentos mas por uma outra regra que diz que os apps frees ficam pelo menos 6h offline por dia (e o nosso já estava passando das 18h sem parar de ter acesso).

TL;DR Acabei de deixar US$ 7 no Heroku… hahaha…

@jlcarvalho
Copy link
Member

Não sabia dessa regra do Heroku.

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 15, 2016

kct, que sacanagem!

@fbraz3
Copy link
Collaborator

fbraz3 commented Apr 15, 2016

Só pra constar, eu trabalho com devops, então se precisar contratar uma vps ou algo parecido, eu faço a integração.

@fredericksilva
Copy link

fredericksilva commented Apr 18, 2016

Pessoal vocês Conhecem o Sheetsu? é uma forma incrível de gerar api a partir de uma simples tabela do google sheet.

@cuducos
Copy link
Member

cuducos commented Apr 19, 2016

@fredericksilva Não conheço. Mas a API já está funcionando. Se achar que o Sheetsu vai funcionar melhor, toca ficha no PR ; )

@fredericksilva
Copy link

@cuducos ta blz!
Então que fique de dica para um próximo projeto sheetsu.

@cuducos
Copy link
Member

cuducos commented Apr 19, 2016

API e site prontos, no ar, funcionando…
Acho que é hora de fechar esse Issue, não?

@cuducos cuducos closed this as completed Apr 21, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants