<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Felipe Bossolani</title>
    <description>The latest articles on DEV Community by Felipe Bossolani (@felipebossolani).</description>
    <link>https://dev.to/felipebossolani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F231246%2Faea6a106-b3e1-4337-9fc6-a2d4aadff385.jpeg</url>
      <title>DEV Community: Felipe Bossolani</title>
      <link>https://dev.to/felipebossolani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/felipebossolani"/>
    <language>en</language>
    <item>
      <title>Automatizando frontend com Cline</title>
      <dc:creator>Felipe Bossolani</dc:creator>
      <pubDate>Sat, 18 Jan 2025 23:10:13 +0000</pubDate>
      <link>https://dev.to/felipebossolani/automatizando-frontend-com-cline-299a</link>
      <guid>https://dev.to/felipebossolani/automatizando-frontend-com-cline-299a</guid>
      <description>&lt;h2&gt;
  
  
  Automatizando frontend com Cline: do Zero ao Tique-Taque
&lt;/h2&gt;

&lt;p&gt;Você já imaginou criar um aplicativo funcional, estiloso e com código limpo em poucos passos? É exatamente isso que o Cline permite! Quando descobri essa ferramenta no Visual Studio Code, fiquei impressionado com sua capacidade de gerar soluções completas com base em prompts bem elaborados.&lt;/p&gt;

&lt;p&gt;Neste artigo, vou compartilhar como usei o Cline para criar o Tique-Taque, um cronômetro com temporizador que combina Vue 3, TypeScript e Tailwind CSS. Além disso, vou mostrar como configurar tudo de forma simples, desde a instalação até o deploy no GitHub Pages. Prepare-se para explorar o poder da automação e, quem sabe, incorporar isso nos seus próprios projetos!&lt;/p&gt;

&lt;p&gt;Mais sobre o Cline: &lt;a href="https://github.com/cline/cline" rel="noopener noreferrer"&gt;https://github.com/cline/cline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instalação:&lt;/p&gt;

&lt;p&gt;Direto pelo VS Code, via extensões, procurar por Cline. Disclaimer: cuidado que há similares com um menor número de downloads e que podem não nos atender bem além de poder conter algo malicioso.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vrjb0rnsiu3jth1tqk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vrjb0rnsiu3jth1tqk7.png" alt="VS Code" width="800" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para abrir as configurações do Cline, pressione CMD/Control + Shift + P e digite “Cline: Open in New Tab”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0q0mclevcfydfzixccuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0q0mclevcfydfzixccuw.png" alt="Configurações do Cline" width="800" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Algo como isso deverá aparecer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6249hyxcq5hy49yo4k8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6249hyxcq5hy49yo4k8g.png" alt="Configurações do Cline 02" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No Api Provider, selecione algum que você possua conta e uma Api Key. Nesse exemplo usaremos a API Key do &lt;a href="https://www.deepseek.com" rel="noopener noreferrer"&gt;deepseek&lt;/a&gt;. Em um outro conteúdo explicarei mais sobre o deepseek.&lt;/p&gt;

&lt;p&gt;Testando seu uso pela primeira vez:&lt;/p&gt;

&lt;p&gt;Nosso projeto será um Crônometro com Temporizador.&lt;/p&gt;

&lt;p&gt;Vamos criar uma pasta para nosso projeto chamada TiqueTaque e abra-a no VSCode. &lt;/p&gt;

&lt;p&gt;Clique no botão do Cline no menu esquerdo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnmgvhkyymazej2mwxm9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnmgvhkyymazej2mwxm9i.png" alt="Cline no menu" width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E insira o seguinte prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Criar um temporizador “Tique-Taque” com Vue 3, TypeScript e Tailwind CSS**

Desenvolva um pequeno aplicativo chamado **Tique-Taque**, que funcione como um temporizador. Ele deve ser criado usando **Vue 3** como framework, **TypeScript** para a lógica e **Tailwind CSS** para estilização. O aplicativo terá as seguintes funcionalidades e layout:

1.  **Cronômetro:**

• Deve incluir botões para **iniciar**, **parar** e **zerar** o tempo.

• O tempo será exibido no formato MM:SS (minutos e segundos).

• O cronômetro começará do 00:00 e incrementará a cada segundo.

2.  **Temporizador:**

