Criar uma aplicação para cadastro de links de notícias/artigos com possibilidade de votos (up e down) de usuários. Todas ações poderão ser feitas por usuários anônimos. Referência: hacker news.
O candidato poderá escolher entre criar a aplicação com NodeJS
ou PHP
, sendo que:
- NodeJS: Sugerimos usar Express + Sequelize
- PHP: Sugerimos usar CakePHP
GET /news
: Lista notíciasPOST /news
: Cria notíciaPATCH /news/:id/up
: Up vote para notíciaPATCH /news/:id/down
: Down vote para notícia
- Banco de dados MySQL
- Usar uma biblioteca de ORM com migrations
- TDD
- Readme explicativo de como testar e usar
- Bloqueio temporário de ações repetidadas por IP (cadastro de notícias e votos)
- Possibilidade de ordenar notícias por: mais votos up, mais votos down, últimos adicionados (no mesmo endpoint de listagem)
- HTTP Status Code auto-explicativo (200 success, 404 not found, etc)
- Rate limit
- Ambiente de desenvolvimento com azk ou docker
- Teste do link para validar resposta da página
- Leitura do título da página caso passe apenas o link no cadastro
- ESLint (nodejs)
- ES6 (nodejs)
- PHP 7 (php)
{
"success": true,
"message": "Message",
"data": {
"id": 1
}
}
- news
- id
- title
- link
- up_votes
- down_votes
- ip
- created_at
- updated_at
- votes
- id
- news_id
- direction_vote
- ip
- created_at
- blocked_ips
- id
- ip
- until
Criar um fork desse projeto e enviar um pull request.