Tauri (TypeScript, React e Rust) - Minha Primeira Aplicação/Experiência!
VÍDEO DE APRESENTAÇÃO:
Introdução:
Vou compartilhar com vocês uma experiência bem massinha sobre um projeto que desenvolvi usando o framework Tauri, juntamente com TypeScript, React (frontend) e Rust (backend). Trata-se de uma calculadora de tempo de renderização em 3D de código aberto. O frontend foi desenvolvido com React (TypeScript) utilizando o Vite, enquanto os cálculos do backend são feitos em Rust. O projeto está licenciado sob a Licença MIT. Essa foi uma iniciativa prática para aprender como o framework funciona e também para iniciar meus estudos em Rust. É importante ressaltar que, como sou novo em Rust e esta foi minha primeira vez trabalhando com React e TypeScript, tudo neste projeto pode ser aprimorado.
Sobre o Tauri:
Antes de mergulharmos no projeto, vamos entender o que é o Tauri. O Tauri é uma ferramenta que auxilia os desenvolvedores a criarem aplicativos para as principais plataformas de desktop, utilizando praticamente qualquer framework frontend existente. O núcleo do Tauri é construído em Rust, e a CLI utiliza o Node.js, tornando o Tauri uma abordagem verdadeiramente poliglota para a criação e manutenção de ótimos aplicativos.
Fonte: https://tauri.app/about/intro/
O que é Rust:
Rust é uma linguagem de programação compilada multiparadigma desenvolvida pela Mozilla Research. Ela foi projetada para ser "segura, concorrente e prática". Ao contrário de outras linguagens seguras, Rust não utiliza um coletor de lixo. Além disso, possui suporte nativo ao WebAssembly.
Fonte: https://pt.wikipedia.org/wiki/Rust_(linguagem_de_programação)
Desafios e Experiência:
O desenvolvimento deste projeto foi um desafio, decidi investir meu tempo livre no estudo do Tauri, com o objetivo de migrar algumas aplicações que havia desenvolvido em C#, as quais rodavam apenas no Windows, para o macOS e também para o Linux. No entanto, não esperava que Rust me desafiasse tanto. É uma linguagem em que, quando você entende o motivo de algo ser feito de determinada maneira, é algo maravilhoso. No entanto, na prática, foi um pouco mais complicado devido ao fato de ser minha primeira experiência com uma linguagem de baixo nível, especialmente em relação ao entendimento de "ownership", até hoje cometo muitos erros, porém nos erros e acertos aos poucos vamos aprendendo.
Inicialmente, tentei criar o frontend deste projeto apenas com TypeScript e HTML, mas acabei desistindo após uma semana devido à dificuldade de escalabilidade do projeto. Foi então que comecei a estudar React, o que me deu esperança para continuar, tornando a reutilização de código mais viável e escalável.
No final, a experiência foi incrível e estou animado para continuar aprendendo mais sobre este projeto.
Download/Projeto:
Se você quiser conferir o projeto e o código-fonte, ele está disponível no GitHub como um projeto de código aberto:
https://github.com/Wanderson-Magalhaes/RTC_tauri_and_rust_beta
Pontos negativos e que infelizmente não consegui detalhar/descrever o que tudo o código está fazendo devido meu tempo estar bem corrido, e outro ponto é que as informações estão em inglês, pois meu perfil atraiu estranhamente um público de língua inglesa devido alguns vídeos que publiquei no meu canal no YouTube sobre GUI em Python, principalmente por causa do projeto "Modern GUI PyDracula", que já conta com quase 1500 estrelas. Infelizmente, devido às minhas limitações de tempo, não consigo mais oferecer suporte a esse projeto.
https://github.com/Wanderson-Magalhaes/Modern_GUI_PyDracula_PySide6_or_PyQt6
Além disso, você pode baixar os binários para macOS, Windows e Linux da calculadora de tempo de renderização no seguinte link:
https://blender-addons.gumroad.com/l/render_time_calculator
Espero que este post tenha sido útil para você compartilhando um pouco da minha experiência de como criei um programa cross-platform usando o framework Tauri, juntamente com TypeScript, React e Rust. Foi uma jornada desafiadora, mas recompensadora, e estou ansioso para explorar mais a fundo esse projeto no futuro.
Bons estudos a todos!
Wanderson.