Skip to content

Latest commit

 

History

History
121 lines (87 loc) · 6.42 KB

README_PT-BR.md

File metadata and controls

121 lines (87 loc) · 6.42 KB

Logo

Todo List CLI by Steve


Lista de tarefas por interface de linha de comando

Desafio · DevChallenge

Índice

DevChallenge

DevChallenge permite que você evolua suas skills como programador! Participe da nossa comunidade o/

Desafio

Seu desafio é criar uma interface de linha de comando que lhe permita manter uma lista de tarefas com atividades pendentes e finalizadas!

Galeria da Fama

Os projetos mais interessantes criados pelos usuários serão exibidos nesta seção para servir de inspiração para quem vai fazer o desafio. Portanto não apenas cumpre os requisitos, leve o seu projeto para o próximo nível.

Requisitos:

Os seguintes requisitos deverão ser implementados em uma interface de linha de comando. Esse CLI deverá ser controlado por meio de comandos (incluindo subcomandos e argumentos), menu de opções ou outros métodos criativos.

  1. [opcional] Se você decidir usar comandos tenha em mente que eles deverão ser uma ação explícita, enquanto argumentos usam um traço (-a ou --argumento) e são responsáveis por modificar o comportamento de um comando. Examplo:
task <subcommand> # Aceita add, complete, delete, list e next como subcomandos

task add <description> [-p <priority>] # Adiciona uma tarefa pendente. Pode definir a prioridade da tarefa como baixa, normal ou alta com a opção -p (or --priority)

task complete <id> # Marca uma tarefa como concluída
task delete <id> # Deleta uma tarefa
task list [-a] # Mostra as tarefas pendentes. A opção -a (or --all) mostra todas as tarefas (pendentes e concluídas)
task next # Mostra a próxima tarefa de cada prioridade
  1. [adicionar tarefa] : Deverá ser possível cadastrar uma nova tarefa.

    Uma tarefa terá obrigatoriamente um id único, uma descrição, uma data de criação, o status (mostra se uma tarefa está pendente ou finalizada) e uma prioridade (pode ser alta, normal ou baixa). Exemplo:

    { id: 1, descricao: 'Comprar 6 ovos', criado: 2021-04-01T20:54:19.410Z, status: 'pendente', prioridade: 'alta' };
  2. [marcar tarefa como finalizada] : Deverá ser possível alterar o status de uma tarefa para finalizada.

  3. [deletar tarefa] : Deverá ser possível deletar uma tarefa informando o id correspondente a ela.

  4. [listar tarefas] : Deverá ser possível listar as tarefas que possuem um status diferente de finalizada.

    Ao invés de mostrar a data de criação de cada tarefa, a propriedade deverá ser substituída por uma nova propriedade que mostra há quanto tempo a tarefa foi criada (1 mês). Exemplo:

    [{ id: 1, descricao: 'Comprar 6 ovos', criado: 22 horas, status: 'pendente', prioridade: 'alta' }]
  5. [listar todas tarefas] : Deverá ser possível listar todas tarefas, inclusive as que possuem o status finalizada.

    Ao invés de mostrar a data de criação de cada tarefa, a propriedade deverá ser substituída por uma nova propriedade que mostra há quanto tempo a tarefa foi criada (1 mês).

  6. [listar próximas tarefas] : Deverá ser possível listar uma tarefa de cada prioridade, ou seja, uma tarefa de prioridade alta, uma tarefa de prioridade normal e uma tarefa de prioridade baixa, caso existam. A tarefa listada de cada prioridade será a mais antiga do seu grupo.

    Ao invés de mostrar a data de criação de cada tarefa, a propriedade deverá ser substituída por uma nova propriedade que mostra há quanto tempo a tarefa foi criada (1 mês).

  7. [arquivo local ou bancos de dados] : Deverá haver persistência dos dados para que eles não sejam perdidos após o fechamento da interface de linha de comando.

Techs:

  • Tecnologia que preferir! Mas, temos algumas sugestões. :)

JavaScript

Commander.js : ferramentas para criar uma interface de linha de comando que permite o uso de comandos, argumentos e flags.

Inquirer.js : permite criar interfaces de linha de comando mais interativas. Lhe permitem fazer perguntas, mostrar checklists e esconder o input de senhas.

Chalk : permite a estilização de interfaces de linha de comando.

TTY Table : facilita a criação e exibição de tabelas em interfaces de linha de comando.

Outras opções: Vorpal.js, Caporal.js, Yargs.js, Glue Gun, Seeli.js, Figlet.js, Oclif, Meow, Color.js, CLI Table 3, Progressbar, Clui.js, Enquirer.

Java

Aceitamos sugestões de ferramentas do Java nos Discussions.

PHP

Aceitamos sugestões de ferramentas do PHP nos Discussions.

Python

Aceitamos sugestões de ferramentas do Python nos Discussions.

Como começar:

1 - Use esse template (clicando em Use this template) ou faça um fork deste repositório com o código inicial
2 - Leia as instruções no README.md
3 - Comece a codar! Sinta-se livre para utilizar o fluxo de trabalho que ache mais confortável
4 - Compartilhe seu resultado com a comunidade! Utilize a seguinte hashtag: #devchallenge

Compartilhe!

Inicie seu projeto utilizando esse template no seu GitHub como um repositório público
Faça um print, GIF ou vídeo e compartilhe o resultado com a #devchallenge ou marcando nosso perfil @devchallenge!

Desafio criado por Steve :)

Comunidade DevChallenge

Site: https://www.devchallenge.com.br/
Discord: https://discord.gg/yvYXhGj
LinkedIn: https://www.linkedin.com/company/devchallenge/
Twitter: https://twitter.com/dev_challenge
Instagram: https://www.instagram.com/devchallenge/