Sthefano Schiavon

Desenvolvedor mobile Flutter

[email protected] · https://sthefano.dev · https://github.com/sthefanoss · https://www.linkedin.com/in/sthefanoss

Resumo

Sou desenvolvedor mobile. Trabalho com Flutter desde 2020, em sete projetos, cinco deles publicados nas lojas.

A maior parte desse trabalho é o cliente mobile, mas não todo ele: na Runsmith entrego funcionalidades de ponta a ponta no app Flutter, no painel Nuxt e na API NestJS.

Aprendi Flutter sozinho, e em 2020 isso virou meu primeiro emprego, enquanto eu ainda terminava a graduação em engenharia elétrica.

Também tenho três apps meus no Google Play e na App Store, o primeiro lançado em 2018, dois anos antes desse primeiro emprego.

No open source, escrevi e mantenho o flutter_multi_slider, e contribuo com o marionette_flutter, um pacote com 162 mil downloads por semana que permite a agentes de IA controlar um app Flutter para testá-lo e desenvolvê-lo.

Experiência Profissional

Engenheiro de Software Mobile Sênior, Runsmith

nov 2024 – Atual

Um app Flutter começado do zero e, depois, funcionalidades entregues de ponta a ponta no app, no painel Nuxt e na API NestJS.

Runsmith · nov 2024 – Atual · Android, iOS, Web

  • Comecei o app Flutter do zero com outro desenvolvedor e o desenvolvi até o cliente que técnicos e atletas usam no iOS e no Android.
  • Saí de mudanças eventuais no painel web e na API para entregar funcionalidades de ponta a ponta nos três repositórios. O Claude Code é o que tornou viável trabalhar fora do meu stack mais forte, e produzi mais aqui do que em qualquer função anterior.
  • Escrevi testes como parte do trabalho, e não depois dele: testes unitários e de widget no app Flutter, e testes junto das mudanças na API e no cliente web.

Engenheiro de Software Mobile, LiveFire

jul 2023 – nov 2024

Um app social para proprietários de armas de fogo já em andamento, tocado com outro desenvolvedor Flutter: tirado do Firebase para a API REST, com um editor de menções próprio no feed.

LiveFire · jul 2023 – nov 2024 · Android, iOS

  • Tirei o app, junto com o outro desenvolvedor Flutter, da leitura de dados direto do Firebase e o passei para a API REST. As duas vias tiveram que conviver por um período antes que as leituras no Firebase pudessem sair. O Firebase Auth permaneceu, e é ele que emite o token que a API verifica.
  • Escrevi um TextEditingController próprio para menções, depois de passar pelos pacotes disponíveis e não encontrar nenhum que servisse ao formato que o backend esperava. O backend guarda a menção como id de usuário, e não como handle, então o controller converte id em handle e handle em id enquanto o usuário digita, e mantém o intervalo de cada menção alinhado conforme o usuário edita o texto em volta.
  • Corrigi o mesmo post ficando dessincronizado entre feeds. Um post pode aparecer ao mesmo tempo no feed principal e no de um grupo, cada um em um controller separado com sua própria cópia, então um like dado em um não chegava ao outro. Criei um stream de eventos tipado que cada controller consumidor assina, de modo que uma atualização vale para todas as cópias do post.
  • Construí o gráfico de frequência de treino no perfil, no estilo do heatmap de commits do GitHub, junto com a versão dele preparada para compartilhar em um post.
  • Adicionei deep links e trabalhei na reprodução de vídeo e na visualização de transmissões ao vivo.
  • Fiz no backend em NestJS as mudanças de que o app precisava, em vez de repassá-las.

Engenheiro de Software Mobile, Teladoc Health

abr 2022 – jun 2023

Duas versões de um mesmo produto de telemedicina: o app distribuído por parceiros, levado à versão 2.0 e à migração para null safety, e o seu fork de consumo.

