<?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 Austriaco</title>
    <description>The latest articles on DEV Community by Felipe Austriaco (@w1redl4in).</description>
    <link>https://dev.to/w1redl4in</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%2F560732%2F9aea95e7-5f8c-47a4-96a3-bf1e844e1a4e.jpeg</url>
      <title>DEV Community: Felipe Austriaco</title>
      <link>https://dev.to/w1redl4in</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/w1redl4in"/>
    <language>en</language>
    <item>
      <title>Construindo SaaS #1 – Meu primeiro dia com um SaaS no ar</title>
      <dc:creator>Felipe Austriaco</dc:creator>
      <pubDate>Thu, 06 Feb 2025 14:43:15 +0000</pubDate>
      <link>https://dev.to/w1redl4in/construindo-saas-1-meu-primeiro-dia-com-um-saas-no-ar-43p9</link>
      <guid>https://dev.to/w1redl4in/construindo-saas-1-meu-primeiro-dia-com-um-saas-no-ar-43p9</guid>
      <description>&lt;h2&gt;
  
  
  Olá, pessoal! Como estão?
&lt;/h2&gt;

&lt;p&gt;Estou iniciando uma série de artigos sobre SaaS, com o objetivo de trazer insights valiosos e conteúdos informativos.&lt;/p&gt;

&lt;p&gt;Hoje quero compartilhar com vocês os resultados do primeiro dia do primeiro SaaS que desenvolvi!&lt;/p&gt;

&lt;h3&gt;
  
  
  Contexto
&lt;/h3&gt;

&lt;p&gt;Criei a aplicação em um ritmo acelerado, movido tanto pela vontade de validar a ideia rapidamente quanto pela ansiedade de lançá-la. No entanto, essa pressa teve seu preço: &lt;strong&gt;um fucking bug em produção.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mas calma! O bug foi sério, mas não trouxe nenhum prejuízo — na verdade, foi o oposto. E é exatamente isso que vou compartilhar neste artigo.&lt;/p&gt;

&lt;p&gt;No dia &lt;strong&gt;05/02/2025&lt;/strong&gt;, lancei o SaaS em produção e fiz uma série de publicações em diversas redes sociais para anunciar sua disponibilidade.&lt;/p&gt;

&lt;p&gt;Caso queira entender detalhes técnicos e mais informações sobre o SaaS, acesse aqui: &lt;a href="https://dev.to/w1redl4in/zodiac-seu-mapa-astral-em-instantes-1d9m"&gt;https://dev.to/w1redl4in/zodiac-seu-mapa-astral-em-instantes-1d9m&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Resultados
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Acessos ao SaaS
&lt;/h4&gt;

&lt;p&gt;Dessa vez, foi um descuido de iniciante: esqueci de configurar o &lt;code&gt;&amp;lt;Analytics /&amp;gt;&lt;/code&gt; da &lt;code&gt;@vercel/analytics&lt;/code&gt; antes do lançamento. O resultado? Só percebi horas depois das publicações. Estimo que o número real de acessos tenha sido pelo menos 30% maior do que o registrado no dashboard da Vercel.&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%2Fxh748xyvkr8qwpg5jwuy.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%2Fxh748xyvkr8qwpg5jwuy.png" alt="Image description" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas vamos aos números: &lt;strong&gt;880~ visitantes únicos&lt;/strong&gt; e &lt;strong&gt;1000~ páginas carregadas&lt;/strong&gt; (essa métrica inclui múltimos acessos do mesmo usuário à mesma página). Fiquei impressionado com o alcance que consegui já no primeiro dia do meu primeiro SaaS!&lt;/p&gt;

&lt;h3&gt;
  
  
  Contas criadas
&lt;/h3&gt;

&lt;p&gt;No total, foram criadas 20 contas, além das 8 contas de teste já existentes—um resultado bem acima das minhas expectativas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pagamentos
&lt;/h3&gt;

&lt;p&gt;Foram gerados &lt;strong&gt;29 PIX&lt;/strong&gt; e &lt;strong&gt;2 foram pagos&lt;/strong&gt;. E é aqui que o problema começa: &lt;strong&gt;um dos PIX pago foi hackeado&lt;/strong&gt;. Isso mesmo! Cometi o erro de deixar o valor do PIX em um componente &lt;code&gt;"use client"&lt;/code&gt;, o que fez com que o código fonte ficasse acessível no navegador e facilmente manipulável pelo usuário.&lt;/p&gt;