• Deve permitir que o usuário insira minutos e segundos para contagem regressiva.

• Um botão para **Iniciar Temporizador** começará a contagem regressiva.

• Quando o tempo chegar a 00:00, um alerta deve ser exibido, como uma mensagem no console ou um efeito visual.

3.  **Layout:**

• Página centralizada, com título “Tique-Taque” no topo.

• Uma área grande no centro que exiba o tempo em um estilo moderno e legível.

• Botões para **Iniciar**, **Parar** e **Zerar** alinhados horizontalmente.

• Uma área abaixo com campos de entrada para inserir o tempo do temporizador, com um botão para iniciar.

• Visual clean e responsivo, utilizando cores suaves (branco, cinza e verde para botões ativos).

4.  **Tecnologias:**

• **Vue 3**: Usar componentes para organização e ref ou reactive para estado local.

• **TypeScript**: Adicionar tipagem para entradas e funções.

• **Tailwind CSS**: Criar o layout centralizado e estilizar botões, textos e campos.

• Responsividade para desktop e mobile.

5.  **Comportamento do Código:**

• O botão “Iniciar” do cronômetro começa a contagem progressiva de 0.

• O botão “Parar” pausa o cronômetro ou temporizador no estado atual.

• O botão “Zerar” redefine o tempo para 00:00.

• O botão “Iniciar Temporizador” começa a contagem regressiva a partir do valor inserido pelo usuário.

• Quando o temporizador termina, exibe uma mensagem no console ou uma animação.

**Resultado esperado:**

Um aplicativo funcional que exibe o tempo corretamente, possui interatividade completa e apresenta um layout limpo e responsivo. O código deve ser modular, com lógica separada da apresentação.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Aqui temos o primeiro retorno e o custo (muito barato!!!)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhi23ufhlghmaj6waf6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhi23ufhlghmaj6waf6w.png" alt="Primeiro Retorno" width="800" height="792"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após todas as execuções iniciais, esse foi o custo antes do comando npm run dev&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb577z35kv53i8tl071wn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb577z35kv53i8tl071wn.png" alt="Custo" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Isso mesmo! 0,0037 usd ou 0,0226 Reais!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O resultado final foi esse, com zero edição de minha parte:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtrad3ngqt0h5uuruwvr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtrad3ngqt0h5uuruwvr.png" alt="Resultado Final" width="800" height="731"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O layout pode melhorar muito, o temporizador ficou confuso na parte de baixo mas tudo ficou muito funcional!&lt;/p&gt;

&lt;p&gt;Antes do deploy, irei colocar esse código no &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;github&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Uma coisa muito legal que aconteceu foi que ele tentou usar o &lt;a href="https://cli.github.com/" rel="noopener noreferrer"&gt;GH Cli&lt;/a&gt; do Github e eu ainda não havia instalado e ele mesmo percebeu e partiu para a instalação!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcidnpkvsejmi2gfvcor8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcidnpkvsejmi2gfvcor8.png" alt="GH Cli" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O repositório é esse: &lt;a href="https://github.com/felipebossolani/tiquetaqueai" rel="noopener noreferrer"&gt;https://github.com/felipebossolani/tiquetaqueai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E, por último, iremos subi-lo no github pages&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiixesj465ua2ki10thqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiixesj465ua2ki10thqc.png" alt="GH Pages" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de alguns ajustes no github actions (faltava o personal access token configurado no repo), consegui finalizar!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2p1sq5x4kco637eg4mqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2p1sq5x4kco637eg4mqf.png" alt="GH Actions" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso queira conferir o resultado final, acesse aqui :)&lt;br&gt;
&lt;a href="https://felipebossolani.github.io/TiqueTaqueAI/" rel="noopener noreferrer"&gt;https://felipebossolani.github.io/TiqueTaqueAI/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Uma observação importante: Para projetos profissionais sempre de preferência para modelos AI pagos e leia todos os EULAs sobre o uso e nunca compartilhe senhas e chaves com os modelos.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quer falar mais comigo? &lt;br&gt;
Me encontre no &lt;a href="https://www.linkedin.com/in/felipebossolani/" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt; ou &lt;a href="https://x.com/felipebossolani" rel="noopener noreferrer"&gt;x/twitter&lt;/a&gt; &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>vscode</category>
      <category>vite</category>
    </item>
  </channel>
</rss>