B2B App · 2022 – 2023 · Android, iOS

  • Entreguei a versão 2.0 junto a um desenvolvedor sênior: reformulação da interface e da experiência acomodando conteúdo novo, em sprints no Jira e publicada no Google Play e na App Store.
  • Propus e construí um fluxo inverso de agendamento — tipo de profissional, depois horário, depois profissional, no lugar de tipo, profissional, horário — e levei aos POs os endpoints que ele exigia, já que a API existente não respondia a pergunta nessa ordem.
  • Atualizei o Flutter e migrei a base de código para null safety por iniciativa própria, mantendo tudo em uma branch paralela; argumento de produtividade e análise estática no começo, virou argumento de publicação quando as lojas deixaram de aceitar builds da versão antiga e foi a branch atualizada que passou.
  • Mantive o app em um cliente Pusher não oficial depois de migrar para o oficial recém-lançado e descobrir que ele não conseguia desconectar e se inscrever em outro canal.
  • Trabalhei na fronteira dos method channels em plugins de terceiros, atualizando suas dependências nativas e, quando não havia correção upstream, suas implementações.
  • Corrigi defeitos de produção em um board separado do trabalho da 2.0, muitas vezes a partir de passos de reprodução que não reproduziam, entregando as correções como builds de hotfix em branches próprias e reduzindo a taxa de crashes.
  • Revisei código neste app e na versão B2C.

B2C App · 2022 – 2023 · Android, iOS

  • Atualizei componentes de interface e corrigi defeitos de produção na versão de consumo, em períodos curtos ao lado do trabalho na versão B2B.
  • Tratei um defeito encontrado aqui como defeito também da versão B2B: as duas vinham do mesmo código, então, quando o mesmo bug estava lá, eu mesmo abria a tarefa na versão B2B e implementava a correção também, em vez de fechar apenas o chamado que tinha recebido.

Engenheiro de Software Mobile, Atlas Technologies

abr 2020 – abr 2022

Três produtos em dois anos: um app de chat herdado, um feed de vídeos curtos feito sozinho e uma plataforma de chat reconstruída do zero e publicada na Play Store.

Fatal Chat · 2020 · Android, Web

  • Um de dois desenvolvedores em um app de chat Flutter já no ar: notificações push, mensagens por socket, camada REST com Dio, autenticação, deep links e upload de arquivos no chat e no perfil.
  • Entreguei uma única base de código para Android e navegador enquanto o Flutter web ainda estava em beta, rastreando diferenças de comportamento e trocando bibliotecas que se sustentassem nos dois lados, em vez de bifurcar para a web.
  • Trabalhei em sprints a partir de boards no Figma com o PO, o time de backend e a designer, revisando código com o outro desenvolvedor.

Fatal Share · 2021 · Android

  • Único desenvolvedor Flutter em um feed de vídeos curtos criado do zero, trazendo vídeos e imagens do site principal da empresa para uma rolagem infinita sem login.
  • Gerenciei os controllers de vídeo manualmente, mantendo uma janela pequena de controllers inicializados em torno do clipe visível, limitada pelo engasgo na reprodução de um lado e pela memória de aparelhos fracos do outro.
  • Filtrei por instalação o conteúdo já visto usando armazenamento local, e passei a propor interface de volta aos designers, incluindo animações personalizadas de posição e cor.

Deal Talk · 2021 – 2022 · Android, iOS, Web

  • Reconstruí o produto de chat do zero para Android, iOS e web a partir de uma base de código Flutter; chegou à Google Play e entrou no ar em algumas cidades-piloto com usuários reais.
  • Conduzi a entrevista técnica para a contratação Flutter, analisando cerca de dez currículos e entrevistando dois, e revisei código com o desenvolvedor contratado.
  • Migrei o roteamento web para o Navigator 2.0 para navegação por URL, e validei as entregas separadamente em navegadores Android, de iPhone e de desktop, identificando a ausência de notificações push em navegadores iOS e a queda de sockets em segundo plano.
  • Corrigi a autenticação na camada Socket.IO do backend, movendo-a para o middleware de handshake para que clientes não autorizados sejam recusados antes de a conexão ser estabelecida, e o transporte para wss://.

Competências

Flutter · Dart · GetX · Dio · Apple Health · Health Connect · Google Maps · fl_chart · flutter_test · mocktail · fake_async · NestJS · TypeScript · Node.js · MongoDB · Redis · BullMQ · Firebase Admin · OpenAPI · Fly.io · Nuxt 3 · Vue 3 · Pinia · Tailwind CSS · DaisyUI · REST · Algolia · api.video Live Stream · video_player · Firebase Cloud Storage · image_picker · Geolocator · Firebase Auth · Firebase Crashlytics · Firebase Analytics · Firebase Cloud Messaging · Firebase Remote Config · Firebase Dynamic Links · Stripe · Mux · Pusher · Provider · built_value · build_runner · Method channels · OpenTok (Vonage Video) · WebRTC · OneSignal · freezed · Flutter Web · WebSockets · Push Notifications · Deep links · shared_preferences · cached_network_image · File uploads · Video playback · Navigator 2.0 · Socket.IO

Apps Pessoais

Open Source