&lt;h3&gt;
  
  
  Engajamento
&lt;/h3&gt;

&lt;p&gt;O maior retorno ao lançar o SaaS e divulgar as publicações foi, sem dúvida, o engajamento no Twitter. Em apenas um dia no ar, ganhei cerca de 200 seguidores e alcancei 200 mil impressões (entre comentários, curtidas e reposts).&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%2Fydsbo1yjratnqgero1n4.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%2Fydsbo1yjratnqgero1n4.png" alt="Image description" width="800" height="903"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Insights valiosos
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Seguir com o MVP&lt;/strong&gt;: Apesar de ter cometido erros ao lançar o SaaS sem testar todas as frentes ou planejar todas as abordagens, essa ainda me parece a melhor estratégia. Construir um SaaS desde o início com um código impecável e uma pirâmide completa de testes, mas sem nenhum alcance, simplesmente não compensa o tempo investido.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Priorize Interfaces Responsivas&lt;/strong&gt;: Segundo as métricas da Vercel, 74% dos usuários (aproximadamente 660 pessoas) acessaram o SaaS pelo celular. Embora eu já tenha o hábito de desenvolver interfaces responsivas, esse dado reforçou ainda mais a importância de garantir uma experiência fluida e otimizada para dispositivos móveis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configure Analytics antes do lançamento&lt;/strong&gt;: Isso é essencial para avaliar se o SaaS tem potencial para crescer ou se está caminhando para o fracasso. Ter dados desde o primeiro momento permite ajustes rápidos e decisões mais estratégicas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conheça a bolha dos seus usuários&lt;/strong&gt;: Publiquei o SaaS em várias redes sociais e cheguei a viralizar no Twitter, mas o retorno em pagamentos foi baixo. A maioria dos usuários eram desenvolvedores, mais curiosos sobre o projeto do que realmente interessados em adquirir o produto. Isso reforça a importância de entender o público-alvo e direcionar melhor a estratégia de monetização.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Reflexões e Próximos Passos
&lt;/h2&gt;

&lt;p&gt;No geral, foi uma experiência incrível! Eu esperava alcançar esses números apenas no meu quarto ou quinto SaaS, então atingir esse resultado logo no primeiro foi surpreendente. Para 2025, meu objetivo é lançar cerca de 10 SaaS, e essa etapa marcou o primeiro passo nessa jornada.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>saas</category>
      <category>nextjs</category>
      <category>react</category>
    </item>
    <item>
      <title>Zodiac – Seu Mapa Astral em Instantes ✨🔮</title>
      <dc:creator>Felipe Austriaco</dc:creator>
      <pubDate>Wed, 05 Feb 2025 21:58:30 +0000</pubDate>
      <link>https://dev.to/w1redl4in/zodiac-seu-mapa-astral-em-instantes-1d9m</link>
      <guid>https://dev.to/w1redl4in/zodiac-seu-mapa-astral-em-instantes-1d9m</guid>
      <description>&lt;p&gt;💫 Meu Primeiro SaaS em Produção!&lt;/p&gt;

&lt;p&gt;Fala, pessoal! Tudo certo?&lt;/p&gt;

&lt;p&gt;Quero compartilhar com vocês a experiência de desenvolver e lançar meu primeiro SaaS em produção. Sempre tive vontade de entrar nesse universo, mas só recentemente tomei coragem para dar o pontapé inicial.&lt;/p&gt;

&lt;p&gt;Tudo começou no excalidraw, onde rabisquei uma arquitetura simples para estruturar o projeto. Escolhi next.js pela familiaridade com react, supabase pelo ótimo custo-benefício e facilidade de implementação, react-query para gerenciar estados no client-side, shadcn + tailwind para a UI, clerk.js para autenticação e Mercado Pago para pagamentos via Pix.&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%2F6vlekkkx3j4yyd38k32q.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%2F6vlekkkx3j4yyd38k32q.png" alt="Image description" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Segui a filosofia do MVP e foquei em apenas uma feature: Gerar mapas astrais! ✨&lt;/p&gt;

