Desenvolver uma aplicação nativa para desktop e para servidores sem usar electron(express + react)!
Olá!
Isso não é bem um post, mas um tutorial how to e explicando a motivação para tal produto.
Por quê
Tenho um projeto que pode ser rodado em qualquer os, mas com um diferencial, que pode ser subido facilmente em servidor sem ter que reinventar a roda, ou seja, com um build eu já abranjo todos esses sistemas, diferente do que seria com electron, por exemplo.
O que eu precisava
Um backend local, que interaja com as requisições do cliente localmente e um front end que pode ser facilmente executado, com uma linha de código ou um exe. Além disso, de algo que mirasse na experiencia do desenvolvedor(também), para tornar mais facil pra ele criar essa soluçao.
A Stack
Cheguei a conclusão que express e react seriam os melhores para tal, mas, como fazer eles interagirem juntos e de uma vez só?
Primeiro
Fiz uma aplicação react Vite em javascript padrão(que compilada retorna um html pra mim). O express então, disponibiliza isso em uma rota public, e tem suas rotas de api local para o usuario interagir. Para construir o executavel para diferentes os, mirei no Single executable applications, ferramenta nativa do node.
E para o fast refresh
Usando concurrently e --watch no vite build, consigo criar uma experiencia boa em desenvolvimento para o dev também, uma vez que a aplicação e o core
(backend) sao executados juntos localmente.
Para o user
Ao executar a aplicação, basta ele abrir o navegador na porta configurada(da pra fazer automaticamente pelo script também). O mesmo se o usuario quiser executar em servidor. Basta fazer donwload e executar, então, abrir o servidor na porta configurada.
algo como:
localhost:1234 para local
<ip_do_server>:1234 se for num servidor
Querem ver isso tudo na prática?
Se quiserem posso trazer um repo aqui pra vocês darem uma olhada em como isso tudo funciona, e discutirmos e melhorarmos a ideia.