&lt;p&gt;E QUE DESAFIO! 😵‍💫 Tentei várias abordagens, incluindo IAs do Hugging Face, mas nenhuma entregava a velocidade e consistência que eu precisava. No fim, optei pela biblioteca sweph, que realiza cálculos astrológicos complexos e gera os mapas com precisão. Foi um baita aprendizado entender esse universo!&lt;/p&gt;

&lt;p&gt;No final, deu certo! Agora, estou pensando em formas de divulgar o projeto para mais pessoas. Se tiverem dicas e/ou críticas, comentem aí! 😃💜&lt;/p&gt;

&lt;p&gt;Link do zodiac: &lt;a href="https://zodiac.felipe-austriaco.dev/" rel="noopener noreferrer"&gt;https://zodiac.felipe-austriaco.dev/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>nextjs</category>
      <category>saas</category>
      <category>react</category>
    </item>
    <item>
      <title>Meu primeiro ano como desenvolvedor</title>
      <dc:creator>Felipe Austriaco</dc:creator>
      <pubDate>Mon, 05 Apr 2021 01:29:39 +0000</pubDate>
      <link>https://dev.to/w1redl4in/undefined-i61</link>
      <guid>https://dev.to/w1redl4in/undefined-i61</guid>
      <description>&lt;p&gt;Bom, aqui estou, um ano após conseguir um &lt;strong&gt;estágio&lt;/strong&gt;, ser efetivado pra &lt;strong&gt;Júnior&lt;/strong&gt;, trancar a &lt;strong&gt;faculdade&lt;/strong&gt; e um mês depois ser promovido para &lt;strong&gt;“Pleno”&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O propósito deste artigo é melhorar minhas habilidades de escrita, me identificar com a plataforma para possíveis tutoriais no futuro, compartilhar experiências profissionais e me lembrar de tudo que já passei.&lt;/p&gt;

&lt;h1&gt;
  
  
  Vida antes de ser desenvolvedor
&lt;/h1&gt;

&lt;p&gt;Começando pelo ensino médio, acredito que repeti umas 2 ou 3 vezes, talvez por falta de motivação ou interesse, nesse período da minha vida eu não tinha expectativa alguma de ter uma vida profissional acima da média salarial brasileira (por volta dos R$ 1.800) e passava boa parte do dia jogando. Por incentivo de um amigo de infância que teve e tem bastante influência na minha vida, vulgo &lt;strong&gt;Luquinhas, o anão&lt;/strong&gt;, acabei ingressando em um curso técnico &lt;strong&gt;(ETEC — Técnico em Informática)&lt;/strong&gt;. Foi uma época de muita presença na minha vida, onde aprendi a lidar com diversos problemas que eu tinha/tenho, seja ignorando-os ou sendo mais forte do que eles. Em relação ao curso, com certeza eu aprendi uma coisa: &lt;strong&gt;Odeio programação!&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Como alguém poderia gostar de passar horas escrevendo linhas e linhas em inglês que no final do dia não tinha utilidade alguma?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Foi o que pensei. Partindo desse pensamento, terminei o curso técnico com a vontade de prestar um ensino superior público na área de TI, já que era o assunto que eu mais tinha conhecimento, só tinha uma condição: &lt;strong&gt;ser o mais distante possível de programação&lt;/strong&gt;. Acabei chegando na conclusão de cursar Redes, afinal, por quê não? quem nunca quis ser um hacker famoso?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fiz o vestibular e acabei passando, e por enfim prestando faculdade. Mas quem diria!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  1 ano de faculdade
&lt;/h1&gt;

&lt;p&gt;Eu não aguentava mais participar de aulas tediosas ou de professores que se sentiam ofendidos com perguntas nas quais eles não saberiam responder. 10 minutos de &lt;strong&gt;Google&lt;/strong&gt; era mais produtivo que um semestre &lt;strong&gt;inteiro!&lt;/strong&gt; Em contrapartida, eu precisava de dinheiro. Já estava com &lt;strong&gt;23 anos&lt;/strong&gt; e &lt;strong&gt;nunca tinha trabalhado na vida&lt;/strong&gt;. Nesse ponto tomei talvez a decisão mais importante da minha vida, sair da &lt;strong&gt;zona de conforto!&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Acabei enviando diversos currículos com o que eu tinha de conhecimento na época (Linux/Redes) e aconteceu o que eu menos queria, fui aceito para estagiar como programador!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lembro-me até hoje do primeiro dia, o Super-intendente da empresa me fez a seguinte pergunta:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Você tem mais conhecimentos de Java ou Ruby? pode escolher uma das duas para trabalhar.&lt;/p&gt;
&lt;/blockquote&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%2F8s4ii27yn5lhgggica0a.jpeg" 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%2F8s4ii27yn5lhgggica0a.jpeg" alt="Alt Text" width="353" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Optei por Ruby por conta de experiências traumáticas passadas com Java.&lt;/p&gt;

&lt;h1&gt;
  
  
  Sou desenvolvedor?
&lt;/h1&gt;

&lt;p&gt;Aqui começa o pesadelo, pelo menos era o que eu acreditava na época. Fui bombardeado com diversos conceitos e ferramentas do ecossistema de um desenvolvedor: &lt;strong&gt;Squads, Scrum, Sprint, JIRA, Back-End, Front-End, Frameworks, Ambientes, Cerimônias&lt;/strong&gt; (Essa era a pior parte). Meu time contemplava quase que o Scrum por completo, então tínhamos cerca de 4 ou 5 reuniões semanais e em cada uma delas eu tinha que defender ou apresentar algo do qual eu não fazia a mínima ideia!&lt;/p&gt;

&lt;p&gt;Até então eu já tinha trabalhado em equipe nos cursos e faculdades mas trabalhar com o conceito de Squad em uma empresa é totalmente diferente!&lt;/p&gt;

&lt;p&gt;Quando eu me comparava com o resto do meu time em questões de habilidades (&lt;strong&gt;Soft Skills&lt;/strong&gt; e &lt;strong&gt;Hard Skills&lt;/strong&gt;) parecia uma distância de conhecimento sem fim.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quantos cursos eles já fizeram?&lt;br&gt;
Quantas vezes eles já passaram por isso?&lt;br&gt;
Quantas vezes eles já erraram?&lt;br&gt;
Eu ainda tenho esse tempo para errar?&lt;br&gt;
Eu ainda tenho esse tempo para aprender?&lt;br&gt;
Eu sou capaz?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ser iniciante em um mundo como o dos desenvolvedores pode ser sufocante, é tanta informação, tantos meios diferentes de chegar no mesmo lugar, você com certeza precisa ser calmo e pensar a longo prazo.&lt;/p&gt;

&lt;p&gt;Depois de alguns meses eu consegui entender que não precisava ser bom em tudo, não tinha por quê. Com isso comecei a evoluir de acordo com o tempo e esforço, eu já não precisava pedir ajuda para resolver aquele conflito no &lt;strong&gt;Git&lt;/strong&gt;. &lt;strong&gt;Testes unitários&lt;/strong&gt; estavam finalmente entrando na minha cabeça. O fluxo das aplicações estavam ficando cada vez mais claros.&lt;/p&gt;

&lt;h1&gt;
  
  
  Será que sou desenvolvedor mesmo?
&lt;/h1&gt;

&lt;p&gt;Após desenvolver com Ruby On Rails por 5 meses, recebi a proposta de mudar de &lt;strong&gt;Squad&lt;/strong&gt;, era o que eu queria na época. Na minha visão Ruby estava morrendo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Um mês depois, fui encaixado em um Squad de JavaScript! ~hehe&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nesse momento, tive um grande choque de realidade em relação as tecnologias, estava tão acostumado com o modelo de Model, View e Controller que não conseguia imaginar como uma aplicação poderia funcionar sem isso.&lt;/p&gt;

&lt;p&gt;Comecei em Node JS, lá pela versão 10? não lembro. Minha principal dificuldade foi lidar com &lt;strong&gt;Promises&lt;/strong&gt;, não lembro como Ruby lidava com isso mas foi uma das coisas que mais estudei na vida. Nesse mês cheguei a ter uma rotina de &lt;strong&gt;13&lt;/strong&gt; á &lt;strong&gt;14&lt;/strong&gt; horas de trabalho + estudo (&lt;strong&gt;não da faculdade&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Percebi algumas características minha interessantes, eu só aprendo escrevendo. E por mais que eu empurre informações para o meu cérebro sem parar, não sou capaz de absorver tudo depois de algumas horas.&lt;/p&gt;

&lt;p&gt;Este Squad, vulgo Compromisso com o Cliente provavelmente será a melhor equipe com qual eu venha a trabalhar. Eu tinha suporte de todos os lados, feedbacks de todos os membros e mais importante, respeito de todos.&lt;/p&gt;

&lt;h1&gt;
  
  
  Talvez eu seja desenvolvedor mesmo…
&lt;/h1&gt;

&lt;p&gt;Nesse período eu já tinha sido efetivado como &lt;strong&gt;“Desenvolvedor”&lt;/strong&gt;, acredito que seja Jr. Depois de algum tempo desenvolvendo em Node migrei para o Front-End com React.JS, foi onde conheci uma das pessoas que mais me ajudou/ajuda na vida profissional. Praticamente me ensinou tudo o que eu sei de React hoje.&lt;/p&gt;

&lt;p&gt;A caminhada pra aprender React e de fato ser produtivo foi longa, cerca de 3 meses (&lt;strong&gt;Quando você vê isso todo dia da sua vida, pode ter certeza que 3 meses é muita coisa&lt;/strong&gt;)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tudo estava bom, eu tinha sido efetivado e reconhecido, estava aprendendo coisas novas muito rápido mas de repente…&lt;/p&gt;
&lt;/blockquote&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%2Fj1so3vvt0tj97m83ffal.jpeg" 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%2Fj1so3vvt0tj97m83ffal.jpeg" alt="Alt Text" width="700" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por conta da crise e da pandemia, boa parte do meu querido time Compromisso com o Cliente foi desligado da empresa.&lt;/p&gt;

&lt;p&gt;Foi um momento muito difícil, tive que assumir responsabilidades nas quais eu não soube lidar no começo. Mas o tempo e esforço dão um jeito em tudo.&lt;/p&gt;

&lt;h1&gt;
  
  
  Eu sou desenvolvedor!
&lt;/h1&gt;

&lt;p&gt;A pandemia só foi um gatilho para algo que eu estava planejando há muito tempo, trancar a &lt;strong&gt;faculdade&lt;/strong&gt;. Com isso, tive muito mais tempo para estudar e hoje participo de diversos projetos, todos atuando como &lt;strong&gt;React Developer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Aqui eu já tive muitas mudanças por conta das dificuldades que passei. Era apenas um garoto desenvolvendo Botões em uma Sprint e na outra Sprint tive que desenvolver e manter aplicações React, desde criação de telas até integração.&lt;/p&gt;

&lt;p&gt;Hoje estou desenvolvendo um banco digital WhiteLabel para minha empresa, a mesma empresa de quando eu era estagiário. O mesmo cara que era &lt;strong&gt;Jr.&lt;/strong&gt; um mês atrás! Pensar isso me dá arrepios mas ao mesmo tempo vejo como um desafio e mais espaço parar melhorar profissionalmente.&lt;/p&gt;

</description>
      <category>career</category>
      <category>motivation</category>
      <category>programming</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Criando seu próprio tema com styled-components</title>
      <dc:creator>Felipe Austriaco</dc:creator>
      <pubDate>Mon, 05 Apr 2021 01:18:28 +0000</pubDate>
      <link>https://dev.to/w1redl4in/criando-seu-proprio-tema-com-styled-components-1h10</link>
      <guid>https://dev.to/w1redl4in/criando-seu-proprio-tema-com-styled-components-1h10</guid>
      <description>&lt;h1&gt;
  
  
  O que é tema
&lt;/h1&gt;

&lt;p&gt;Tema são as cores, tamanhos de fontes, espaçamento entre elementos da aplicação e o que mais você quiser.&lt;/p&gt;

&lt;h1&gt;
  
  
  Porquê perder tempo com isso, não posso só aplicar tudo isso pelo css?
&lt;/h1&gt;

&lt;p&gt;Pode sim, o problema é que pode virar uma bola de neve. A cada componente novo você usa medidas diferentes para margins e paddings, cores mais claras ou escuras e tamanhos de fontes divergentes, fazendo com que a aplicação não tenha nenhum padrão de estilização.&lt;/p&gt;

&lt;h1&gt;
  
  
  Quais os pontos positivos ao usar um tema?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;A aplicação seguirá um padrão de cores, tamanhos e medidas.&lt;/li&gt;
&lt;li&gt;Menos CSS redundante, mantendo um código mais limpo.&lt;/li&gt;
&lt;li&gt;Alterações como cores, tamanho de fontes e etc são triviais, já que toda aplicação busca informações do tema.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Certo, então como crio um Tema?
&lt;/h1&gt;

&lt;p&gt;Bom, vamos lá então. Nesse artigo estamos usando styled-components e irei supor que você está usando Typescript (por favor, esteja :D) para ter o type-checking do nosso tema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criação do tema em si
&lt;/h2&gt;

&lt;p&gt;Podemos criar um arquivo chamado &lt;code&gt;theme.ts&lt;/code&gt; para definir nosso tema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export const theme = {
  colors: {
    primary: '#000000',
    secondary: '#FFFFFF',
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No mesmo arquivo exportaremos também um &lt;code&gt;type&lt;/code&gt; do nosso tema para ter o type-checking:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export type ITheme = typeof theme;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Type-checking do tema para o styled-components
&lt;/h2&gt;

&lt;p&gt;De acordo com a documentação do &lt;strong&gt;styled-components&lt;/strong&gt;, devemos extender a interface de Tema original com o nosso type, para isso precisaremos de um arquivo &lt;code&gt;.d.ts&lt;/code&gt;, no qual irá se chamar &lt;code&gt;styled.d.ts&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'styled-components';
import { ITheme } from './theme';

declare module 'styled-components' {
  export interface DefaultTheme extends ITheme {}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ThemeProvider, a parte mais fácil!
&lt;/h2&gt;

&lt;p&gt;Agora que já temos nosso tema criado e com typechecking, só precisamos fazer nossa aplicação inteira conhecer ele. o &lt;strong&gt;styled-components&lt;/strong&gt; faz isso através do componente &lt;code&gt;&amp;lt;ThemeProvider /&amp;gt;&lt;/code&gt; utilizando &lt;strong&gt;Context API&lt;/strong&gt; por debaixo dos panos.&lt;br&gt;
No nosso &lt;strong&gt;App.tsx&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { ThemeProvider} from 'styled-components';
import { theme } from '../theme.ts';

export default function App() {
 &amp;lt;ThemeProvider theme={theme}&amp;gt;
  ...resto da aplicação
 &amp;lt;/ThemeProvider&amp;gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Utilizando o tema
&lt;/h2&gt;

&lt;p&gt;Com o nosso tema configurado, conseguimos usá-lo em qualquer componente styled-components, exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; import styled from 'styled-components';

export const Container = styled.main`
  background: ${({ theme }) =&amp;gt; theme.colors.primary} // aqui vai ter typechecking!!
`;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>css</category>
      <category>braziliandevs</category>
      <category>html</category>
    </item>
    <item>
      <title>Flexbox</title>
      <dc:creator>Felipe Austriaco</dc:creator>
      <pubDate>Sun, 04 Apr 2021 22:01:09 +0000</pubDate>
      <link>https://dev.to/w1redl4in/display-flex-295f</link>
      <guid>https://dev.to/w1redl4in/display-flex-295f</guid>
      <description>&lt;h1&gt;
  
  
  O que é FlexBox
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;O CSS Flexible Box Layout, conhecido como Flexbox, é um modelo de layout da Web CSS3. Está no estágio de recomendação de candidatos (CR) do W3C. O layout flexível permite que os elementos responsivos dentro de um contêiner sejam organizados automaticamente, dependendo do tamanho da tela (ou dispositivo).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Como a própria Wikipedia diz, facilita nossa vida na hora de criar layouts, e como facilita... Criar layouts complexos com linhas e colunas parece brincadeira de criança com FlexBox.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como funciona o Flexbox
&lt;/h2&gt;

&lt;p&gt;Seu uso e conceito são bem simples, normalmente aplicamos o Flexbox em elementos que possuem filhos para ajustá-los da forma que queremos. Como assim?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div class="container"&amp;gt;
 &amp;lt;h1&amp;gt;Eu sou o filho 1&amp;lt;/h1&amp;gt;
 &amp;lt;h2&amp;gt;Eu sou o filho 2&amp;lt;/h2&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos dizer que a nossa div com a classe &lt;strong&gt;container&lt;/strong&gt; é a candidata perfeita para ser &lt;code&gt;display: flex&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Propriedades do Flexbox
&lt;/h2&gt;

&lt;p&gt;A partir do momento que definimos um elemento com &lt;code&gt;display: flex&lt;/code&gt;, podemos usar as propriedades &lt;code&gt;align-items&lt;/code&gt;, &lt;code&gt;justify-content&lt;/code&gt; e &lt;code&gt;flex-direction&lt;/code&gt;, além de outras.&lt;/p&gt;

&lt;h3&gt;
  
  
  flex-direction
&lt;/h3&gt;

&lt;p&gt;Por padrão a propriedade &lt;strong&gt;flex-direction&lt;/strong&gt; vem com o valor padrão de &lt;strong&gt;row&lt;/strong&gt;, isso significa que o posicionamento será sempre na horizontal. Podemos modifica-lo para &lt;strong&gt;flex-direction: column&lt;/strong&gt; que muda o comportamento para colunas, ou seja, na vertical. Isso influencia diretamente nas outras propriedades do Flexbox, caso o &lt;strong&gt;flex-direction&lt;/strong&gt; seja &lt;strong&gt;column&lt;/strong&gt;, &lt;strong&gt;align-items&lt;/strong&gt; e o &lt;strong&gt;justify-content&lt;/strong&gt; vão inverter as direções.&lt;/p&gt;

&lt;h3&gt;
  
  
  align-items
&lt;/h3&gt;

&lt;p&gt;A propriedade &lt;strong&gt;align-items&lt;/strong&gt; possui a função de alinhar os filhos na horizontal/vertical e tem como principais valores: &lt;code&gt;center&lt;/code&gt;, &lt;code&gt;flex-start&lt;/code&gt; e &lt;code&gt;flex-end&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;center&lt;/strong&gt; como o próprio nome diz, posiciona os elementos horizontalmente/verticalmente ao centro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;flex-start&lt;/strong&gt; posiciona os elementos horizontalmente/verticalmente ao inicio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;flex-end&lt;/strong&gt; posiciona os elementos horizontalmente/verticalmente no final.&lt;/p&gt;

&lt;h3&gt;
  
  
  justify-content
&lt;/h3&gt;

&lt;p&gt;A propriedade &lt;strong&gt;justify-content&lt;/strong&gt; possui a função de alinhar os filhos na horizontal/vertical e tem como principais valores os mesmo do &lt;strong&gt;align-items&lt;/strong&gt; com a adição de &lt;code&gt;space-between&lt;/code&gt; e &lt;code&gt;space-around&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;space-between&lt;/strong&gt; posiciona todos os elementos horizontalmente/verticalmente com o máximo de espaço entre eles&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;space-around&lt;/strong&gt; posiciona os elementos horizontalmente/verticalmente com o máximo de espaço &lt;strong&gt;ao redor&lt;/strong&gt; deles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agora um exemplo com Flexbox
&lt;/h2&gt;

&lt;p&gt;Vamos construir a barra de navegação do próprio Dev.to. Com apenas 3 linhas de CSS conseguimos ter o posicionamento idêntico, mostrando o poder do Flex box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;nav&amp;gt;
  &amp;lt;div&amp;gt;
    logo
    &amp;lt;input type="search"&amp;gt;
  &amp;lt;/div&amp;gt;

  &amp;lt;div&amp;gt;
    &amp;lt;button&amp;gt;Write a post&amp;lt;/button&amp;gt;
    &amp;lt;span&amp;gt;Icone 1&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;Icone 2&amp;lt;/span&amp;gt;
    &amp;lt;span&amp;gt;Imagem&amp;lt;/span&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/nav&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nav {
  display: flex;
  align-items: center;
  justify-content: space-around;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claro, estamos olhando apenas para o posicionamento dos elementos e não para a estilização.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resultado&lt;/strong&gt;&lt;br&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%2Fyb5dv6fijbc200sa3slt.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%2Fyb5dv6fijbc200sa3slt.png" alt="Alt Text" width="800" height="12"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>braziliandevs</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
